ILIAS  release_8 Revision v8.23
ComponentRendererFSLoaderTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
21 require_once(__DIR__ . "/TestComponent.php");
22 
30 
31 class ComponentRendererFSLoaderTest extends TestCase
32 {
36  private $glyph_renderer;
40  private $icon_renderer;
41 
42  protected function getComponentRendererFSLoader(): FSLoader
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 
80  public function test_getRenderer_successfully_extra(): void
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";
89  $context
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);
134  $factory
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 }
$context
Definition: webdav.php:29
Class Factory.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$lng
Loads renderers for components from the file system.
Definition: FSLoader.php:39
Class ChatMainBarProvider .
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$factory
Definition: metadata.php:75