ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ComponentRendererFSLoaderTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
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  $help_text_retriever = $this->createMock(ILIAS\UI\HelpTextRetriever::class);
55  $upload_limit_resolver = $this->createMock(ILIAS\UI\Implementation\Component\Input\UploadLimitResolver::class);
56 
57  $default_renderer_factory = new I\Render\DefaultRendererFactory(
58  $ui_factory,
59  $tpl_factory,
60  $lng,
61  $js_binding,
62  $refinery_mock,
63  $image_path_resolver,
64  $data_factory,
65  $help_text_retriever,
66  $upload_limit_resolver,
67  );
68  $this->glyph_renderer = $this->createMock(I\Render\RendererFactory::class);
69  $this->icon_renderer = $this->createMock(I\Render\RendererFactory::class);
70 
71  $field_renderer = $this->createMock(I\Render\RendererFactory::class);
72  return new FSLoader($default_renderer_factory, $this->glyph_renderer, $this->icon_renderer, $field_renderer);
73  }
74 
75  public function testGetRendererSuccessfully(): void
76  {
77  // There should be a renderer for Glyph...
79  $component = new I\Component\Button\Standard("", "");
80  $r = $f->getRendererFor($component, []);
81  $this->assertInstanceOf(I\Render\ComponentRenderer::class, $r);
82  }
83 
84  public function testGetRendererSuccessfullyExtra(): void
85  {
86  // There should be a renderer for Glyph...
88  $component = new I\Component\Symbol\Glyph\Glyph("up", "up");
89  $context = $this->createMock(Component::class);
90  $renderer = $this->createMock(I\Render\ComponentRenderer::class);
91 
92  $context_name = "foo";
93  $context
94  ->expects($this->once())
95  ->method("getCanonicalName")
96  ->willReturn($context_name);
97 
98  $this->glyph_renderer
99  ->expects($this->once())
100  ->method("getRendererInContext")
101  ->with($component, [$context_name])
102  ->willReturn($renderer);
103 
104  $r = $f->getRendererFor($component, [$context]);
105 
106  $this->assertEquals($renderer, $r);
107  }
108 
109  public function testGetRendererUsesRendererFactory(): void
110  {
111  $loader = $this->getMockBuilder(ILIAS\UI\Implementation\Render\FSLoader::class)
112  ->onlyMethods(["getRendererFactoryFor", "getContextNames"])
113  ->disableOriginalConstructor()
114  ->getMock();
115  $factory = $this->getMockBuilder(ILIAS\UI\Implementation\Render\RendererFactory::class)
116  ->getMock();
117 
118  $rendered_component = $this->createMock(ILIAS\UI\Component\Component::class);
119 
120  $component1 = $this->createMock(ILIAS\UI\Component\Component::class);
121  $component2 = $this->createMock(ILIAS\UI\Component\Component::class);
122  $component_name1 = "COMPONENT 1";
123  $component_name2 = "COMPONENT 2";
124 
125  $loader
126  ->expects($this->once())
127  ->method("getContextNames")
128  ->with([$component1, $component2])
129  ->willReturn([$component_name1, $component_name2]);
130 
131  $loader
132  ->expects($this->once())
133  ->method("getRendererFactoryFor")
134  ->with($rendered_component)
135  ->willReturn($factory);
136 
137  $renderer = $this->createMock(ComponentRenderer::class);
138  $factory
139  ->expects($this->once())
140  ->method("getRendererInContext")
141  ->with($rendered_component, [$component_name1, $component_name2])
142  ->willReturn($renderer);
143 
144  $renderer2 = $loader->getRendererFor($rendered_component, [$component1, $component2]);
145  $this->assertEquals($renderer, $renderer2);
146  }
147 }
$context
Definition: webdav.php:31
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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...
$lng
$r