Hello, world! ]]> '; } } /** * GadgetRendererTest test case. */ class GadgetHtmlRendererTest extends PHPUnit_Framework_TestCase { /** * @var Gadget */ private $gadget; /** * @var GadgetContext */ private $gadgetContext; /** * @var GadgetHtmlRender */ private $gadgetHtmlRenderer; /** * @var view */ private $view; /** * @var DomElement */ private $domElement; /** * @var DomDocument */ private $domDocument; /** * Prepares the environment before running a test. */ protected function setUp() { parent::setUp(); $this->gadgetContext = new GadgetContext('GADGET'); $gadgetSpecFactory = new MockHtmlGadgetFactory($this->gadgetContext, null); $gadgetSpecFactory->fetchGadget = null; $this->gadget = $gadgetSpecFactory->createGadget(); // init gadgetRenderer; $this->GadgetHtmlRenderer = new GadgetHtmlRenderer($this->gadgetContext); // init $this->doc $this->domDocument = new DOMDocument(null, 'utf-8'); $this->domDocument->preserveWhiteSpace = true; $this->domDocument->formatOutput = false; $this->domDocument->strictErrorChecking = false; $this->domDocument->recover = false; // init $this->element $this->domElement = $this->domDocument->createElement('test'); } /** * Cleans up the environment after running a test. */ protected function tearDown() { $this->gadget = null; $this->gadgetContext = null; $this->GadgetHtmlRenderer = null; $this->view = null; $this->domDocument = null; $this->domElement = null; parent::tearDown(); } /** * Tests GadgetHtmlRenderer->renderGadget() */ public function testRenderGadget() { ob_start(); $this->GadgetHtmlRenderer->renderGadget($this->gadget, $this->view); ob_end_clean(); } /** * Tests GadgetHtmlRenderer->addBodyTags() */ public function testAddBodyTags() { $this->GadgetHtmlRenderer->addBodyTags($this->domElement, $this->domDocument); $tmpNodeList = $this->domElement->getElementsByTagName("script"); foreach($tmpNodeList as $tmpNode) { $this->assertEquals('gadgets.util.runOnLoadHandlers();', $tmpNode->nodeValue); } } /** * Tests GadgetHtmlRenderer->addHeadTags() */ public function testAddHeadTags() { ob_start(); $this->GadgetHtmlRenderer->renderGadget($this->gadget, $this->view); ob_end_clean(); $this->GadgetHtmlRenderer->addHeadTags($this->domElement, $this->domDocument); // TODO: currently we just test the script part $tmpNodeList = $this->domElement->getElementsByTagName("script"); $scripts = $this->GadgetHtmlRenderer->getJavaScripts(); $idx = 0; foreach($tmpNodeList as $tmpNode) { $script = $scripts[$idx++]; if ($script['type'] == 'inline') { $this->assertEquals('text/javascript', $tmpNode->getAttribute('type')); $this->assertEquals(trim($script['content']), trim($tmpNode->nodeValue)); } else { $this->assertEquals($script['content'], $tmpNode->getAttribute('src')); } } } } ?>