'[Hello, reference!]'], $zone = RequestZone::BACKEND): Widgets { $queueProcessor = new QueueProcessor(new HtmlInjector()); $requestStack = new RequestStack(); $request = Request::createFromGlobals(); RequestZone::setToRequest($request, $zone); $requestStack->push($request); $loader = new ArrayLoader($templates); $twig = new Environment($loader); $cache = new TraceableAdapter(new FilesystemAdapter()); $stopwatch = new Stopwatch(); return new Widgets($requestStack, $queueProcessor, $twig, $cache, $stopwatch); } public function testProcessWidgetsInQueue(): void { $widgets = $this->getWidgetsObject(); $response = new Response('foo'); $snippet = (new SnippetWidget()) ->setTemplate('*foo*') ->setZone(RequestZone::EVERYWHERE) ->setTarget(Target::END_OF_BODY); $widgets->registerWidget($snippet); $widgets->processQueue($response); $this->assertSameHtml('foo*foo*', $response->getContent()); } public function testRenderWidget(): void { $widgets = $this->getWidgetsObject(); $referenceWidget = new ReferenceWidget(); $referenceWidget->setTemplate('reference.twig'); $widgets->registerWidget($referenceWidget); $this->assertSameHtml( '
[Hello, reference!]
', $widgets->renderWidgetByName('AcmeCorp ReferenceWidget') ); } public function testRenderWidgetWithExtraParameters(): void { $widgets = $this->getWidgetsObject(['dummy.twig' => '[Hello, {{ foo }}!]']); $widget = new DummyWidget(); $widget->setTemplate('dummy.twig'); $widgets->registerWidget($widget); $this->assertSameHtml( '
[Hello, Bar!]
', $widgets->renderWidgetByName('Dummy Widget', ['foo' => 'Bar']) ); } public function testProcessHeaderWidget(): void { $widgets = $this->getWidgetsObject([], RequestZone::FRONTEND); $response = new Response('foo'); $headerWidget = new BoltHeaderWidget(); $widgets->registerWidget($headerWidget); $widgets->processQueue($response); $this->assertSameHtml('Bolt', $response->headers->get('X-Powered-By')); } public function testProcessReferenceWidgetInTarget(): void { $widgets = $this->getWidgetsObject(); $response = new Response('foo'); $referenceWidget = new ReferenceWidget(); // overwrite things just to simplify test $referenceWidget->setTarget(Target::END_OF_BODY); $referenceWidget->setTemplate('reference.twig'); $widgets->registerWidget($referenceWidget); $widgets->processQueue($response); $this->assertSameHtml( 'foo
[Hello, reference!]
', $response->getContent() ); } public function testProcessReferenceWidgetInTarget2(): void { $widgets = $this->getWidgetsObject(); $response = new Response('foo'); $reference = new ReferenceWidget(); // overwrite things just to simplify test $reference->setTarget(Target::START_OF_BODY); $reference->setTemplate('reference.twig'); $widgets->registerWidget($reference); $widgets->processQueue($response); $this->assertSameHtml( '
[Hello, reference!]
foo', $response->getContent() ); } }