56 - Dealing with Lingering State

This commit is contained in:
Adam Wathan
2016-12-29 21:21:03 -05:00
parent 3acda11372
commit 3472361c35

View File

@@ -7,13 +7,44 @@ use Illuminate\Foundation\Testing\DatabaseTransactions;
class StripePaymentGatewayTest extends TestCase
{
protected function setUp()
{
parent::setUp();
$this->lastCharge = $this->lastCharge();
}
/** @test */
function charges_with_a_valid_payment_token_are_successful()
{
// Create a new StripePaymentGateway
$paymentGateway = new StripePaymentGateway(config('services.stripe.secret'));
$token = \Stripe\Token::create([
$paymentGateway->charge(2500, $this->validToken());
$this->assertCount(1, $this->newCharges());
$this->assertEquals(2500, $this->lastCharge()->amount);
}
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,
@@ -21,16 +52,5 @@ class StripePaymentGatewayTest extends TestCase
"cvc" => "123"
]
], ['api_key' => config('services.stripe.secret')])->id;
// Create a new charge for some amount using a valid token
$paymentGateway->charge(2500, $token);
// Verify that the charge was completed successfully
$lastCharge = \Stripe\Charge::all(
['limit' => 1],
['api_key' => config('services.stripe.secret')]
)['data'][0];
$this->assertEquals(2500, $lastCharge->amount);
}
}