public async Task PaymentCanFail()
        {
            var bankService = new FakeAquiringBankService();
            var payment     = PaymentRequestBuilder.RequestToBeRejected();

            var result = await bankService.ProcessPayment(payment);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Success, Is.False);
            Assert.That(result.TransactionId, Is.Not.EqualTo(Guid.Empty));
        }
        public async Task CanProcessPayment()
        {
            var bankService = new FakeAquiringBankService();
            var payment     = PaymentRequestBuilder.ValidPaymentRequest();

            var result = await bankService.ProcessPayment(payment);

            Assert.That(result, Is.Not.Null);
            Assert.That(result.Success, Is.True);
            Assert.That(result.TransactionId, Is.Not.EqualTo(Guid.Empty));
        }
        public async Task TwoPaymentsHaveDifferentIds()
        {
            var bankService = new FakeAquiringBankService();
            var payment1    = PaymentRequestBuilder.ValidPaymentRequest();
            var payment2    = PaymentRequestBuilder.ValidPaymentRequest();

            payment2.Amount     = 120.0m;
            payment2.NameOnCard = "A.N. Other";

            var result1 = await bankService.ProcessPayment(payment1);

            var result2 = await bankService.ProcessPayment(payment2);

            Assert.That(result1.TransactionId, Is.Not.EqualTo(result2.TransactionId));
        }