From 3f84cd398a1351018ae09984441a23a04bb83c47 Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Fri, 14 Jun 2013 13:44:33 +0100 Subject: [PATCH] [Templating] Made DelegatingEngine::getEngine() public. --- .../Component/Templating/DelegatingEngine.php | 2 +- .../Templating/Tests/DelegatingEngineTest.php | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Templating/DelegatingEngine.php b/src/Symfony/Component/Templating/DelegatingEngine.php index cd37051943..4688114a7b 100644 --- a/src/Symfony/Component/Templating/DelegatingEngine.php +++ b/src/Symfony/Component/Templating/DelegatingEngine.php @@ -114,7 +114,7 @@ class DelegatingEngine implements EngineInterface, StreamingEngineInterface * * @api */ - protected function getEngine($name) + public function getEngine($name) { foreach ($this->engines as $engine) { if ($engine->supports($name)) { diff --git a/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php b/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php index 1c9e45faac..93b3501433 100644 --- a/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php +++ b/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php @@ -104,6 +104,29 @@ class DelegatingEngineTest extends \PHPUnit_Framework_TestCase $this->assertFalse($delegatingEngine->supports('template.php')); } + public function testGetExistingEngine() + { + $firstEngine = $this->getEngineMock('template.php', false); + $secondEngine = $this->getEngineMock('template.php', true); + + $delegatingEngine = new DelegatingEngine(array($firstEngine, $secondEngine)); + + $this->assertSame($secondEngine, $delegatingEngine->getEngine('template.php', array('foo' => 'bar'))); + } + + /** + * @expectedException \RuntimeException + * @expectedExceptionMessage No engine is able to work with the template "template.php" + */ + public function testGetInvalidEngine() + { + $firstEngine = $this->getEngineMock('template.php', false); + $secondEngine = $this->getEngineMock('template.php', false); + + $delegatingEngine = new DelegatingEngine(array($firstEngine, $secondEngine)); + $delegatingEngine->getEngine('template.php', array('foo' => 'bar')); + } + private function getEngineMock($template, $supports) { $engine = $this->getMock('Symfony\Component\Templating\EngineInterface');