objFromFixture('Page', "page1"); $page2 = $this->objFromFixture('Page', "page2"); $this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin')); $response = $this->get("admin/cms/publishall?confirm=1"); $this->assertContains( sprintf(_t('CMSMain.PUBPAGES',"Done: Published %d pages"), 5), $response->getBody() ); $response = $this->post( "admin/cms/batchactions/publish", array( 'csvIDs' => implode(',', array($page1->ID, $page2->ID)), 'ajax' => 1 ) ); $this->assertContains('setNodeTitle(1, \'Page 1\');', $response->getBody()); $this->assertContains('setNodeTitle(2, \'Page 2\');', $response->getBody()); //$this->assertRegexp('/Done: Published 4 pages/', $response->getBody()) /* $response = Director::test("admin/publishitems", array( 'ID' => '' 'Title' => '' 'action_publish' => 'Save and publish', ), $session); $this->assertRegexp('/Done: Published 4 pages/', $response->getBody()) */ } /** * Test publication of one of every page type */ function testPublishOneOfEachKindOfPage() { return; $classes = ClassInfo::subclassesFor("SiteTree"); array_shift($classes); unset($classes['GhostPage']); //Ghost Pages aren't used anymore foreach($classes as $class) { $page = new $class(); if($class instanceof TestOnly) continue; $page->Title = "Test $class page"; $page->write(); $this->assertEquals("Test $class page", DB::query("SELECT Title FROM SiteTree WHERE ID = $page->ID")->value()); $page->doPublish(); $this->assertEquals("Test $class page", DB::query("SELECT Title FROM SiteTree_Live WHERE ID = $page->ID")->value()); // Check that you can visit the page Director::test($page->Link()); } } /** * Test that getCMSFields works on each page type. * Mostly, this is just checking that the method doesn't return an error */ function testThatGetCMSFieldsWorksOnEveryPageType() { $classes = ClassInfo::subclassesFor("SiteTree"); array_shift($classes); unset($classes['GhostPage']); //Ghost Pages aren't used anymore foreach($classes as $class) { $page = new $class(); if($page instanceof TestOnly) continue; $page->Title = "Test $class page"; $page->write(); $page->flushCache(); $page = DataObject::get_by_id("SiteTree", $page->ID); $this->assertTrue($page->getCMSFields(null) instanceof FieldSet); } } /** * Test that a draft-deleted page can still be opened in the CMS */ function testDraftDeletedPageCanBeOpenedInCMS() { // Set up a page that is delete from live $page = $this->objFromFixture('Page','page1'); $pageID = $page->ID; $page->doPublish(); $page->delete(); $this->session()->inst_set('loggedInAs', $this->idFromFixture('Member', 'admin')); $response = $this->get('admin/getitem?ID=' . $pageID . '&ajax=1'); // Check that the 'delete from live' button exists as a simple way of checking that the correct page is returned. $this->assertRegExp('/]+type="submit"[^>]+name="action_deletefromlive"/i', $response->getBody()); } /** * Test CMSMain::getRecord() */ function testGetRecord() { // Set up a page that is delete from live $page1 = $this->objFromFixture('Page','page1'); $page1ID = $page1->ID; $page1->doPublish(); $page1->delete(); $cmsMain = new CMSMain(); // Bad calls $this->assertNull($cmsMain->getRecord('0')); $this->assertNull($cmsMain->getRecord('asdf')); // Pages that are on draft and aren't on draft should both work $this->assertType('Page', $cmsMain->getRecord($page1ID)); $this->assertType('Page', $cmsMain->getRecord($this->idFromFixture('Page','page2'))); // This functionality isn't actually used any more. $newPage = $cmsMain->getRecord('new-Page-5'); $this->assertType('Page', $newPage); $this->assertEquals('5', $newPage->ParentID); } function testGetVersionRecord() { $cmsMain = new CMSMain(); $page1 = $this->objFromFixture('Page', 'page1'); $page1->Content = 'this is the old content'; $page1->write(); $page1->Content = 'this is new content (new version)'; $page1->write(); $versionID = DB::query('SELECT `Version` FROM `SiteTree_versions` WHERE `Content` = \'this is the old content\'')->value(); $_REQUEST['Version'] = $versionID; $this->assertEquals($cmsMain->getRecord($page1->ID)->Version, $versionID); $this->assertEquals($cmsMain->getRecord($page1->ID)->Content, 'this is the old content'); unset($_REQUEST['Version']); } }