Exemplo n.º 1
0
        public async Task HandleAsync_WhenUserDepositFailedIntegrationEventIsValid_ShouldBeCompletedTask()
        {
            // Arrange
            TestMock.UserService.Setup(userService => userService.SendEmailAsync(It.IsAny <UserId>(), It.IsAny <string>(), It.IsAny <object>()))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var handler = new UserDepositFailedIntegrationEventHandler(TestMock.UserService.Object, TestMock.SendgridOptions.Object);

            var integrationEvent = new UserDepositFailedIntegrationEvent
            {
                Transaction = new TransactionDto
                {
                    Currency = new CurrencyDto
                    {
                        Type   = EnumCurrencyType.Money,
                        Amount = Money.Fifty.Amount
                    },
                    Description = "test",
                    Id          = new TransactionId(),
                    Status      = EnumTransactionStatus.Failed,
                    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);
        }
Exemplo n.º 2
0
        public static async Task PublishUserDepositFailedIntegrationEventAsync(this IServiceBusPublisher publisher, UserId userId, TransactionDto transaction)
        {
            var integrationEvent = new UserDepositFailedIntegrationEvent
            {
                UserId      = userId,
                Transaction = transaction
            };

            await publisher.PublishAsync(integrationEvent);
        }