mirror of
https://gitlab.com/openlp/website.git
synced 2024-08-31 02:53:38 +00:00
109 lines
2.8 KiB
PHP
109 lines
2.8 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Stripe;
|
||
|
|
||
|
class StripeObjectTest extends TestCase
|
||
|
{
|
||
|
public function testArrayAccessorsSemantics()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$s['foo'] = 'a';
|
||
|
$this->assertSame($s['foo'], 'a');
|
||
|
$this->assertTrue(isset($s['foo']));
|
||
|
unset($s['foo']);
|
||
|
$this->assertFalse(isset($s['foo']));
|
||
|
}
|
||
|
|
||
|
public function testNormalAccessorsSemantics()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$s->foo = 'a';
|
||
|
$this->assertSame($s->foo, 'a');
|
||
|
$this->assertTrue(isset($s->foo));
|
||
|
unset($s->foo);
|
||
|
$this->assertFalse(isset($s->foo));
|
||
|
}
|
||
|
|
||
|
public function testArrayAccessorsMatchNormalAccessors()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$s->foo = 'a';
|
||
|
$this->assertSame($s['foo'], 'a');
|
||
|
|
||
|
$s['bar'] = 'b';
|
||
|
$this->assertSame($s->bar, 'b');
|
||
|
}
|
||
|
|
||
|
public function testKeys()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$s->foo = 'a';
|
||
|
$this->assertSame($s->keys(), array('foo'));
|
||
|
}
|
||
|
|
||
|
public function testToArray()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$s->foo = 'a';
|
||
|
|
||
|
$converted = $s->__toArray();
|
||
|
|
||
|
$this->assertInternalType('array', $converted);
|
||
|
$this->assertArrayHasKey('foo', $converted);
|
||
|
$this->assertEquals('a', $converted['foo']);
|
||
|
}
|
||
|
|
||
|
public function testRecursiveToArray()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$z = new StripeObject();
|
||
|
|
||
|
$s->child = $z;
|
||
|
$z->foo = 'a';
|
||
|
|
||
|
$converted = $s->__toArray(true);
|
||
|
|
||
|
$this->assertInternalType('array', $converted);
|
||
|
$this->assertArrayHasKey('child', $converted);
|
||
|
$this->assertInternalType('array', $converted['child']);
|
||
|
$this->assertArrayHasKey('foo', $converted['child']);
|
||
|
$this->assertEquals('a', $converted['child']['foo']);
|
||
|
}
|
||
|
|
||
|
public function testNonexistentProperty()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$this->assertNull($s->nonexistent);
|
||
|
}
|
||
|
|
||
|
public function testPropertyDoesNotExists()
|
||
|
{
|
||
|
$s = new StripeObject();
|
||
|
$this->assertNull($s['nonexistent']);
|
||
|
}
|
||
|
|
||
|
public function testJsonEncode()
|
||
|
{
|
||
|
// We can only JSON encode our objects in PHP 5.4+. 5.3 must use ->__toJSON()
|
||
|
if (version_compare(phpversion(), '5.4.0', '<')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$s = new StripeObject();
|
||
|
$s->foo = 'a';
|
||
|
|
||
|
$this->assertEquals('{"foo":"a"}', json_encode($s->__toArray()));
|
||
|
}
|
||
|
|
||
|
public function testReplaceNewNestedUpdatable()
|
||
|
{
|
||
|
StripeObject::init(); // Populate the $nestedUpdatableAttributes Set
|
||
|
$s = new StripeObject();
|
||
|
|
||
|
$s->metadata = array('bar');
|
||
|
$this->assertSame($s->metadata, array('bar'));
|
||
|
$s->metadata = array('baz', 'qux');
|
||
|
$this->assertSame($s->metadata, array('baz', 'qux'));
|
||
|
}
|
||
|
}
|