public function testAdmin(){ // Basic Construct should return one result. /** @var PageModel $page */ $page = PageModel::Construct('/admin'); $this->assertInstanceOf('Model', $page); $this->assertInstanceOf('PageModel', $page); if(!$page->exists()){ $this->markTestSkipped('/admin page does not exist, Core must not be installed.'); return; } // Test that getAsArray works as expected. $asArray = $page->getAsArray(); $this->assertInternalType('array', $asArray); $this->assertGreaterThan(0, sizeof($asArray)); // And JSON $asJSON = $page->getAsJSON(); $this->assertInternalType('string', $asJSON); $this->assertGreaterThan(0, strlen($asJSON)); $this->assertInternalType('array', json_decode($asJSON, true)); $this->assertArrayHasKey('title', $asArray); $this->assertArrayHasKey('title', $page); $this->assertEquals($asArray['title'], $page->get('title')); $this->assertArrayHasKey('expires', $asArray); $this->assertArrayHasKey('expires', $page); $this->assertEquals($asArray['expires'], $page->get('expires')); // Test that getLink behaves as expected. $this->assertNull($page->getLink('nonexistent')); // Pages also have the following linked records, // insertables, pagemetas, and rewrites. $this->assertInternalType('array', $page->getLink('Insertable')); $this->assertInternalType('array', $page->getLink('PageMeta')); $this->assertInternalType('array', $page->getLink('RewriteMap')); // Ensure that creating meta files works $meta_name = 'phpunit-test'; $meta_val = 'This is a test meta field from phpunit'; $page->setMeta($meta_name, $meta_val); // Saving the page should also save this new meta. $this->assertTrue($page->save()); // Verify this meta from a separate object // (because Construct will use the cached copy) $page2 = new PageModel('/admin'); $this->assertTrue($page2->exists()); $this->assertEquals($meta_val, $page2->getMetaValue($meta_name)); // Remove the field from the original object now. $page->setMeta($meta_name, null); // Test that removing it does not remove the object's data until the parent is saved though! $meta = new PageMetaModel($page->get('site'), $page->get('baseurl'), $meta_name, ''); $this->assertTrue($meta->exists()); $this->assertTrue($page->save()); $meta = new PageMetaModel($page->get('site'), $page->get('baseurl'), $meta_name, ''); $this->assertFalse($meta->exists()); }