ILIAS  release_8 Revision v8.24
ComponentRendererFSLoaderTest.php
Go to the documentation of this file.
1<?php
2
3declare(strict_types=1);
4
21require_once(__DIR__ . "/TestComponent.php");
22
24use PHPUnit\Framework\TestCase;
26use ILIAS\Refinery\Factory as Refinery;
27use PHPUnit\Framework\MockObject\MockObject;
30
31class ComponentRendererFSLoaderTest extends TestCase
32{
41
43 {
44 $ui_factory = $this->getMockBuilder(ILIAS\UI\Factory::class)->getMock();
45 $tpl_factory = $this->getMockBuilder(I\Render\TemplateFactory::class)->getMock();
46 $lng = $this->getMockBuilder(ilLanguage::class)->disableOriginalConstructor()->getMock();
47 $js_binding = $this->getMockBuilder(I\Render\JavaScriptBinding::class)->getMock();
48 $refinery_mock = $this->getMockBuilder(Refinery::class)
49 ->disableOriginalConstructor()
50 ->getMock();
51 $image_path_resolver = $this->getMockBuilder(ILIAS\UI\Implementation\Render\ImagePathResolver::class)
52 ->getMock();
53 $data_factory = $this->getMockBuilder(ILIAS\Data\Factory::class)->getMock();
54
55 $default_renderer_factory = new I\Render\DefaultRendererFactory(
56 $ui_factory,
57 $tpl_factory,
58 $lng,
59 $js_binding,
60 $refinery_mock,
61 $image_path_resolver,
62 $data_factory,
63 );
64 $this->glyph_renderer = $this->createMock(I\Render\RendererFactory::class);
65 $this->icon_renderer = $this->createMock(I\Render\RendererFactory::class);
66
67 $field_renderer = $this->createMock(I\Render\RendererFactory::class);
68 return new FSLoader($default_renderer_factory, $this->glyph_renderer, $this->icon_renderer, $field_renderer);
69 }
70
71 public function test_getRenderer_successfully(): void
72 {
73 // There should be a renderer for Glyph...
75 $component = new I\Component\Button\Standard("", "");
76 $r = $f->getRendererFor($component, []);
77 $this->assertInstanceOf(I\Render\ComponentRenderer::class, $r);
78 }
79
81 {
82 // There should be a renderer for Glyph...
84 $component = new I\Component\Symbol\Glyph\Glyph("up", "up");
85 $context = $this->createMock(Component::class);
86 $renderer = $this->createMock(I\Render\ComponentRenderer::class);
87
88 $context_name = "foo";
90 ->expects($this->once())
91 ->method("getCanonicalName")
92 ->willReturn($context_name);
93
94 $this->glyph_renderer
95 ->expects($this->once())
96 ->method("getRendererInContext")
97 ->with($component, [$context_name])
98 ->willReturn($renderer);
99
100 $r = $f->getRendererFor($component, [$context]);
101
102 $this->assertEquals($renderer, $r);
103 }
104
106 {
107 $loader = $this->getMockBuilder(ILIAS\UI\Implementation\Render\FSLoader::class)
108 ->onlyMethods(["getRendererFactoryFor", "getContextNames"])
109 ->disableOriginalConstructor()
110 ->getMock();
111 $factory = $this->getMockBuilder(ILIAS\UI\Implementation\Render\RendererFactory::class)
112 ->getMock();
113
114 $rendered_component = $this->createMock(ILIAS\UI\Component\Component::class);
115
116 $component1 = $this->createMock(ILIAS\UI\Component\Component::class);
117 $component2 = $this->createMock(ILIAS\UI\Component\Component::class);
118 $component_name1 = "COMPONENT 1";
119 $component_name2 = "COMPONENT 2";
120
121 $loader
122 ->expects($this->once())
123 ->method("getContextNames")
124 ->with([$component1, $component2])
125 ->willReturn([$component_name1, $component_name2]);
126
127 $loader
128 ->expects($this->once())
129 ->method("getRendererFactoryFor")
130 ->with($rendered_component)
131 ->willReturn($factory);
132
133 $renderer = $this->createMock(ComponentRenderer::class);
135 ->expects($this->once())
136 ->method("getRendererInContext")
137 ->with($rendered_component, [$component_name1, $component_name2])
138 ->willReturn($renderer);
139
140 $renderer2 = $loader->getRendererFor($rendered_component, [$component1, $component2]);
141 $this->assertEquals($renderer, $renderer2);
142 }
143}
Builds data types.
Definition: Factory.php:21
Loads renderers for components from the file system.
Definition: FSLoader.php:40
A component is the most general form of an entity in the UI.
Definition: Component.php:28
An entity that renders components to a string output.
$factory
Definition: metadata.php:75
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$lng
$context
Definition: webdav.php:29