public static async Task PublishUserEmailChangedIntegrationEventAsync(this IServiceBusPublisher publisher, User user) { var integrationEvent = new UserEmailChangedIntegrationEvent { UserId = user.Id.ToString(), Email = new EmailDto { Address = user.Email, Verified = user.EmailConfirmed } }; await publisher.PublishAsync(integrationEvent); }
public async Task HandleAsync_WhenUserEmailChangedIntegrationEventIsValid_ShouldBeCompletedTask() { // Arrange var userId = new UserId(); var user = new User(userId, "*****@*****.**"); var mockLogger = new MockLogger <UserEmailChangedIntegrationEventHandler>(); TestMock.UserService.Setup(userService => userService.UserExistsAsync(It.IsAny <UserId>())).ReturnsAsync(true).Verifiable(); TestMock.UserService.Setup(userService => userService.FindUserAsync(It.IsAny <UserId>())).ReturnsAsync(user).Verifiable(); TestMock.UserService.Setup(userService => userService.UpdateUserAsync(It.IsAny <User>(), It.IsAny <string>())) .ReturnsAsync(new DomainValidationResult <User>()) .Verifiable(); TestMock.UserService.Setup(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>())) .Returns(Task.CompletedTask) .Verifiable(); var handler = new UserEmailChangedIntegrationEventHandler(TestMock.UserService.Object, mockLogger.Object, TestMock.SendgridOptions.Object); var integrationEvent = new UserEmailChangedIntegrationEvent { Email = new EmailDto { Address = "*****@*****.**", Verified = true }, UserId = userId }; // Act await handler.HandleAsync(integrationEvent); // Assert TestMock.UserService.Verify(userService => userService.UserExistsAsync(It.IsAny <UserId>()), Times.Once); TestMock.UserService.Verify(userService => userService.FindUserAsync(It.IsAny <UserId>()), Times.Once); TestMock.UserService.Verify(userService => userService.UpdateUserAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Once); TestMock.UserService.Verify(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>()), Times.Once); mockLogger.Verify(Times.Never()); }