ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
DropdownTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21require_once(__DIR__ . "/../../../../../../vendor/composer/vendor/autoload.php");
22require_once(__DIR__ . "/../../Base.php");
23
26
31{
32 protected function getFactory(): C\Dropdown\Factory
33 {
34 return new I\Component\Dropdown\Factory();
35 }
36
37 public function testImplementsFactoryInterface(): void
38 {
39 $f = $this->getFactory();
40
41 $this->assertInstanceOf("ILIAS\\UI\\Component\\Dropdown\\Standard", $f->standard(array()));
42 }
43
44 public function testWithLabel(): void
45 {
46 $f = $this->getFactory();
47
48 $c = $f->standard(array())->withLabel("label");
49
50 $this->assertEquals("label", $c->getLabel());
51 }
52
53 public function testWithItems(): void
54 {
55 $f = $this->getFactory();
56 $link = new I\Component\Link\Standard("Link to Github", "http://www.github.com");
57 $c = $f->standard(array(
58 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
59 new I\Component\Button\Shy("GitHub", "https://www.github.com"),
60 new I\Component\Divider\Horizontal(),
61 $link->withOpenInNewViewport(true)
62 ));
63 $items = $c->getItems();
64
65 $this->assertTrue(is_array($items));
66 $this->assertInstanceOf("ILIAS\\UI\\Component\\Button\\Shy", $items[0]);
67 $this->assertInstanceOf("ILIAS\\UI\\Component\\Divider\\Horizontal", $items[2]);
68 $this->assertInstanceOf("ILIAS\\UI\\Component\\Link\\Standard", $items[3]);
69 }
70
71 public function testRenderEmpty(): void
72 {
73 $f = $this->getFactory();
74 $r = $this->getDefaultRenderer();
75
76 $c = $f->standard(array());
77
78 $html = $r->render($c);
79 $expected = "";
80
81 $this->assertEquals($expected, $html);
82 }
83
84 public function testRenderItems(): void
85 {
86 $f = $this->getFactory();
87 $r = $this->getDefaultRenderer();
88
89 $c = $f->standard(array(
90 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
91 new I\Component\Divider\Horizontal(),
92 new I\Component\Button\Shy("GitHub", "https://www.github.com")
93 ));
94
95 $html = $r->render($c);
96
97 $expected = <<<EOT
98 <div class="dropdown" id="id_3">
99 <button class="btn btn-default dropdown-toggle" type="button" aria-label="actions" aria-haspopup="true" aria-expanded="false" aria-controls="id_3_menu">
100 <span class="caret"></span>
101 </button>
102 <ul id="id_3_menu" class="dropdown-menu">
103 <li><button class="btn btn-link" data-action="https://www.ilias.de" id="id_1">ILIAS</button></li>
104 <li><hr /></li>
105 <li><button class="btn btn-link" data-action="https://www.github.com" id="id_2">GitHub</button></li>
106 </ul>
107 </div>
108EOT;
109
110 $this->assertHTMLEquals($expected, $html);
111 }
112
113 public function testRenderItemsWithLabel(): void
114 {
115 $f = $this->getFactory();
116 $r = $this->getDefaultRenderer();
117
118 $c = $f->standard(array(
119 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
120 new I\Component\Divider\Horizontal(),
121 new I\Component\Button\Shy("GitHub", "https://www.github.com")
122 ))->withLabel("label");
123
124 $html = $r->render($c);
125
126 $expected = <<<EOT
127 <div class="dropdown" id="id_3"><button class="btn btn-default dropdown-toggle" type="button" aria-haspopup="true" aria-expanded="false" aria-controls="id_3_menu">label<span class="caret"></span></button>
128 <ul id="id_3_menu" class="dropdown-menu">
129 <li><button class="btn btn-link" data-action="https://www.ilias.de" id="id_1">ILIAS</button></li>
130 <li><hr /></li>
131 <li><button class="btn btn-link" data-action="https://www.github.com" id="id_2">GitHub</button></li>
132 </ul>
133 </div>
134EOT;
135
136 $this->assertHTMLEquals($expected, $html);
137 }
138
139 public function testRenderWithLinkNewViewport(): void
140 {
141 $f = $this->getFactory();
142 $r = $this->getDefaultRenderer();
143
144 $link = new I\Component\Link\Standard("Link to ILIAS", "http://www.ilias.de");
145
146 $c = $f->standard(array(
147 $link->withOpenInNewViewport(true)
148 ));
149
150 $html = $r->render($c);
151
152 $expected = <<<EOT
153 <div class="dropdown" id="id_1"><button class="btn btn-default dropdown-toggle" type="button" aria-label="actions" aria-haspopup="true" aria-expanded="false" aria-controls="id_1_menu"><span class="caret"></span></button>
154 <ul id="id_1_menu" class="dropdown-menu">
155 <li><a href="http://www.ilias.de" target="_blank" rel="noopener">Link to ILIAS</a></li>
156 </ul>
157 </div>
158EOT;
159
160 $this->assertHTMLEquals($expected, $html);
161 }
162
163 public function testRenderItemsWithAriaLabel(): void
164 {
165 $f = $this->getFactory();
166 $r = $this->getDefaultRenderer();
167
168 $c = $f->standard(array(
169 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
170 new I\Component\Divider\Horizontal(),
171 new I\Component\Button\Shy("GitHub", "https://www.github.com")
172 ))->withLabel("label")->withAriaLabel("my_aria_label");
173
174 $html = $r->render($c);
175
176 $expected = <<<EOT
177 <div class="dropdown" id="id_3"><button class="btn btn-default dropdown-toggle" type="button" aria-label="my_aria_label" aria-haspopup="true" aria-expanded="false" aria-controls="id_3_menu">label<span class="caret"></span></button>
178 <ul id="id_3_menu" class="dropdown-menu">
179 <li><button class="btn btn-link" data-action="https://www.ilias.de" id="id_1">ILIAS</button></li>
180 <li><hr /></li>
181 <li><button class="btn btn-link" data-action="https://www.github.com" id="id_2">GitHub</button></li>
182 </ul>
183 </div>
184EOT;
185
186 $this->assertHTMLEquals($expected, $html);
187 }
188}
Test on card implementation.
testRenderWithLinkNewViewport()
testRenderItemsWithAriaLabel()
testRenderItemsWithLabel()
testImplementsFactoryInterface()
Provides common functionality for UI tests.
Definition: Base.php:337
$c
Definition: deliver.php:25
button(string $caption, string $cmd)
to(\GdImage $image, ?int $quality=null)
Currently this is the only way to make a FileStream from a GD image resource.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Bulky.php:21
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.