public function testLazyLoadedFieldsOnVersionedRecords() { // Save another record, sanity check that we're getting the right one $obj2 = new VersionedTest_Subclass(); $obj2->Name = "test2"; $obj2->ExtraField = "foo2"; $obj2->write(); // Save the actual inspected record $obj1 = new VersionedTest_Subclass(); $obj1->Name = "test"; $obj1->ExtraField = "foo"; $obj1->write(); $version1 = $obj1->Version; $obj1->Name = "test2"; $obj1->ExtraField = "baz"; $obj1->write(); $version2 = $obj1->Version; $reloaded = Versioned::get_version('VersionedTest_Subclass', $obj1->ID, $version1); $this->assertEquals($reloaded->Name, 'test'); $this->assertEquals($reloaded->ExtraField, 'foo'); $reloaded = Versioned::get_version('VersionedTest_Subclass', $obj1->ID, $version2); $this->assertEquals($reloaded->Name, 'test2'); $this->assertEquals($reloaded->ExtraField, 'baz'); $reloaded = Versioned::get_latest_version('VersionedTest_Subclass', $obj1->ID); $this->assertEquals($reloaded->Version, $version2); $this->assertEquals($reloaded->Name, 'test2'); $this->assertEquals($reloaded->ExtraField, 'baz'); $allVersions = Versioned::get_all_versions('VersionedTest_Subclass', $obj1->ID); $this->assertEquals(2, $allVersions->Count()); $this->assertEquals($allVersions->First()->Version, $version1); $this->assertEquals($allVersions->First()->Name, 'test'); $this->assertEquals($allVersions->First()->ExtraField, 'foo'); $this->assertEquals($allVersions->Last()->Version, $version2); $this->assertEquals($allVersions->Last()->Name, 'test2'); $this->assertEquals($allVersions->Last()->ExtraField, 'baz'); $obj1->delete(); }