Example #1
0
 /**
  * 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);
 }
Example #2
0
 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);
 }
Example #3
0
<?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();
Example #4
0
 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);
 }