예제 #1
0
        public async Task ReturnPaymentResult_GivenValidPaymentRequest()
        {
            // Arrange
            IPaymentRequestDto requestPayment = new CompletedPaymentDto()
            {
                CardNumber   = "4658582263620043",
                ExpiryDate   = "0824",
                Amount       = 10m,
                CurrencyCode = "GBP",
                Ccv          = "001"
            };

            IPaymentResponseDto expectedPaymentResponse = new CompletedPaymentDto()
            {
                PaymentId    = "AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE",
                IsSuccessful = true
            };

            // Act
            var actualPaymentResponse = await _sut.ProcessPaymentAsync(requestPayment, CancellationToken.None);

            // Assert
            Assert.That(actualPaymentResponse, Is.Not.Null);
            Assert.That(actualPaymentResponse.PaymentId, Is.Not.Empty);
        }
        public void ReturnPaymentDetails_GivenPaymentExits_WhenCallingGetPayment()
        {
            // Arrange
            var paymentId = "ExistentPaymentId";
            var paymentServiceResponse = new CompletedPaymentDto()
            {
                CardNumber   = "4658582263620043",
                ExpiryDate   = "0824",
                Amount       = 10m,
                CurrencyCode = "GBP",
                Ccv          = "001",
                PaymentId    = "AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE",
                IsSuccessful = true
            };

            A.CallTo(() => _fakePaymentService.RetrievePayment(paymentId)).Returns(paymentServiceResponse);
            var expectedPaymentResponse = new ProcessedPaymentResponseV1()
            {
                CardNumber   = "4658582263620043",
                ExpiryDate   = "0824",
                Amount       = 10m,
                CurrencyCode = "GBP",
                Ccv          = "001",
                PaymentId    = "AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE",
                IsSuccessful = true
            };

            // Act
            var actualResponse = _sut.GetPayment(paymentId);

            // Assert
            actualResponse.Result.Should().BeOfType <OkObjectResult>();
            ((ObjectResult)actualResponse.Result).Value.Should().BeEquivalentTo(expectedPaymentResponse);
        }
예제 #3
0
        public async Task <IPaymentResponseDto> ProcessPaymentAsync(IPaymentRequestDto paymentRequest, CancellationToken cancellationToken)
        {
            var paymentResult = await _acquiringBankProvider.ProcessPaymentAsync(paymentRequest, cancellationToken);

            var completedPaymentDto = new CompletedPaymentDto(paymentRequest, paymentResult);

            _paymentRepository.SavePayment(completedPaymentDto);
            return(paymentResult);
        }
예제 #4
0
        public void ReturnMaskedCardNumber_GivenValidCardNumber(string inputCardNumber, string expectedCardNumber)
        {
            // Arrange
            var sut = new CompletedPaymentDto {
                CardNumber = inputCardNumber
            };

            // Act
            var actualCardNumber = sut.GetMaskedCardNumber();

            // Assert
            actualCardNumber.Should().Be(expectedCardNumber);
        }
예제 #5
0
        public async Task ReturnValidPaymentResponse_GivenSuccessfulApiResponse()
        {
            // Arrange
            IPaymentResponseDto expectedPaymentResponse = new CompletedPaymentDto()
            {
                PaymentId    = "AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE",
                IsSuccessful = true
            };

            // Act
            var actualPaymentResponse = await _sut.ProcessPaymentAsync(SamplePaymentRequest, CancellationToken.None);

            // Assert
            actualPaymentResponse.Should().BeEquivalentTo(expectedPaymentResponse);
        }