19 declare(strict_types=1);
21 require_once(__DIR__ .
"/TestComponent.php");
22 require_once(__DIR__ .
"/../Base.php");
45 $dr = $this->getDefaultRenderer();
46 $r = $dr->_getRendererFor(
new Glyph(
"up",
"up"));
47 $this->assertInstanceOf(ComponentRenderer::class,
$r);
52 $dr = $this->getDefaultRenderer();
53 $r1 = $dr->_getRendererFor(
new Glyph(
"up",
"up"));
54 $r2 = $dr->_getRendererFor(
new Glyph(
"up",
"up"));
55 $this->assertTrue($r1 === $r2,
"Instances not equal");
60 $this->resource_registry = parent::getResourceRegistry();
66 $dr = $this->getDefaultRenderer();
69 $dr->render($component);
71 $this->assertEquals(array(
"test.js"), $this->resource_registry->resources);
85 $component_renderer = $this->createMock(ComponentRenderer::class);
86 $component_renderer->method(
'render')->willReturnCallback(
93 return match ($component->text) {
94 $component1->text => $component1->text . $glue . $renderer->
render($component2),
95 $component2->text => $component2->text . $glue . $renderer->
render($component3),
96 $component3->text => $component3->text,
101 $renderer =
new class (
102 $this->createMock(Render\Loader::class),
103 $this->createMock(JavaScriptBinding::class),
107 public array $context_history = [];
110 Render\
Loader $component_renderer_loader,
123 protected function pushContext(
Component $component):
void 125 parent::pushContext($component);
126 $this->context_history[] = $this->getContexts();
129 protected function popContext():
void 131 parent::popContext();
132 $this->context_history[] = $this->getContexts();
136 $expected_context_history = [
138 [$component1, $component2],
139 [$component1, $component2, $component3],
140 [$component1, $component2],
146 $component1->text . $glue .
147 $component2->text . $glue .
150 $html = $renderer->
render($component1);
152 $this->assertEquals($expected_context_history, $renderer->context_history);
153 $this->assertEquals($expected_html, $html);
161 $this->assertEquals(
"foo", $html);
169 $this->getTemplateFactory()->getTemplate(
"tpl.main.html",
false,
false)
173 $this->assertEquals(
"foo", $html);
180 new ilJavaScriptBinding($this->getTemplateFactory()->getTemplate(
"tpl.main.html",
false,
false))
183 $this->assertEquals(
'foo<script data-replace-marker="script">id:foo.id content:foo</script>', $html);
191 new ilJavaScriptBinding($this->getTemplateFactory()->getTemplate(
"tpl.main.html",
false,
false))
194 $this->assertEquals(
'foo<script data-replace-marker="script">id:foo.id content:foo</script>', $html);
196 $this->assertEquals(
"foo", $html);
198 $this->assertEquals(
'foo<script data-replace-marker="script">id:foo.id content:foo</script>', $html);
206 new ilJavaScriptBinding($this->getTemplateFactory()->getTemplate(
"tpl.main.html",
false,
false))
208 $html =
$renderer->renderAsync([$c1,$c1]);
209 $this->assertEquals(
'foofoo', $html);
217 $this->component_renderer = $this->createMock(ComponentRenderer::class);
218 $component = $this->createMock(
C\Component::class);
220 $loader = $this->createMock(Loader::class);
221 $loader->method(
'getRendererFor')->willReturn($this->component_renderer);
225 $this->component_renderer->expects($this->once())
237 $this->component_renderer = $this->createMock(ComponentRenderer::class);
238 $component = $this->createMock(
C\Component::class);
239 $root = $this->createMock(Renderer::class);
241 $loader = $this->createMock(Loader::class);
242 $loader->method(
'getRendererFor')->willReturn($this->component_renderer);
246 $this->component_renderer->expects($this->once())
248 ->with($component, $root);
250 $renderer->$render_type($component, $root);
263 $component = $this->createMock(
C\Component::class);
264 $root = $this->createMock(Renderer::class);
268 $root->expects($this->exactly(2))
274 $this->assertEquals(
"..",
$res);
render($component, ?Renderer $root=null)
Render given component.If an array of components is passed, this method returns a concatenated output...
Interface Observer Contains several chained tasks and infos about them.
An entity that renders components to a string output.
Wraps global ilTemplate to provide JavaScriptBinding.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
testRenderingChainAndContextStack()
Simulates the rendering chain and tests if the contexts are properly stacked.
testGetRendererSuccessfully()
ComponentRenderer $component_renderer
testComponentListUsesRootToRender()
Provides methods to interface with javascript.
testPassesSelfAsRootIfNoRootExist($render_type)
getRenderType
LoggingRegistry $resource_registry
testPassesOtherOnAsRoot($render_type)
getRenderType
__construct(Container $dic, ilPlugin $plugin)
testRenderAsyncWithJsTwice()
Loads renderers for components.