コード例 #1
0
        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))));
        }
コード例 #2
0
        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))));
        }