public function testGlobalsGetPassedToTemplate() { $engine = new ProjectTemplateEngine(new TemplateNameParser(), $this->loader); $engine->addGlobal('global', 'global variable'); $this->loader->setTemplate('global.php', '<?php echo $global; ?>'); $this->assertEquals($engine->render('global.php'), 'global variable'); $this->assertEquals($engine->render('global.php', array('global' => 'overwritten')), 'overwritten'); }
public function testExtendRender() { $engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper())); try { $engine->render('name'); $this->fail('->render() throws an InvalidArgumentException if the template does not exist'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->render() throws an InvalidArgumentException if the template does not exist'); $this->assertEquals('The template "name" does not exist (renderer: php).', $e->getMessage(), '->render() throws an InvalidArgumentException if the template does not exist'); } try { self::$loader->setTemplate('name.foo', 'foo'); $engine->render('foo:name'); $this->fail('->render() throws an InvalidArgumentException if no renderer is registered for the given renderer'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->render() throws an InvalidArgumentException if no renderer is registered for the given renderer'); $this->assertEquals('The template "foo:name" does not exist (renderer: name).', $e->getMessage(), '->render() throws an InvalidArgumentException if no renderer is registered for the given renderer'); } $engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper())); $engine->set(new \SimpleHelper('bar')); self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $view[\'foo\'].$foo ?>'); self::$loader->setTemplate('layout.php', '-<?php echo $view[\'slots\']->get("_content") ?>-'); $this->assertEquals('-barfoo-', $engine->render('foo', array('foo' => 'foo')), '->render() uses the decorator to decorate the template'); $engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper())); $engine->set(new \SimpleHelper('bar')); self::$loader->setTemplate('bar.php', 'bar'); self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>'); self::$loader->setTemplate('layout.php', '<?php echo $view->render("bar") ?>-<?php echo $view[\'slots\']->get("_content") ?>-'); $this->assertEquals('bar-foo-', $engine->render('foo', array('foo' => 'foo', 'bar' => 'bar')), '->render() supports render() calls in templates'); }