lifeboat-app /
php-sdk
| 1 | <?php |
||
| 2 | |||
| 3 | namespace Lifeboat\Tests\Models; |
||
| 4 | |||
| 5 | use Lifeboat\Exceptions\BadMethodException; |
||
| 6 | use Lifeboat\Factory\ClassMap; |
||
| 7 | use Lifeboat\Models\Collection; |
||
| 8 | use Lifeboat\Models\LifeboatModel; |
||
| 9 | use Lifeboat\Models\Model; |
||
| 10 | use Lifeboat\Models\Order; |
||
| 11 | use Lifeboat\Services\ApiService; |
||
| 12 | use Lifeboat\Tests\TestCase; |
||
| 13 | |||
| 14 | class ModelTest extends TestCase { |
||
| 15 | |||
| 16 | /** |
||
| 17 | * @test |
||
| 18 | * @covers \Lifeboat\Models\Model::getService |
||
| 19 | */ |
||
| 20 | public function testGetService() |
||
| 21 | { |
||
| 22 | /** @var Model $class */ |
||
| 23 | foreach (ClassMap::MODELS as $class) { |
||
| 24 | $mock = new $class($this->getMockClient(), ['ID' => 0]); |
||
| 25 | $this->assertInstanceOf(Model::class, $mock); |
||
| 26 | |||
| 27 | try { |
||
| 28 | $this->assertInstanceOf(ApiService::class, $mock->getService()); |
||
| 29 | } catch (BadMethodException $e) { |
||
| 30 | $this->assertInstanceOf(LifeboatModel::class, $mock); |
||
| 31 | } |
||
| 32 | } |
||
| 33 | } |
||
| 34 | |||
| 35 | /** |
||
| 36 | * @test |
||
| 37 | * @covers \Lifeboat\Models\Model::exists |
||
| 38 | * @covers \Lifeboat\Models\Model::toArray |
||
| 39 | * @covers \Lifeboat\Models\Model::getIterator |
||
| 40 | * @covers \Lifeboat\Models\Model::__set |
||
| 41 | * @covers \Lifeboat\Models\Model::__get |
||
| 42 | * @covers \Lifeboat\Models\Model::offsetGet |
||
| 43 | * @covers \Lifeboat\Models\Model::offsetSet |
||
| 44 | * @covers \Lifeboat\Models\Model::offsetExists |
||
| 45 | * @covers \Lifeboat\Models\Model::count |
||
| 46 | * @covers \Lifeboat\Models\Model::keys |
||
| 47 | * @covers \Lifeboat\Models\Model::values |
||
| 48 | */ |
||
| 49 | public function test_model_base_functions() |
||
| 50 | { |
||
| 51 | /** @var Model $class */ |
||
| 52 | foreach (ClassMap::MODELS as $class) { |
||
| 53 | /** @var Model $mock */ |
||
| 54 | $mock = new $class($this->getMockClient(), ['ID' => 0]); |
||
| 55 | $this->assertFalse($mock->exists()); |
||
| 56 | $mock->test = 'x'; |
||
|
0 ignored issues
–
show
Bug
Best Practice
introduced
by
Loading history...
|
|||
| 57 | $this->assertEquals('x', $mock->test); |
||
|
0 ignored issues
–
show
The property
test does not exist on Lifeboat\Models\Model. Since you implemented __get, consider adding a @property annotation.
Loading history...
|
|||
| 58 | $mock->offsetSet('test2', 'y'); |
||
| 59 | $this->assertEquals(['ID' => 0, 'test' => 'x', 'test2' => 'y'], $mock->toArray()); |
||
| 60 | $this->assertEquals('x', $mock->offsetGet('test')); |
||
| 61 | $this->assertTrue($mock->offsetExists('test')); |
||
| 62 | $mock->offsetUnset('test2'); |
||
| 63 | $this->assertEquals(['ID' => 0, 'test' => 'x'], $mock->toArray()); |
||
| 64 | $this->assertEquals(2, $mock->count()); |
||
| 65 | $this->assertEquals(['ID', 'test'], $mock->keys()); |
||
| 66 | $this->assertEquals([0, 'x'], $mock->values()); |
||
| 67 | |||
| 68 | /** @var Model $exists */ |
||
| 69 | $exists = new $class($this->getMockClient(), ['ID' => 1]); |
||
| 70 | $this->assertTrue($exists->exists()); |
||
| 71 | $exists->test = 'y'; |
||
| 72 | $this->assertEquals(['ID' => 1, 'test' => 'y'], $exists->toArray()); |
||
| 73 | $this->assertEquals('y', $exists->offsetGet('test')); |
||
| 74 | } |
||
| 75 | } |
||
| 76 | |||
| 77 | /** |
||
| 78 | * @test |
||
| 79 | * @covers \Lifeboat\Models\Collection::__construct |
||
| 80 | */ |
||
| 81 | public function test_collection() |
||
| 82 | { |
||
| 83 | $data = ['ID' => 1, 'Rules' => '{"1":1}']; |
||
| 84 | $collection = new Collection($this->getMockClient(), $data); |
||
| 85 | $this->assertEquals([1 => 1], $collection->Rules); |
||
| 86 | } |
||
| 87 | |||
| 88 | /** |
||
| 89 | * @test |
||
| 90 | * @covers \Lifeboat\Models\LifeboatModel::getService |
||
| 91 | */ |
||
| 92 | public function test_lifeboat_model() |
||
| 93 | { |
||
| 94 | $model = new LifeboatModel($this->getMockClient(), ['ID' => 1]); |
||
| 95 | |||
| 96 | try { |
||
| 97 | $model->getService(); |
||
| 98 | $this->fail('LifeboatModel::getService() should not be able to be called'); |
||
| 99 | } catch (BadMethodException $e) { |
||
| 100 | // Should throw error |
||
| 101 | } |
||
| 102 | |||
| 103 | $this->assertIsObject($model); |
||
| 104 | } |
||
| 105 | |||
| 106 | /** |
||
| 107 | * @test |
||
| 108 | * @covers \Lifeboat\Models\Order::FulfillmentType |
||
| 109 | * @covers \Lifeboat\Models\Order::Status |
||
| 110 | */ |
||
| 111 | public function test_order() |
||
| 112 | { |
||
| 113 | $order = new Order($this->getMockClient(), ['ID' => 0]); |
||
| 114 | $order->Status = 0; |
||
| 115 | $this->assertEquals('', $order->Status()); |
||
| 116 | $order->Status = 1; |
||
| 117 | $this->assertEquals('open', $order->Status()); |
||
| 118 | $order->Status = 2; |
||
| 119 | $this->assertEquals('paid', $order->Status()); |
||
| 120 | |||
| 121 | $order->FulfillmentType = 0; |
||
| 122 | $this->assertEquals('ship', $order->FulfillmentType()); |
||
| 123 | $order->FulfillmentType = 1; |
||
| 124 | $this->assertEquals('deliver', $order->FulfillmentType()); |
||
| 125 | $order->FulfillmentType = 2; |
||
| 126 | $this->assertEquals('pickup', $order->FulfillmentType()); |
||
| 127 | $order->FulfillmentType = 3; |
||
| 128 | $this->assertEquals('', $order->FulfillmentType()); |
||
| 129 | } |
||
| 130 | } |
||
| 131 |