public void CreateProcessedPayment_WithValidParameters_CorrectlyMapsValues()
        {
            var unprocessedPayment = new UnprocessedPayment
            {
                CardNumber      = "1111",
                CardCvv         = 111,
                Currency        = Currency.GBP,
                CardExpiryMonth = 2,
                CardExpiryYear  = 2020,
                Amount          = 12,
                User            = new User(),
                UserId          = "1",
                CreatedAt       = DateTime.Now,
                Id = "1"
            };

            var acquiringBankResponse = new FakeAcquiringBankResponse
            {
                Success   = true,
                PaymentId = "testid"
            };

            var result = _paymentsService.CreateProcessedPayment(unprocessedPayment, acquiringBankResponse);

            Assert.Equal(unprocessedPayment.Amount, result.Amount);
            Assert.Equal(unprocessedPayment.Currency, result.Currency);
            Assert.Equal(unprocessedPayment.Id, result.Id);
            Assert.Equal(unprocessedPayment.CardCvv, result.CardCvv);
            Assert.Equal(unprocessedPayment.CardNumber, result.CardNumber);
            Assert.Equal(unprocessedPayment.CreatedAt, result.CreatedAt);
            Assert.Equal(unprocessedPayment.UserId, result.UserId);
            Assert.Equal(unprocessedPayment.CardExpiryMonth, result.CardExpiryMonth);
            Assert.Equal(unprocessedPayment.CardExpiryYear, result.CardExpiryYear);
            Assert.True(unprocessedPayment.User.Equals(result.User));
        }
        public void CreateProcessedPayment_WithValidAcquiringBankResponse_ReturnsCorrectResponse()
        {
            var unprocessedPayment    = new UnprocessedPayment();
            var acquiringBankResponse = new FakeAcquiringBankResponse
            {
                Success   = true,
                PaymentId = "testid"
            };

            var result = _paymentsService.CreateProcessedPayment(unprocessedPayment, acquiringBankResponse);

            Assert.Equal(acquiringBankResponse.Success, result.Success);
            Assert.Equal(acquiringBankResponse.PaymentId, result.AcquiringBankPaymentId);
        }