public function testSetOnce() { $page = new Page(); $page->title = 'Initial title'; $page->save(); $id = $page->id; // Completely remove current instance EntityPool::getInstance()->remove($page); // Load fresh instance from database $page = Page::findById($id); // Disable update of 'title' attribute $page->getAttribute('title')->setOnce()->setValue('New title'); $this->assertEquals('Initial title', $page->title); $page->populate(['title' => 'Some title']); $this->assertEquals('Initial title', $page->title); // Try populating a null value attribute $page->getAttribute('settings')->setOnce()->setValue([]); $this->assertEquals([], $page->settings->val()); // Try updating an attribute that has a value already assigned to it $page->settings = [1, 2, 3]; $this->assertEquals([], $page->settings->val()); // Enable update of 'title' attribute $page->getAttribute('title')->setOnce(false)->setValue('New title'); $this->assertEquals('New title', $page->title); }
public function testParentEntity() { // Create parent page $parentPage = new Page(); $parentPage->title = 'Parent page'; $parentPage->save(); $page = self::$page; $page->parent = $parentPage; $page->save(); $parentPage->parent = $page; $parentPage->save(); /*$data = $page->toArray('*,labels'); $this->assertArrayHasKey('title', $data); $this->assertArrayHasKey('author', $data); $this->assertArrayHasKey('name', $data['author']); $this->assertArrayHasKey('labels', $data); $this->assertArrayNotHasKey('comments', $data); $data = $page->toArray('title,comments.text,comments.id,labels'); $this->assertArrayHasKey('comments', $data); $this->assertArrayHasKey('labels', $data); $this->assertArrayHasKey('label', $data['labels'][0]); $this->assertArrayNotHasKey('author', $data);*/ }