From e934fd095a6aeeca292c45dcab15a20d723500aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edi=20Modri=C4=87?= Date: Wed, 21 Jun 2017 11:22:31 +0200 Subject: [PATCH] Use the decorated parser if bundle does not exist --- .../ThemeBundle/Templating/TemplateNameParser.php | 2 +- .../spec/Templating/TemplateNameParserSpec.php | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Sylius/Bundle/ThemeBundle/Templating/TemplateNameParser.php b/src/Sylius/Bundle/ThemeBundle/Templating/TemplateNameParser.php index ce196d89fe..17aca544de 100644 --- a/src/Sylius/Bundle/ThemeBundle/Templating/TemplateNameParser.php +++ b/src/Sylius/Bundle/ThemeBundle/Templating/TemplateNameParser.php @@ -76,7 +76,7 @@ final class TemplateNameParser implements TemplateNameParserInterface try { $this->kernel->getBundle($template->get('bundle')); } catch (\Exception $e) { - throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e); + return $this->decoratedParser->parse($name); } } diff --git a/src/Sylius/Bundle/ThemeBundle/spec/Templating/TemplateNameParserSpec.php b/src/Sylius/Bundle/ThemeBundle/spec/Templating/TemplateNameParserSpec.php index 27985d7048..6415f98f69 100644 --- a/src/Sylius/Bundle/ThemeBundle/spec/Templating/TemplateNameParserSpec.php +++ b/src/Sylius/Bundle/ThemeBundle/spec/Templating/TemplateNameParserSpec.php @@ -63,11 +63,16 @@ final class TemplateNameParserSpec extends ObjectBehavior $this->parse('@Acme/Nested/Directory/app.html.twig')->shouldBeLike(new TemplateReference('AcmeBundle', 'Nested/Directory', 'app', 'html', 'twig')); } - function it_throws_an_exception_if_namespaced_path_references_not_existing_bundle(KernelInterface $kernel) - { - $kernel->getBundle('AcmeBundle')->willThrow(\Exception::class); + function it_delegates_custom_namespace_to_decorated_parser( + KernelInterface $kernel, + TemplateNameParserInterface $decoratedParser, + TemplateReferenceInterface $templateReference + ) { + $kernel->getBundle('myBundle')->willThrow(\Exception::class); - $this->shouldThrow(\InvalidArgumentException::class)->during('parse', ['@Acme/app.html.twig']); + $decoratedParser->parse('@my/custom/namespace.html.twig')->willReturn($templateReference); + + $this->parse('@my/custom/namespace.html.twig')->shouldReturn($templateReference); } function it_generates_template_references_from_root_namespaced_paths()