fixture = Collection::constructFrom([ 'url' => '/things', 'data' => [ ['id' => 1], ['id' => 2], ['id' => 3] ], 'meta' => [ 'page_size' => 3, 'page_number' => 2, 'total_results' => 6, 'total_pages' => 4 ] ]); } public function testCanList() { $this->stubRequest( 'GET', '/things', [], null, false, [ 'data' => [ ['id' => 1], ['id' => 2], ['id' => 3] ], 'meta' => [ 'page_size' => 3, 'page_number' => 2, 'total_results' => 6, 'total_pages' => 4 ] ] ); $resources = $this->fixture->all(); $this->assertTrue(is_array($resources['data'])); } public function testCanRetrieve() { $this->stubRequest( 'GET', '/things/1', [], null, false, [ 'id' => 1, ] ); $this->fixture->retrieve(1); } public function testCanCreate() { $this->stubRequest( 'POST', '/things', [ 'foo' => 'bar', ], null, false, [ 'id' => 2, ] ); $this->fixture->create([ 'foo' => 'bar', ]); } public function testCanIterate() { $seen = []; foreach ($this->fixture['data'] as $item) { array_push($seen, $item['id']); } $this->assertSame([1, 2, 3], $seen); } public function testSupportsIteratorToArray() { $seen = []; foreach (iterator_to_array($this->fixture) as $item) { array_push($seen, $item['id']); } $this->assertSame([1, 2, 3], $seen); } public function testHeaders() { $this->stubRequest( 'POST', '/things', [ 'foo' => 'bar', ], [ 'Telnyx-Account: acct_foo', 'Idempotency-Key: qwertyuiop', ], false, [ 'id' => 2, ] ); $this->fixture->create([ 'foo' => 'bar', ], [ 'telnyx_account' => 'acct_foo', 'idempotency_key' => 'qwertyuiop', ]); } public function testEmptyCollection() { $emptyCollection = Collection::emptyCollection(); $this->assertEquals([], $emptyCollection->data); } public function testIsEmpty() { $empty = Collection::constructFrom(['data' => []]); $this->assertTrue($empty->isEmpty()); $notEmpty = Collection::constructFrom(['data' => [['id' => 1]]]); $this->assertFalse($notEmpty->isEmpty()); } public function testNextPage() { $this->stubRequest( 'GET', '/things', [ 'page[number]' => 3 ], null, false, [ 'data' => [ ['id' => 1], ['id' => 2], ['id' => 3] ], 'meta' => [ 'page_size' => 3, 'page_number' => 2, 'total_results' => 6, 'total_pages' => 4 ] ] ); $nextPage = $this->fixture->nextPage(); $ids = []; foreach ($nextPage->data as $element) { array_push($ids, $element['id']); } $this->assertEquals([1, 2, 3], $ids); } public function testPreviousPage() { $this->stubRequest( 'GET', '/things', [ 'page[number]' => 1 ], null, false, [ 'data' => [ ['id' => 1], ['id' => 2], ['id' => 3] ], 'meta' => [ 'page_size' => 3, 'page_number' => 2, 'total_results' => 6, 'total_pages' => 4 ] ] ); $previousPage = $this->fixture->previousPage(); $ids = []; foreach ($previousPage->data as $element) { array_push($ids, $element['id']); } $this->assertEquals([1, 2, 3], $ids); } }