/** * @todo Extend type change tests (e.g. '0'==NULL) */ function testChangedFields() { $page = $this->objFromFixture('Page', 'home'); $page->Title = 'Home-Changed'; $page->ShowInMenus = true; $this->assertEquals($page->getChangedFields(false, 1), array('Title' => array('before' => 'Home', 'after' => 'Home-Changed', 'level' => 2), 'ShowInMenus' => array('before' => 1, 'after' => true, 'level' => 1)), 'Changed fields are correctly detected with strict type changes (level=1)'); $this->assertEquals($page->getChangedFields(false, 2), array('Title' => array('before' => 'Home', 'after' => 'Home-Changed', 'level' => 2)), 'Changed fields are correctly detected while ignoring type changes (level=2)'); $newPage = new Page(); $newPage->Title = "New Page Title"; $this->assertEquals($newPage->getChangedFields(false, 2), array('Title' => array('before' => null, 'after' => 'New Page Title', 'level' => 2)), 'Initialised fields are correctly detected as full changes'); }