mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-02-09 22:51:12 +00:00
66 - Extracting the Failure Case
This commit is contained in:
@@ -15,19 +15,6 @@ class FakePaymentGatewayTest extends TestCase
|
|||||||
return new FakePaymentGateway;
|
return new FakePaymentGateway;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @test */
|
|
||||||
function charges_with_an_invalid_payment_token_fail()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$paymentGateway = new FakePaymentGateway;
|
|
||||||
$paymentGateway->charge(2500, 'invalid-payment-token');
|
|
||||||
} catch (PaymentFailedException $e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->fail();
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @test */
|
/** @test */
|
||||||
function running_a_hook_before_the_first_charge()
|
function running_a_hook_before_the_first_charge()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Billing\PaymentFailedException;
|
||||||
|
|
||||||
trait PaymentGatewayContractTests
|
trait PaymentGatewayContractTests
|
||||||
{
|
{
|
||||||
abstract protected function getPaymentGateway();
|
abstract protected function getPaymentGateway();
|
||||||
@@ -17,6 +19,24 @@ trait PaymentGatewayContractTests
|
|||||||
$this->assertEquals(2500, $newCharges->sum());
|
$this->assertEquals(2500, $newCharges->sum());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
function charges_with_an_invalid_payment_token_fail()
|
||||||
|
{
|
||||||
|
$paymentGateway = $this->getPaymentGateway();
|
||||||
|
|
||||||
|
$newCharges = $paymentGateway->newChargesDuring(function ($paymentGateway) {
|
||||||
|
try {
|
||||||
|
$paymentGateway->charge(2500, 'invalid-payment-token');
|
||||||
|
} catch (PaymentFailedException $e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->fail("Charging with an invalid payment token did not throw a PaymentFailedException.");
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->assertCount(0, $newCharges);
|
||||||
|
}
|
||||||
|
|
||||||
/** @test */
|
/** @test */
|
||||||
function can_fetch_charges_created_during_a_callback()
|
function can_fetch_charges_created_during_a_callback()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,58 +10,8 @@ class StripePaymentGatewayTest extends TestCase
|
|||||||
{
|
{
|
||||||
use PaymentGatewayContractTests;
|
use PaymentGatewayContractTests;
|
||||||
|
|
||||||
protected function setUp()
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
$this->lastCharge = $this->lastCharge();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getPaymentGateway()
|
protected function getPaymentGateway()
|
||||||
{
|
{
|
||||||
return new StripePaymentGateway(config('services.stripe.secret'));
|
return new StripePaymentGateway(config('services.stripe.secret'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @test */
|
|
||||||
function charges_with_an_invalid_payment_token_fail()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$paymentGateway = new StripePaymentGateway(config('services.stripe.secret'));
|
|
||||||
$paymentGateway->charge(2500, 'invalid-payment-token');
|
|
||||||
} catch (PaymentFailedException $e) {
|
|
||||||
$this->assertCount(0, $this->newCharges());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->fail("Charging with an invalid payment token did not throw a PaymentFailedException.");
|
|
||||||
}
|
|
||||||
|
|
||||||
private function lastCharge()
|
|
||||||
{
|
|
||||||
return array_first(\Stripe\Charge::all(
|
|
||||||
['limit' => 1],
|
|
||||||
['api_key' => config('services.stripe.secret')]
|
|
||||||
)['data']);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function newCharges()
|
|
||||||
{
|
|
||||||
return \Stripe\Charge::all(
|
|
||||||
[
|
|
||||||
'ending_before' => $this->lastCharge ? $this->lastCharge->id : null,
|
|
||||||
],
|
|
||||||
['api_key' => config('services.stripe.secret')]
|
|
||||||
)['data'];
|
|
||||||
}
|
|
||||||
|
|
||||||
private function validToken()
|
|
||||||
{
|
|
||||||
return \Stripe\Token::create([
|
|
||||||
"card" => [
|
|
||||||
"number" => "4242424242424242",
|
|
||||||
"exp_month" => 1,
|
|
||||||
"exp_year" => date('Y') + 1,
|
|
||||||
"cvc" => "123"
|
|
||||||
]
|
|
||||||
], ['api_key' => config('services.stripe.secret')])->id;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user