ILIAS  release_7 Revision v7.30-3-g800a261c036
ComponentRendererFSLoaderTest.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 2017 Richard Klees <richard.klees@concepts-and-training.de> Extended GPL, see docs/LICENSE */
4
5require_once(__DIR__ . "/TestComponent.php");
6
7use \ILIAS\UI\Implementation as I;
8use PHPUnit\Framework\TestCase;
9
11{
12 public function _instantiateRendererFor($class)
13 {
14 return $this->instantiateRendererFor($class);
15 }
16}
17
18class ComponentRendererFSLoaderTest extends TestCase
19{
20 protected function getComponentRendererFSLoader()
21 {
22 $ui_factory = $this->getMockBuilder(ILIAS\UI\Factory::class)->getMock();
23 $tpl_factory = $this->getMockBuilder(I\Render\TemplateFactory::class)->getMock();
24 $lng = $this->getMockBuilder(\ilLanguage::class)->disableOriginalConstructor()->getMock();
25 $js_binding = $this->getMockBuilder(I\Render\JavaScriptBinding::class)->getMock();
26 $refinery_mock = $this->getMockBuilder(\ILIAS\Refinery\Factory::class)
27 ->disableOriginalConstructor()
28 ->getMock();
29 $image_path_resolver = $this->getMockBuilder(ILIAS\UI\Implementation\Render\ImagePathResolver::class)
30 ->getMock();
31
32 $default_renderer_factory = new I\Render\DefaultRendererFactory(
33 $ui_factory,
34 $tpl_factory,
35 $lng,
36 $js_binding,
37 $refinery_mock,
38 $image_path_resolver
39 );
40 $this->glyph_renderer = $this->createMock(I\Render\RendererFactory::class);
41 $this->field_renderer = $this->createMock(I\Render\RendererFactory::class);
42 return new ComponentRendererFSLoaderTesting($default_renderer_factory, $this->glyph_renderer, $this->field_renderer);
43 }
44
46 {
47 // There should be a renderer for Glyph...
49 $component = new I\Component\Button\Standard("", "");
50 $r = $f->getRendererFor($component, []);
51 $this->assertInstanceOf(I\Render\ComponentRenderer::class, $r);
52 }
53
55 {
56 // There should be a renderer for Glyph...
58 $component = new I\Component\Symbol\Glyph\Glyph("up", "up");
59 $context = $this->createMock(\ILIAS\UI\Component\Component::class);
60 $renderer = $this->createMock(I\Render\ComponentRenderer::class);
61
62 $context_name = "foo";
64 ->expects($this->once())
65 ->method("getCanonicalName")
66 ->willReturn($context_name);
67
68 $this->glyph_renderer
69 ->expects($this->once())
70 ->method("getRendererInContext")
71 ->with($component, [$context_name])
72 ->willReturn($renderer);
73
74 $r = $f->getRendererFor($component, [$context]);
75
76 $this->assertEquals($renderer, $r);
77 }
78
80 {
81 $loader = $this->getMockBuilder(ILIAS\UI\Implementation\Render\FSLoader::class)
82 ->setMethods(["getRendererFactoryFor", "getContextNames"])
83 ->disableOriginalConstructor()
84 ->getMock();
85 $factory = $this->getMockBuilder(ILIAS\UI\Implementation\RendererFactory::class)
86 ->setMethods(["getRendererInContext"])
87 ->getMock();
88
89 $rendered_component = $this->createMock(ILIAS\UI\Component\Component::class);
90
91 $component1 = $this->createMock(ILIAS\UI\Component\Component::class);
92 $component2 = $this->createMock(ILIAS\UI\Component\Component::class);
93 $component_name1 = "COMPONENT 1";
94 $component_name2 = "COMPONENT 2";
95
96 $loader
97 ->expects($this->once())
98 ->method("getContextNames")
99 ->with([$component1, $component2])
100 ->willReturn([$component_name1, $component_name2]);
101
102 $loader
103 ->expects($this->once())
104 ->method("getRendererFactoryFor")
105 ->with($rendered_component)
106 ->willReturn($factory);
107
108 $renderer = "RENDERER";
110 ->expects($this->once())
111 ->method("getRendererInContext")
112 ->with($rendered_component, [$component_name1, $component_name2])
113 ->willReturn($renderer);
114
115 $renderer2 = $loader->getRendererFor($rendered_component, [$component1, $component2]);
116 $this->assertEquals($renderer, $renderer2);
117 }
118}
An exception for terminatinating execution or to throw for unit testing.
Loads renderers for components from the file system.
Definition: FSLoader.php:21
$factory
Definition: metadata.php:58
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$lng
$context
Definition: webdav.php:26