66 - Extracting the Failure Case

This commit is contained in:
Adam Wathan
2017-01-18 19:08:49 -05:00
parent 8c38d3c20c
commit dad987b548
3 changed files with 20 additions and 63 deletions

View File

@@ -15,19 +15,6 @@ class FakePaymentGatewayTest extends TestCase
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 */
function running_a_hook_before_the_first_charge()
{

View File

@@ -1,5 +1,7 @@
<?php
use App\Billing\PaymentFailedException;
trait PaymentGatewayContractTests
{
abstract protected function getPaymentGateway();
@@ -17,6 +19,24 @@ trait PaymentGatewayContractTests
$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 */
function can_fetch_charges_created_during_a_callback()
{

View File

@@ -10,58 +10,8 @@ class StripePaymentGatewayTest extends TestCase
{
use PaymentGatewayContractTests;
protected function setUp()
{
parent::setUp();
$this->lastCharge = $this->lastCharge();
}
protected function getPaymentGateway()
{
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;
}
}