/** * Test that an initializer will initialize a page's section's form. */ public function testVisitPage() { $_SERVER["REQUEST_METHOD"] = "POST"; $initializer = new Initializer(); $form = $this->makeMockForm(); $this->assertEquals("", $form->validated); $page = PageBuilder::begin()->setId("test-page")->addWritable(SectionBuilder::begin()->setId("s" . (string) rand())->addWritable($form)->build())->setType("full-header")->build(); $initializer->visitPage($page); $this->assertTrue($form->validated); }
public function testRender() { $title = "Test Page"; $page = PageBuilder::begin()->setId("test-page")->setType(PageBuilder::TYPE_FULL_HEADER)->setTitle($title)->build(); ob_start(); $page->render(); $result = ob_get_clean(); $this->assertContains("<title>{$title}</title>", $result); }
<?php /** * Project documentation index page. */ require_once dirname(__FILE__) . "/../setup.php"; use Athens\Core\Page\PageBuilder; use Athens\Core\Page\Page; $page = PageBuilder::begin()->setId('documentation-browser')->setTitle(APPLICATION_NAME . " - Project Documentation")->setType(Page::PAGE_TYPE_MARKDOWN_DOCUMENTATION)->setBaseHref("..")->build(); $page->initialize()->render();
public function testVisitPage() { $writer = new HTMLWriter(); $pageType = PageBuilder::TYPE_FULL_HEADER; $pageHeader = "Page Header"; $pageSubHeader = "Page subheader"; $id = "p" . (string) rand(); $classes = [(string) rand(), (string) rand()]; $data = ['d' . (string) rand() => (string) rand(), 'd' . (string) rand() => (string) rand()]; $breadCrumbs = ['t' . (string) rand() => 'u' . (string) rand()]; $section = SectionBuilder::begin()->setId("s" . (string) rand())->addLabel("Label")->addContent("Some content.")->build(); $page = PageBuilder::begin()->setId($id)->addClass($classes[0])->addClass($classes[1])->addWritable($section)->addData(array_keys($data)[0], array_values($data)[0])->addData(array_keys($data)[1], array_values($data)[1])->setHeader($pageHeader)->setSubHeader($pageSubHeader)->setType($pageType)->setTitle("Page Title")->setBaseHref(".")->addBreadCrumb(array_keys($breadCrumbs)[0], array_values($breadCrumbs)[0])->build(); // Add project CSS and JS $cssFile1 = "/path/to/file/1.css"; $cssFile2 = "/path/to/file/2.css"; $jsFile1 = "/path/to/file/1.js"; $jsFile2 = "/path/to/file/2.js"; Settings::getInstance()->addProjectCSS($cssFile1); Settings::getInstance()->addProjectCSS($cssFile2); Settings::getInstance()->addProjectJS($jsFile1); Settings::getInstance()->addProjectJS($jsFile2); // Provide a request URI, for the page's hash function $requestURI = (string) rand(); $_SERVER["REQUEST_URI"] = $requestURI; // Get result and strip quotes, for easier analysis $result = $this->stripQuotes($writer->visitPage($page)); $this->assertContains("<html>", $result); $this->assertContains("<head>", $result); $this->assertContains("<title>Page Title</title>", $result); $this->assertContains("<base href=.", $result); $this->assertContains("</head>", $result); $this->assertContains("<body id={$id}", $result); $this->assertContains("class=" . implode(" ", $classes), $result); $this->assertContains("data-" . array_keys($data)[0] . "=" . array_values($data)[0], $result); $this->assertContains("data-" . array_keys($data)[1] . "=" . array_values($data)[1], $result); $this->assertContains("href=" . array_values($breadCrumbs)[0] . ">" . array_keys($breadCrumbs)[0] . "</a>", $result); $this->assertRegExp("/h1.*class=header.*{$pageHeader}.*h1/s", $result); $this->assertRegExp("/h2.*class=subheader.*{$pageSubHeader}.*h2/s", $result); $this->assertContains("<div class=section-label >Label</div>", $result); $this->assertContains($cssFile1, $result); $this->assertContains($cssFile2, $result); $this->assertContains($jsFile1, $result); $this->assertContains($jsFile2, $result); }