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 PaymentCanBeRejected()
        {
            var service = BuildPaymentService();
            var request = PaymentRequestBuilder.RequestToBeRejected();

            var response = await service.ProcessPayment(request);

            Assert.That(response.Status, Is.EqualTo(PaymentStatus.Rejected));
            Assert.That(response.Id, Is.Not.EqualTo(Guid.Empty));
            Assert.That(response.BankTransactionId, Is.Not.EqualTo(Guid.Empty));
        }
        public async Task RejectedPaymentReturnsDataFromRepository()
        {
            var service = BuildPaymentService();

            var request  = PaymentRequestBuilder.RequestToBeRejected();
            var response = await service.ProcessPayment(request);

            var payment = service.GetPaymentById(response.Id);

            Assert.That(payment, Is.Not.Null);
            Assert.That(payment !.Status, Is.EqualTo(PaymentStatus.Rejected));
        }