diff --git a/src/Widget/Renderer/SimpleWidgetRenderer.php b/src/Widget/Renderer/SimpleWidgetRenderer.php index ede08b8f..7a70012c 100644 --- a/src/Widget/Renderer/SimpleWidgetRenderer.php +++ b/src/Widget/Renderer/SimpleWidgetRenderer.php @@ -11,7 +11,6 @@ namespace App\Widget\Renderer; use App\Widget\Type\SimpleWidget; use App\Widget\WidgetInterface; -use ReflectionClass; class SimpleWidgetRenderer extends AbstractTwigRenderer { @@ -20,11 +19,18 @@ class SimpleWidgetRenderer extends AbstractTwigRenderer return $widget instanceof SimpleWidget; } + /** + * @param SimpleWidget $widget + * @param array $options + * @return string + * @throws \ReflectionException + * @throws \Twig\Error\LoaderError + * @throws \Twig\Error\RuntimeError + * @throws \Twig\Error\SyntaxError + */ public function render(WidgetInterface $widget, array $options = []): string { - $name = (new ReflectionClass($widget))->getShortName(); - - return $this->renderTemplate(sprintf('widget/widget-%s.html.twig', strtolower($name)), [ + return $this->renderTemplate($widget->getTemplateName(), [ 'data' => $widget->getData($options), 'options' => $widget->getOptions($options), 'title' => $widget->getTitle(), diff --git a/src/Widget/Type/SimpleWidget.php b/src/Widget/Type/SimpleWidget.php index e5391953..0683e6c6 100644 --- a/src/Widget/Type/SimpleWidget.php +++ b/src/Widget/Type/SimpleWidget.php @@ -11,4 +11,10 @@ namespace App\Widget\Type; class SimpleWidget extends AbstractWidgetType { + public function getTemplateName(): string + { + $name = (new \ReflectionClass($this))->getShortName(); + + return sprintf('widget/widget-%s.html.twig', strtolower($name)); + } } diff --git a/tests/Widget/Type/CounterTest.php b/tests/Widget/Type/CounterTest.php index 4cbca68e..fb8527e8 100644 --- a/tests/Widget/Type/CounterTest.php +++ b/tests/Widget/Type/CounterTest.php @@ -15,6 +15,7 @@ use App\Widget\Type\SimpleWidget; /** * @covers \App\Widget\Type\Counter + * @covers \App\Widget\Type\SimpleWidget */ class CounterTest extends AbstractWidgetTypeTest { @@ -33,4 +34,10 @@ class CounterTest extends AbstractWidgetTypeTest $sut = $this->createSut(); self::assertInstanceOf(SimpleWidget::class, $sut); } + + public function testTemplateName() + { + $sut = new Counter(); + self::assertEquals('widget/widget-counter.html.twig', $sut->getTemplateName()); + } } diff --git a/tests/Widget/Type/MoreTest.php b/tests/Widget/Type/MoreTest.php index 78c225fc..7b66ecea 100644 --- a/tests/Widget/Type/MoreTest.php +++ b/tests/Widget/Type/MoreTest.php @@ -15,6 +15,7 @@ use App\Widget\Type\SimpleWidget; /** * @covers \App\Widget\Type\More + * @covers \App\Widget\Type\SimpleWidget */ class MoreTest extends AbstractWidgetTypeTest { @@ -33,4 +34,10 @@ class MoreTest extends AbstractWidgetTypeTest $sut = $this->createSut(); self::assertInstanceOf(SimpleWidget::class, $sut); } + + public function testTemplateName() + { + $sut = new More(); + self::assertEquals('widget/widget-more.html.twig', $sut->getTemplateName()); + } }