function testCopyFrom() { $original = new VirtualPageTest_ClassA(); $original->MyInitiallyCopiedField = 'original'; $original->MyVirtualField = 'original'; $original->MyNonVirtualField = 'original'; $original->write(); $virtual = new VirtualPage(); $virtual->CopyContentFromID = $original->ID; $virtual->write(); $virtual->copyFrom($original); // Using getField() to avoid side effects from an overloaded __get() $this->assertEquals('original', $virtual->getField('MyInitiallyCopiedField'), 'Fields listed in $initially_copied_fields are copied on first copyFrom() invocation'); $this->assertEquals('original', $virtual->getField('MyVirtualField'), 'Fields not listed in $initially_copied_fields are copied in copyFrom()'); $this->assertNull($virtual->getField('MyNonVirtualField'), 'Fields listed in $non_virtual_fields are not copied in copyFrom()'); $original->MyInitiallyCopiedField = 'changed'; $original->write(); $virtual->copyFrom($original); $this->assertEquals('original', $virtual->MyInitiallyCopiedField, 'Fields listed in $initially_copied_fields are not copied on subsequent copyFrom() invocations'); }
public function testVirtualPageAsAnAllowedChild() { $parentPage = new VirtualPageTest_PageWithAllowedChildren(); $parentPage->write(); $childPage = new VirtualPageTest_ClassA(); $childPage->ParentID = $parentPage->ID; $childPage->write(); // Check we're allowed to create a VirtualPage without linking it to a page yet $childVirtualPage = new VirtualPage(); $childVirtualPage->ParentID = $parentPage->ID; try { $childVirtualPage->write(); } catch (ValidationException $e) { $this->fail('Failed to write VirtualPage when it is an allowed child'); } // Check that we can link a VirtualPage to a page type that's an allowed child $childVirtualPage->CopyContentFromID = $childPage->ID; try { $childVirtualPage->write(); } catch (ValidationException $e) { $this->fail('Failed to write VirtualPage when it is linked to an allowed child'); } // Check that we CAN'T link a VirtualPage to a page that is NOT an allowed child $disallowedChild = new VirtualPageTest_ClassB(); $disallowedChild->write(); $childVirtualPage->CopyContentFromID = $disallowedChild->ID; $isDetected = false; try { $childVirtualPage->write(); } catch (ValidationException $e) { $this->assertContains('not allowed as child of this parent page', $e->getMessage()); $isDetected = true; } if (!$isDetected) { $this->fail("Shouldn't be allowed to write a VirtualPage that links to a disallowed child"); } }
public function testVirtualPageFindsCorrectCasting() { $page = new VirtualPageTest_ClassA(); $page->CastingTest = "Some content"; $page->write(); $virtual = new VirtualPage(); $virtual->CopyContentFromID = $page->ID; $virtual->write(); $this->assertEquals('VirtualPageTest_TestDBField', $virtual->castingHelper('CastingTest')); $this->assertEquals('SOME CONTENT', $virtual->obj('CastingTest')->forTemplate()); }