public async Task HandleAsync_Should_Store_DomainEvent() { var domainEvent = new UserAnnouncementPreferenceLimitChangedDomainEvent(Guid.NewGuid(), Guid.NewGuid(), 1); _domainEventStoreMock.Setup(x => x.Store(It.IsAny <IDomainEvent>())).Verifiable(); Func <Task> result = async() => await _domainEventHandler.HandleAsync(domainEvent); await result.Should().NotThrowAsync <Exception>(); _domainEventStoreMock.Verify(x => x.Store(It.Is <IDomainEvent>(e => e.GetType() == typeof(UserAnnouncementPreferenceLimitChangedDomainEvent)))); }
public async Task RevertUserAsync_Should_Revert_User_State() { var user = User.Builder() .SetId(Guid.NewGuid()) .SetEmail("*****@*****.**") .SetServiceActive(false) .SetAnnouncementPreferenceLimit(10) .SetAnnouncementSendingFrequency(AnnouncementSendingFrequencyEnumeration.EveryHour) .SetPicture("UrlToPicture") .Build(); var userCreatedDomainEvent = new UserCreatedDomainEvent(user.Id, Guid.NewGuid(), user.Email, user.Picture, DefaultUserSettings.ServiceActive, DefaultUserSettings.AnnouncementPreferenceLimit, DefaultUserSettings.AnnouncementSendingFrequency); var userAnnouncementPreferenceLimitChangedDomainEvent = new UserAnnouncementPreferenceLimitChangedDomainEvent(user.Id, Guid.NewGuid(), 5); var domainEvents = new List <IDomainEvent> { userCreatedDomainEvent, userAnnouncementPreferenceLimitChangedDomainEvent }; var getUserResult = GetResult <User> .Ok(user); var expectedUser = User.Builder() .SetId(user.Id) .SetEmail(user.Email) .SetServiceActive(userCreatedDomainEvent.ServiceActive) .SetAnnouncementPreferenceLimit(userAnnouncementPreferenceLimitChangedDomainEvent .AnnouncementPreferenceLimit) .SetAnnouncementSendingFrequency(userCreatedDomainEvent.AnnouncementSendingFrequency) .SetPicture(userCreatedDomainEvent.Picture) .Build(); _domainEventStoreMock.Setup(x => x.FindAllAsync(It.IsAny <Guid>())).ReturnsAsync(domainEvents); _userGetterServiceMock.Setup(x => x.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(getUserResult); _userRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <User>())).Returns(Task.CompletedTask).Verifiable(); Func <Task> result = async() => await _service.RevertUserAsync(user.Id, Guid.NewGuid()); await result.Should().NotThrowAsync <Exception>(); _userRepositoryMock.Verify(x => x.UpdateAsync(It.Is <User>(u => u.Id == expectedUser.Id && u.Email.Equals(expectedUser.Email) && u.Picture == expectedUser.Picture && u.ServiceActive == expectedUser.ServiceActive && u.AnnouncementPreferenceLimit == expectedUser.AnnouncementPreferenceLimit && Equals(u.AnnouncementSendingFrequency, expectedUser.AnnouncementSendingFrequency)))); }