ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ComponentRendererLoaderCachingWrapperTest.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
5use PHPUnit\Framework\TestCase;
6
8{
10 {
11 $underlying = $this->getMockBuilder(\ILIAS\UI\Implementation\Render\Loader::class)
12 ->setMethods(["getRendererFor", "getRendererFactoryFor"])
13 ->getMock();
14
15 $renderer = new \stdClass();
16 $component = $this->getMockBuilder(\ILIAS\UI\Component\Component::class)->getMock();
17 $context = [new \ILIAS\UI\Component\Test\TestComponent("foo")];
18 $underlying
19 ->expects($this->once())
20 ->method("getRendererFor")
21 ->with($component, $context)
22 ->willReturn($renderer);
23
24 $l = new \ILIAS\UI\Implementation\Render\LoaderCachingWrapper($underlying);
25 $r = $l->getRendererFor($component, $context);
26
27 $this->assertSame($renderer, $r);
28 }
29
30 public function test_caches()
31 {
32 $underlying = $this->getMockBuilder(\ILIAS\UI\Implementation\Render\Loader::class)
33 ->setMethods(["getRendererFor", "getRendererFactoryFor"])
34 ->getMock();
35
36 $renderer = new \stdClass();
37 $component = $this->getMockBuilder(\ILIAS\UI\Component\Component::class)->getMock();
38 $underlying
39 ->expects($this->once())
40 ->method("getRendererFor")
41 ->with($component, [])
42 ->willReturn($renderer);
43
44 $l = new \ILIAS\UI\Implementation\Render\LoaderCachingWrapper($underlying);
45 $r1 = $l->getRendererFor($component, []);
46 $r2 = $l->getRendererFor($component, []);
47
48 $this->assertSame($renderer, $r1);
49 $this->assertSame($renderer, $r2);
50 }
51
53 {
54 $underlying = $this->getMockBuilder(\ILIAS\UI\Implementation\Render\Loader::class)
55 ->setMethods(["getRendererFor", "getRendererFactoryFor"])
56 ->getMock();
57
58 $renderer1 = new \stdClass();
59 $renderer2 = new \stdClass();
60 $c1 = $this->getMockBuilder(\ILIAS\UI\Component\Component::class)->getMock();
61 $c2 = new \ILIAS\UI\Component\Test\TestComponent("foo");
62 $underlying
63 ->expects($this->exactly(2))
64 ->method("getRendererFor")
65 ->withConsecutive([$c1, [] ], [$c1, [$c2]])
66 ->will($this->onConsecutiveCalls($renderer1, $renderer2));
67
68 $l = new \ILIAS\UI\Implementation\Render\LoaderCachingWrapper($underlying);
69 $r1 = $l->getRendererFor($c1, []);
70 $r2 = $l->getRendererFor($c1, [$c2]);
71 $r3 = $l->getRendererFor($c1, [$c2]);
72 $r4 = $l->getRendererFor($c1, []);
73
74 $this->assertSame($renderer1, $r1);
75 $this->assertSame($renderer2, $r2);
76 $this->assertSame($renderer2, $r3);
77 $this->assertSame($renderer1, $r4);
78 }
79
81 {
82 $underlying = $this->getMockBuilder(\ILIAS\UI\Implementation\Render\Loader::class)
83 ->setMethods(["getRendererFor", "getRendererFactoryFor"])
84 ->getMock();
85
86 $c1 = $this->createMock(\ILIAS\UI\Component\Component::class);
87
88 $factory = "FACTORY";
89 $underlying
90 ->expects($this->exactly(1))
91 ->method("getRendererFactoryFor")
92 ->with($c1)
93 ->willReturn($factory);
94
95 $l = new \ILIAS\UI\Implementation\Render\LoaderCachingWrapper($underlying);
96
97 $this->assertSame($factory, $l->getRendererFactoryFor($c1));
98 }
99}
An exception for terminatinating execution or to throw for unit testing.
$factory
Definition: metadata.php:58
Class ChatMainBarProvider \MainMenu\Provider.
Class Factory.
$context
Definition: webdav.php:26