From 2c58978668f61f12d0b35d76217cc6bd7edb03ec Mon Sep 17 00:00:00 2001 From: Jake Date: Tue, 17 Jul 2018 22:08:53 +0100 Subject: [PATCH] feat(TwigRenderer): Expose the TwigFilesystem prependPath method --- src/TwigRenderer.php | 9 +++++++++ test/TwigRendererTest.php | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/TwigRenderer.php b/src/TwigRenderer.php index 72956b5..111596f 100644 --- a/src/TwigRenderer.php +++ b/src/TwigRenderer.php @@ -107,6 +107,15 @@ public function addPath(string $path, string $namespace = null) : void $this->twigLoader->addPath($path, $namespace); } + /** + * Prepend a path for template + */ + public function prependPath(string $path, string $namespace = null) : void + { + $namespace = $namespace ?: TwigFilesystem::MAIN_NAMESPACE; + $this->twigLoader->prependPath($path, $namespace); + } + /** * Get the template directories * diff --git a/test/TwigRendererTest.php b/test/TwigRendererTest.php index d4e8bbf..e6c3209 100644 --- a/test/TwigRendererTest.php +++ b/test/TwigRendererTest.php @@ -116,6 +116,32 @@ public function testCanAddPathWithNamespace() $this->assertTemplatePathNamespace('test', $paths[0]); } + public function testCanPrependPathWithEmptyNamespace() + { + $renderer = new TwigRenderer(); + $renderer->addPath(__DIR__ . '/TestAsset/test'); + $renderer->prependPath(__DIR__ . '/TestAsset'); + $paths = $renderer->getPaths(); + $this->assertInternalType('array', $paths); + $this->assertCount(2, $paths); + $this->assertTemplatePath(__DIR__ . '/TestAsset', $paths[0]); + $this->assertTemplatePathString(__DIR__ . '/TestAsset', $paths[0]); + $this->assertEmptyTemplatePathNamespace($paths[0]); + } + + public function testCanPrependPathWithNamespace() + { + $renderer = new TwigRenderer(); + $renderer->addPath(__DIR__ . '/TestAsset/test', 'test'); + $renderer->prependPath(__DIR__ . '/TestAsset', 'test'); + $paths = $renderer->getPaths(); + $this->assertInternalType('array', $paths); + $this->assertCount(2, $paths); + $this->assertTemplatePath(__DIR__ . '/TestAsset', $paths[0]); + $this->assertTemplatePathString(__DIR__ . '/TestAsset', $paths[0]); + $this->assertTemplatePathNamespace('test', $paths[0]); + } + public function testDelegatesRenderingToUnderlyingImplementation() { $renderer = new TwigRenderer();