示例#1
0
        public async Task ChangeOfChargesTransactionHandler_WhenCalled_ShouldCallPublisher(
            [NotNull][Frozen] Mock <ILocalEventPublisher> localEventPublisher,
            [NotNull] ChangeOfChargesTransactionHandler sut)
        {
            // Arrange
            var transaction = new ChangeOfChargesTransactionBuilder().Build();

            // Act
            await sut.HandleAsync(transaction).ConfigureAwait(false);

            // Assert
            localEventPublisher.Verify(x => x.PublishAsync(It.Is <ChargeTransactionReceived>(localEvent =>
                                                                                             localEvent.Transaction == transaction && localEvent.CorrelationId == transaction.CorrelationId)));
        }
        public async Task HandleAsync_WhenCalledWithMultipleTransactions_ShouldCallMultipleTimes(
            [NotNull][Frozen] Mock <IChangeOfChargesTransactionHandler> changeOfChargesTransactionHandler,
            [NotNull] ChangeOfChargesMessageHandler sut)
        {
            // Arrange
            var transactionBuilder     = new ChangeOfChargesTransactionBuilder();
            var changeOfChargesMessage = new ChangeOfChargesMessageBuilder()
                                         .WithTransaction(transactionBuilder.Build())
                                         .WithTransaction(transactionBuilder.Build())
                                         .WithTransaction(transactionBuilder.Build())
                                         .Build();

            // Act
            var response = await sut.HandleAsync(changeOfChargesMessage).ConfigureAwait(false);

            // Assert
            changeOfChargesTransactionHandler
            .Verify(v => v.HandleAsync(It.IsAny <ChangeOfChargesTransaction>()), Times.Exactly(3));
            response.IsSucceeded.Should().BeTrue();
        }