Exemple #1
0
        public void Fail_No_Owner()
        {
            var request   = new GetPaymentDetailsRequest();
            var validator = new GetPaymentDetailsValidator();
            var failures  = validator.ShouldHaveValidationErrorFor(r => r.Owner, request);

            Assert.AreEqual(1, failures.Count());
            Assert.AreEqual("Owner required", failures.First().ErrorMessage);
        }
Exemple #2
0
        public void Pass_Has_Payment_Id()
        {
            var request = new GetPaymentDetailsRequest
            {
                PaymentId = 1
            };
            var validator = new GetPaymentDetailsValidator();

            validator.ShouldNotHaveValidationErrorFor(r => r.PaymentId, request);
        }
Exemple #3
0
        public void Pass_Has_Owner()
        {
            var request = new GetPaymentDetailsRequest
            {
                Owner = "owner"
            };

            var validator = new GetPaymentDetailsValidator();

            validator.ShouldNotHaveValidationErrorFor(r => r.Owner, request);
        }
        public async Task <List <PaymentDetailDto> > Handle(GetPaymentDetailsRequest request, CancellationToken cancellationToken)
        {
            var person = await _splitThatBillContext.People
                         .Include(i => i.PaymentDetails)
                         .FirstOrDefaultAsync(p => p.Id == request.PersonId);

            if (null == person)
            {
                throw new NullReferenceException("The person does not exist");
            }

            var personToReturn = _mapper.Map <PersonDto>(person);

            return(personToReturn.PaymentDetails);
        }
Exemple #5
0
        public async Task Returns_Error_Response_If_No_Data_Found_For_Id()
        {
            var request = new GetPaymentDetailsRequest
            {
                PaymentId = 1
            };

            using var context = Setup.CreateContext();
            var handler = new GetPaymentDetailsHandler(_logger, context);


            var result = (await handler.Handle(request, CancellationToken.None)).ErrorOrDefault;

            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
        }
        // Mock Get Payment Details
        public override Task <GetPaymentDetailsReply> GetPaymentDetails(GetPaymentDetailsRequest request, ServerCallContext context)
        {
            var trackingId = Guid.NewGuid().ToString();

            _logger.LogInformation("---------------------------------------");
            _logger.LogInformation($"Get Payment Details {trackingId}");
            _logger.LogInformation("---------------------------------------");

            return(Task.FromResult(new GetPaymentDetailsReply
            {
                TrackingId = trackingId,
                PaymentMethod = "VISA",
                Reference = Guid.NewGuid().ToString(),
                PaymentStatus = "COMPLETED"
            }));
        }
Exemple #7
0
        public async Task Returns_Details_In_DTO()
        {
            const int     PAYMENT_ID     = 1;
            const string  CARD_NUMBER    = "1234";
            const string  CVV            = "123";
            const string  CURRENCY       = "GBP";
            const decimal AMOUNT         = .1m;
            const string  PAYMENT_RESULT = "Success";
            const string  OWNER          = "owner";
            var           EXPIRY         = new DateTime(2021, 01, 01);

            var request = new GetPaymentDetailsRequest
            {
                PaymentId = PAYMENT_ID,
                Owner     = OWNER
            };

            using var context = Setup.CreateContext();

            context.ProcessedPayments.Add(new ProcessedPayment
            {
                Id            = PAYMENT_ID,
                CardNumber    = CARD_NUMBER,
                Expiry        = EXPIRY,
                Currency      = CURRENCY,
                Amount        = AMOUNT,
                CVV           = CVV,
                PaymentResult = PAYMENT_RESULT,
                Owner         = OWNER
            });

            context.SaveChanges();

            var handler = new GetPaymentDetailsHandler(_logger, context);
            var result  = (await handler.Handle(request, CancellationToken.None)).SuccessOrDefault;

            Assert.AreEqual(PAYMENT_RESULT, result.PaymentResult);
            Assert.AreEqual(CARD_NUMBER, result.CardNumber);
            Assert.AreEqual(CVV, result.CVV);
            Assert.AreEqual(CURRENCY, result.Currency);
            Assert.AreEqual(AMOUNT, result.Amount);

            Assert.AreEqual(EXPIRY.Year, result.Expiry.Year);
            Assert.AreEqual(EXPIRY.Month, result.Expiry.Month);
        }
Exemple #8
0
        public async Task <IActionResult> GetPaymentDetails([FromBody] GetPaymentDetailsRequest paymentDetailsRequest)
        {
            _logger.LogInformation($"GetPaymentDetails requested");

            var res = await _paymentRepo.GetPaymentEntry(paymentDetailsRequest.PaymentIdentifier);

            if (res.Success)
            {
                if (res.PaymentEntry == null)
                {
                    return(NotFound());
                }
                else
                {
                    return(Ok(res.PaymentEntry.ConvertToPaymentDetails()));
                }
            }
            else
            {
                throw new Exception("Unable to fetch data.");
            }
        }
Exemple #9
0
        public async Task Returns_Error_Response_If_No_Data_Found_For_Owner()
        {
            const int     PAYMENT_ID     = 1;
            const string  CARD_NUMBER    = "1234";
            const string  CVV            = "123";
            const string  CURRENCY       = "GBP";
            const decimal AMOUNT         = .1m;
            const string  PAYMENT_RESULT = "Success";
            const string  OWNER          = "owner";
            var           EXPIRY         = new DateTime(2021, 01, 01);

            var request = new GetPaymentDetailsRequest
            {
                PaymentId = PAYMENT_ID,
                Owner     = OWNER
            };

            using var context = Setup.CreateContext();

            context.ProcessedPayments.Add(new ProcessedPayment
            {
                Id            = PAYMENT_ID,
                CardNumber    = CARD_NUMBER,
                Expiry        = EXPIRY,
                Currency      = CURRENCY,
                Amount        = AMOUNT,
                CVV           = CVV,
                PaymentResult = PAYMENT_RESULT,
                Owner         = "Different Owner"
            });

            context.SaveChanges();

            var handler = new GetPaymentDetailsHandler(_logger, context);

            var result = (await handler.Handle(request, CancellationToken.None)).ErrorOrDefault;

            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
        }