2009-05-06 08:36:16 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
class HierarchyTest extends SapphireTest {
|
|
|
|
static $fixture_file = 'sapphire/tests/model/HierarchyTest.yml';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test Hierarchy::AllHistoricalChildren().
|
|
|
|
*/
|
|
|
|
function testAllHistoricalChildren() {
|
|
|
|
// Delete some pages
|
|
|
|
$this->objFromFixture('Page', 'page2b')->delete();
|
|
|
|
$this->objFromFixture('Page', 'page3a')->delete();
|
|
|
|
$this->objFromFixture('Page', 'page3')->delete();
|
|
|
|
|
|
|
|
// Check that page1-3 appear at the top level of the AllHistoricalChildren tree
|
|
|
|
$this->assertEquals(array("Page 1", "Page 2", "Page 3"),
|
|
|
|
singleton('Page')->AllHistoricalChildren()->column('Title'));
|
|
|
|
|
|
|
|
// Check that both page 2 children are returned
|
|
|
|
$page2 = $this->objFromFixture('Page', 'page2');
|
|
|
|
$this->assertEquals(array("Page 2a", "Page 2b"),
|
|
|
|
$page2->AllHistoricalChildren()->column('Title'));
|
|
|
|
|
|
|
|
// Page 3 has been deleted; let's bring it back from the grave
|
2009-09-30 00:04:32 +02:00
|
|
|
$page3 = Versioned::get_including_deleted("SiteTree", "\"Title\" = 'Page 3'")->First();
|
2009-05-06 08:36:16 +02:00
|
|
|
|
|
|
|
// Check that both page 3 children are returned
|
|
|
|
$this->assertEquals(array("Page 3a", "Page 3b"),
|
|
|
|
$page3->AllHistoricalChildren()->column('Title'));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test that you can call Hierarchy::markExpanded/Unexpanded/Open() on a page, and that
|
|
|
|
* calling Hierarchy::isMarked() on a different instance of that object will return true.
|
|
|
|
*/
|
|
|
|
function testItemMarkingIsntRestrictedToSpecificInstance() {
|
|
|
|
// Mark a few pages
|
|
|
|
$this->objFromFixture('Page', 'page2')->markExpanded();
|
|
|
|
$this->objFromFixture('Page', 'page2a')->markExpanded();
|
|
|
|
$this->objFromFixture('Page', 'page2b')->markExpanded();
|
|
|
|
$this->objFromFixture('Page', 'page3')->markUnexpanded();
|
|
|
|
|
|
|
|
// Query some pages in a different context and check their m
|
2009-09-30 00:04:32 +02:00
|
|
|
$pages = DataObject::get("Page", '', '"ID" ASC');
|
2009-05-06 08:36:16 +02:00
|
|
|
$marked = $expanded = array();
|
|
|
|
foreach($pages as $page) {
|
|
|
|
if($page->isMarked()) $marked[] = $page->Title;
|
|
|
|
if($page->isExpanded()) $expanded[] = $page->Title;
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->assertEquals(array('Page 2', 'Page 3', 'Page 2a', 'Page 2b'), $marked);
|
|
|
|
$this->assertEquals(array('Page 2', 'Page 2a', 'Page 2b'), $expanded);
|
|
|
|
|
|
|
|
}
|
2009-09-30 00:04:32 +02:00
|
|
|
|
2009-05-06 08:36:16 +02:00
|
|
|
}
|