public function testGetEmptyCollection() { MockPersistent::collection($this->fixture)->truncate(); $this->mockEnvironment(['PATH_INFO' => '/collection/', 'REQUEST_METHOD' => 'GET']); try { $response = $this->tacit->invoke(); $result = json_decode($response->getBody(), true); $this->assertEquals(200, $response->getStatus()); $this->assertArrayHasKey('_links', $result); $this->assertArrayHasKey('_embedded', $result); $this->assertArrayHasKey('total_items', $result); $this->assertArrayHasKey('returned_items', $result); $this->assertArrayHasKey('limit', $result); $this->assertArrayHasKey('offset', $result); $this->assertEquals(0, $result['total_items']); $this->assertEquals(0, $result['returned_items']); $this->assertEquals(25, $result['limit']); $this->assertEquals(0, $result['offset']); } catch (RestfulException $e) { $this->fail($e->getMessage()); } catch (\Exception $e) { $this->fail($e->getMessage()); } }
/** * Test a RESTful PUT request on a RestfulItem * * @param array $data * * @group controller * * @dataProvider providerPut */ public function testPut(array $data) { /** @var MockPersistent $itemObj */ $itemObj = MockPersistent::findOne(['name' => $data['name']], [], $this->fixture); $this->mockEnvironment(['PATH_INFO' => '/collection/' . $itemObj->_id, 'REQUEST_METHOD' => 'PUT', 'CONTENT_TYPE' => 'application/json', 'slim.input' => json_encode($data)]); try { $response = $this->tacit->invoke(); $item = json_decode($response->getBody(), true); unset($data['password']); $matches = array_uintersect_assoc($data, $item, array($this, 'compareMultidimensionalArray')); $this->assertEquals($data, $matches); } catch (RestfulException $e) { $this->fail($e->getMessage()); } catch (\Exception $e) { $this->fail($e->getMessage()); } }
/** * Test MockPersistent::update(). * * @param array $expected * @param array|\Closure $criteria * @param array $data * * @dataProvider providerUpdate * @group model */ public function testUpdate($expected, $criteria, $data) { $this->assertEquals($expected, MockPersistent::update($criteria, $data, [], $this->fixture)); }
/** * Test Collection::distinct() */ public function testDistinct() { $this->assertEquals(['string #1', 'string #2', 'string #3'], MockPersistent::collection($this->fixture)->distinct('arrayOfStrings')); }