public async Task HandleAsync_WhenUserDepositSucceededIntegrationEventIsValid_ShouldBeCompletedTask() { // Arrange TestMock.UserService.Setup(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>())) .Returns(Task.CompletedTask) .Verifiable(); var handler = new UserDepositSucceededIntegrationEventHandler(TestMock.UserService.Object, TestMock.SendgridOptions.Object); var integrationEvent = new UserDepositSucceededIntegrationEvent { Transaction = new TransactionDto { Currency = new CurrencyDto { Type = EnumCurrencyType.Money, Amount = Money.Fifty.Amount }, Description = "test", Id = new TransactionId(), Status = EnumTransactionStatus.Succeeded, Timestamp = DateTime.UtcNow.ToTimestamp(), Type = EnumTransactionType.Deposit }, UserId = new UserId() }; // Act await handler.HandleAsync(integrationEvent); // Assert TestMock.UserService.Verify(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>()), Times.Once); }
public static async Task PublishUserDepositSucceededIntegrationEventAsync( this IServiceBusPublisher publisher, UserId userId, TransactionDto transaction ) { var integrationEvent = new UserDepositSucceededIntegrationEvent { UserId = userId, Transaction = transaction }; await publisher.PublishAsync(integrationEvent); }