ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
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 
5 require_once(__DIR__ . "/TestComponent.php");
6 
7 use \ILIAS\UI\Implementation as I;
9 
11 {
12  public function _instantiateRendererFor($class)
13  {
14  return $this->instantiateRendererFor($class);
15  }
16 }
17 
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...
48  $f = $this->getComponentRendererFSLoader();
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...
57  $f = $this->getComponentRendererFSLoader();
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";
63  $context
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";
109  $factory
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 }
$context
Definition: webdav.php:26
Class Factory.
Class ChatMainBarProvider .
$lng
$factory
Definition: metadata.php:58