mirror of
https://gitlab.com/openlp/website.git
synced 2024-12-23 05:22:53 +00:00
248 lines
7.8 KiB
PHP
248 lines
7.8 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Stripe;
|
||
|
|
||
|
class CustomerTest extends TestCase
|
||
|
{
|
||
|
public function testDeletion()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->delete();
|
||
|
|
||
|
$this->assertTrue($customer->deleted);
|
||
|
$this->assertNull($customer['active_card']);
|
||
|
}
|
||
|
|
||
|
public function testSave()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
|
||
|
$customer->email = 'gdb@stripe.com';
|
||
|
$customer->save();
|
||
|
$this->assertSame($customer->email, 'gdb@stripe.com');
|
||
|
|
||
|
$stripeCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame($customer->email, $stripeCustomer->email);
|
||
|
|
||
|
Stripe::setApiKey(null);
|
||
|
$customer = Customer::create(null, self::API_KEY);
|
||
|
$customer->email = 'gdb@stripe.com';
|
||
|
$customer->save();
|
||
|
|
||
|
self::authorizeFromEnv();
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame($updatedCustomer->email, 'gdb@stripe.com');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @expectedException Stripe\Error\InvalidRequest
|
||
|
*/
|
||
|
public function testBogusAttribute()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->bogus = 'bogus';
|
||
|
$customer->save();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @expectedException InvalidArgumentException
|
||
|
*/
|
||
|
public function testUpdateDescriptionEmpty()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->description = '';
|
||
|
}
|
||
|
|
||
|
public function testUpdateDescriptionNull()
|
||
|
{
|
||
|
$customer = self::createTestCustomer(array('description' => 'foo bar'));
|
||
|
$customer->description = null;
|
||
|
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame(null, $updatedCustomer->description);
|
||
|
}
|
||
|
|
||
|
public function testUpdateMetadata()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
|
||
|
$customer->metadata['test1'] = 'foo';
|
||
|
$customer->metadata['test2'] = 'bar';
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame(2, count($updatedCustomer->metadata));
|
||
|
$this->assertSame('foo', $updatedCustomer->metadata['test1']);
|
||
|
$this->assertSame('bar', $updatedCustomer->metadata['test2']);
|
||
|
}
|
||
|
|
||
|
public function testDeleteMetadata()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
|
||
|
$customer->metadata = null;
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame(0, count($updatedCustomer->metadata));
|
||
|
}
|
||
|
|
||
|
public function testUpdateSomeMetadata()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->metadata['shoe size'] = '7';
|
||
|
$customer->metadata['shirt size'] = 'XS';
|
||
|
$customer->save();
|
||
|
|
||
|
$customer->metadata['shoe size'] = '9';
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame('XS', $updatedCustomer->metadata['shirt size']);
|
||
|
$this->assertSame('9', $updatedCustomer->metadata['shoe size']);
|
||
|
}
|
||
|
|
||
|
public function testUpdateAllMetadata()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->metadata['shoe size'] = '7';
|
||
|
$customer->metadata['shirt size'] = 'XS';
|
||
|
$customer->save();
|
||
|
|
||
|
$customer->metadata = array('shirt size' => 'XL');
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$this->assertSame('XL', $updatedCustomer->metadata['shirt size']);
|
||
|
$this->assertFalse(isset($updatedCustomer->metadata['shoe size']));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @expectedException Stripe\Error\InvalidRequest
|
||
|
*/
|
||
|
public function testUpdateInvalidMetadata()
|
||
|
{
|
||
|
$customer = self::createTestCustomer();
|
||
|
$customer->metadata = 'something';
|
||
|
$customer->save();
|
||
|
}
|
||
|
|
||
|
public function testCancelSubscription()
|
||
|
{
|
||
|
$planID = 'gold-' . self::generateRandomString(20);
|
||
|
self::retrieveOrCreatePlan($planID);
|
||
|
|
||
|
$customer = self::createTestCustomer(
|
||
|
array(
|
||
|
'plan' => $planID,
|
||
|
)
|
||
|
);
|
||
|
|
||
|
$customer->cancelSubscription(array('at_period_end' => true));
|
||
|
$this->assertSame($customer->subscription->status, 'active');
|
||
|
$this->assertTrue($customer->subscription->cancel_at_period_end);
|
||
|
$customer->cancelSubscription();
|
||
|
$this->assertSame($customer->subscription->status, 'canceled');
|
||
|
}
|
||
|
|
||
|
public function testCustomerAddCard()
|
||
|
{
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$createdCard = $customer->sources->create(array("card" => 'tok_visa'));
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedCards = $updatedCustomer->sources->all();
|
||
|
$this->assertSame(count($updatedCards["data"]), 2);
|
||
|
}
|
||
|
|
||
|
public function testCustomerUpdateCard()
|
||
|
{
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$customer->save();
|
||
|
|
||
|
$sources = $customer->sources->all();
|
||
|
$this->assertSame(count($sources["data"]), 1);
|
||
|
|
||
|
$card = $sources['data'][0];
|
||
|
$card->name = "Jane Austen";
|
||
|
$card->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedCards = $updatedCustomer->sources->all();
|
||
|
$this->assertSame($updatedCards["data"][0]->name, "Jane Austen");
|
||
|
}
|
||
|
|
||
|
public function testCustomerDeleteCard()
|
||
|
{
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$createdCard = $customer->sources->create(array("card" => 'tok_visa'));
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedCards = $updatedCustomer->sources->all();
|
||
|
$this->assertSame(count($updatedCards["data"]), 2);
|
||
|
|
||
|
$deleteStatus = $updatedCustomer->sources->retrieve($createdCard->id)->delete();
|
||
|
$this->assertTrue($deleteStatus->deleted);
|
||
|
$updatedCustomer->save();
|
||
|
|
||
|
$postDeleteCustomer = Customer::retrieve($customer->id);
|
||
|
$postDeleteCards = $postDeleteCustomer->sources->all();
|
||
|
$this->assertSame(count($postDeleteCards["data"]), 1);
|
||
|
}
|
||
|
|
||
|
public function testCustomerAddSource()
|
||
|
{
|
||
|
self::authorizeFromEnv();
|
||
|
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$createdSource = $customer->sources->create(array("source" => 'tok_visa'));
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedSources = $updatedCustomer->sources->all();
|
||
|
$this->assertSame(count($updatedSources["data"]), 2);
|
||
|
}
|
||
|
|
||
|
public function testCustomerUpdateSource()
|
||
|
{
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$customer->save();
|
||
|
|
||
|
$sources = $customer->sources->all();
|
||
|
$this->assertSame(count($sources["data"]), 1);
|
||
|
|
||
|
$source = $sources['data'][0];
|
||
|
$source->name = "Jane Austen";
|
||
|
$source->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedSources = $updatedCustomer->sources->all();
|
||
|
$this->assertSame($updatedSources["data"][0]->name, "Jane Austen");
|
||
|
}
|
||
|
|
||
|
public function testCustomerDeleteSource()
|
||
|
{
|
||
|
self::authorizeFromEnv();
|
||
|
|
||
|
$customer = $this->createTestCustomer();
|
||
|
$createdSource = $customer->sources->create(array("source" => 'tok_visa'));
|
||
|
$customer->save();
|
||
|
|
||
|
$updatedCustomer = Customer::retrieve($customer->id);
|
||
|
$updatedSources = $updatedCustomer->sources->all();
|
||
|
$this->assertSame(count($updatedSources["data"]), 2);
|
||
|
|
||
|
$deleteStatus = $updatedCustomer->sources->retrieve($createdSource->id)->delete();
|
||
|
$this->assertTrue($deleteStatus->deleted);
|
||
|
$updatedCustomer->save();
|
||
|
|
||
|
$postDeleteCustomer = Customer::retrieve($customer->id);
|
||
|
$postDeleteSources = $postDeleteCustomer->sources->all();
|
||
|
$this->assertSame(count($postDeleteSources["data"]), 1);
|
||
|
}
|
||
|
}
|