예제 #1
0
        public async Task ProcessTransactionAsync_ThrowsException_ReturnsDefault()
        {
            // Arrange
            var bankClientRequest = new BankClientRequest
            {
                Amount       = 1000,
                CardNumber   = "1234567890123456",
                ExpiryMonth  = 12,
                ExpiryYear   = 2020,
                SecurityCode = 123
            };

            this.httpClientFactoryMock
            .Setup(s => s.CreateClient(It.IsAny <string>()))
            .Throws(new Exception());

            // Act
            var bankResult = await this.target.ProcessTransactionAsync(bankClientRequest);

            // Assert
            Assert.Null(bankResult);

            this.httpClientFactoryMock
            .Verify(v => v.CreateClient(It.IsAny <string>()), Times.Once);
            this.loggerMock
            .Verify(v => v.Log(
                        It.Is <LogLevel>(l => l == LogLevel.Error),
                        It.IsAny <EventId>(),
                        It.Is <It.IsAnyType>((v, t) => v.ToString().Equals("Error while processing bank transaction.")),
                        It.IsAny <Exception>(),
                        It.Is <Func <It.IsAnyType, Exception, string> >((v, t) => true)), Times.Once);
        }
예제 #2
0
        public async Task ProcessTransactionAsync_HappyJourney_ReturnsTransaction()
        {
            // Arrange
            var bankClientRequest = new BankClientRequest
            {
                Amount       = 1000,
                CardNumber   = "1234567890123456",
                ExpiryMonth  = 12,
                ExpiryYear   = 2020,
                SecurityCode = 123
            };

            // Act
            var bankResult = await this.target.ProcessTransactionAsync(bankClientRequest);

            // Assert
            Assert.NotNull(bankResult);
            Assert.Equal(new Guid("65a83e69-6741-4970-ab7c-433beb3837cb"), bankResult.TransactionId);

            this.httpClientFactoryMock
            .Verify(v => v.CreateClient(It.IsAny <string>()), Times.Once);
        }