ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ItemTest.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 2017 Alex Killing <killing@leifos.de> Extended GPL, see docs/LICENSE */
4
5require_once(__DIR__ . "/../../../../libs/composer/vendor/autoload.php");
6require_once(__DIR__ . "/../../Base.php");
7
8use \ILIAS\UI\Component as C;
9use \ILIAS\UI\Implementation as I;
10
15{
16
20 public function getFactory()
21 {
22 return new I\Component\Item\Factory();
23 }
24
26 {
27 $f = $this->getFactory();
28
29 $this->assertInstanceOf("ILIAS\\UI\\Component\\Item\\Standard", $f->standard("title"));
30 }
31
32 public function test_get_title()
33 {
34 $f = $this->getFactory();
35 $c = $f->standard("title");
36
37 $this->assertEquals($c->getTitle(), "title");
38 }
39
40 public function test_with_description()
41 {
42 $f = $this->getFactory();
43
44 $c = $f->standard("title")->withDescription("description");
45
46 $this->assertEquals($c->getDescription(), "description");
47 }
48
49 public function test_with_properties()
50 {
51 $f = $this->getFactory();
52
53 $props = array("prop1" => "val1", "prop2" => "val2");
54 $c = $f->standard("title")->withProperties($props);
55
56 $this->assertEquals($c->getProperties(), $props);
57 }
58
59 public function test_with_actions()
60 {
61 $f = $this->getFactory();
62
63 $actions = new I\Component\Dropdown\Standard(array(
64 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
65 new I\Component\Button\Shy("GitHub", "https://www.github.com")
66 ));
67 $c = $f->standard("title")->withActions($actions);
68
69 $this->assertEquals($c->getActions(), $actions);
70 }
71
72 public function test_with_color()
73 {
74 $f = $this->getFactory();
75 $df = new \ILIAS\Data\Factory();
76
77 $color = $df->color('#ff00ff');
78
79 $c = $f->standard("title")->withColor($color);
80
81 $this->assertEquals($c->getColor(), $color);
82 }
83
84 public function test_with_lead_image()
85 {
86 $f = $this->getFactory();
87
88 $image = new I\Component\Image\Image("standard", "src", "str");
89
90 $c = $f->standard("title")->withLeadImage($image);
91
92 $this->assertEquals($c->getLead(), $image);
93 }
94
95 public function test_with_lead_icon()
96 {
97 $f = $this->getFactory();
98
99 $icon = new I\Component\Symbol\Icon\Standard("name", "aria_label", "small", false);
100
101 $c = $f->standard("title")->withLeadIcon($icon);
102
103 $this->assertEquals($c->getLead(), $icon);
104 }
105
106 public function test_with_lead_text()
107 {
108 $f = $this->getFactory();
109
110 $c = $f->standard("title")->withLeadText("text");
111
112 $this->assertEquals($c->getLead(), "text");
113 }
114
115 public function test_with_no_lead()
116 {
117 $f = $this->getFactory();
118
119 $c = $f->standard("title")->withLeadText("text")->withNoLead();
120
121 $this->assertEquals($c->getLead(), null);
122 }
123
124 public function test_render_base()
125 {
126 $f = $this->getFactory();
127 $r = $this->getDefaultRenderer();
128
129 $actions = new I\Component\Dropdown\Standard(array(
130 new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"),
131 new I\Component\Button\Shy("GitHub", "https://www.github.com")
132 ));
133 $c = $f->standard("Item Title")
134 ->withActions($actions)
135 ->withProperties(array(
136 "Origin" => "Course Title 1",
137 "Last Update" => "24.11.2011",
138 "Location" => "Room 123, Main Street 44, 3012 Bern"))
139 ->withDescription("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.");
140
141 $html = $r->render($c);
142
143 $expected = <<<EOT
144<div class="il-item il-std-item ">
145 <div class="il-item-title">Item Title</div>
146 <div class="dropdown"><button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-label="actions" aria-haspopup="true" aria-expanded="false" > <span class="caret"></span></button>
147<ul class="dropdown-menu">
148 <li><button class="btn btn-link" data-action="https://www.ilias.de" id="id_1" >ILIAS</button>
149</li>
150 <li><button class="btn btn-link" data-action="https://www.github.com" id="id_2" >GitHub</button>
151</li>
152</ul>
153</div>
154 <div class="il-item-description">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</div>
155 <hr class="il-item-divider" />
156 <div class="row">
157 <div class="col-md-6">
158 <div class="row">
159 <div class="col-sm-5 col-lg-4 il-item-property-name">Origin</div>
160 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3">Course Title 1</div>
161 </div>
162 </div>
163 <div class="col-md-6">
164 <div class="row">
165 <div class="col-sm-5 col-lg-4 il-item-property-name">Last Update</div>
166 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3">24.11.2011</div>
167 </div>
168 </div>
169 </div>
170 <div class="row">
171 <div class="col-md-6">
172 <div class="row">
173 <div class="col-sm-5 col-lg-4 il-item-property-name">Location</div>
174 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3">Room 123, Main Street 44, 3012 Bern</div>
175 </div>
176 </div>
177 <div class="col-md-6">
178 <div class="row">
179 <div class="col-sm-5 col-lg-4 il-item-property-name"></div>
180 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3"></div>
181 </div>
182 </div>
183 </div>
184</div>
185EOT;
186
187 $this->assertHTMLEquals(
188 $this->brutallyTrimHTML($expected),
189 $this->brutallyTrimHTML($html)
190 );
191 }
192
193 public function test_render_lead_image()
194 {
195 $f = $this->getFactory();
196 $r = $this->getDefaultRenderer();
197
198 $image = new I\Component\Image\Image("standard", "src", "str");
199
200 $c = $f->standard("title")->withLeadImage($image);
201
202 $html = $r->render($c);
203 $expected = <<<EOT
204<div class="il-item il-std-item ">
205 <div class="row">
206 <div class="col-sm-3">
207 <img src="src" class="img-standard" alt="str" />
208 </div>
209 <div class="col-sm-9">
210 <div class="il-item-title">title</div>
211 </div>
212 </div>
213</div>
214EOT;
215
216 $this->assertHTMLEquals(
217 $this->brutallyTrimHTML($expected),
218 $this->brutallyTrimHTML($html)
219 );
220 }
221
222 public function test_render_lead_icon()
223 {
224 $f = $this->getFactory();
225 $r = $this->getDefaultRenderer();
226
227 $icon = new I\Component\Symbol\Icon\Standard("name", "aria_label", "small", false);
228
229 $c = $f->standard("title")->withLeadIcon($icon);
230
231 $html = $r->render($c);
232 $expected = <<<EOT
233<div class="il-item il-std-item ">
234 <div class="media">
235 <div class="media-left">
236 <div class="icon name small" aria-label="aria_label"></div></div>
237 <div class="media-body">
238 <div class="il-item-title">title</div>
239 </div>
240 </div>
241</div>
242EOT;
243
244 $this->assertHTMLEquals(
245 $this->brutallyTrimHTML($expected),
246 $this->brutallyTrimHTML($html)
247 );
248 }
249
251 {
252 $f = $this->getFactory();
253 $r = $this->getDefaultRenderer();
254 $df = new \ILIAS\Data\Factory();
255
256 $color = $df->color('#ff00ff');
257
258 $c = $f->standard("title")->withColor($color)->withLeadText("lead");
259
260 $html = $r->render($c);
261
262 $expected = <<<EOT
263<div class="il-item il-std-item il-item-marker " style="border-color:#ff00ff">
264 <div class="row">
265 <div class="col-sm-3">
266 lead
267 </div>
268 <div class="col-sm-9">
269 <div class="il-item-title">title</div>
270 </div>
271 </div>
272</div>
273EOT;
274
275 $this->assertHTMLEquals(
276 $this->brutallyTrimHTML($expected),
277 $this->brutallyTrimHTML($html)
278 );
279 }
280
282 {
283 $f = $this->getFactory();
284 $r = $this->getDefaultRenderer();
285 $df = new \ILIAS\Data\Factory();
286
287 $color = $df->color('#ff00ff');
288
289 $c = $f->standard(new I\Component\Button\Shy("ILIAS", "https://www.ilias.de"))
290 ->withProperties(array("test" => new I\Component\Button\Shy("GitHub", "https://www.github.com")));
291
292 $html = $r->render($c);
293 $expected = <<<EOT
294<div class="il-item il-std-item ">
295 <div class="il-item-title"><button class="btn btn-link" data-action="https://www.ilias.de" id="id_1" >ILIAS</button></div>
296
297 <hr class="il-item-divider" />
298 <div class="row">
299 <div class="col-md-6">
300 <div class="row">
301 <div class="col-sm-5 col-lg-4 il-item-property-name">test</div>
302 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3"><button class="btn btn-link" data-action="https://www.github.com" id="id_2" >GitHub</button></div>
303 </div>
304 </div>
305 <div class="col-md-6">
306 <div class="row">
307 <div class="col-sm-5 col-lg-4 il-item-property-name"></div>
308 <div class="col-sm-7 col-lg-8 il-item-property-value il-multi-line-cap-3"></div>
309 </div>
310 </div>
311 </div>
312</div>
313EOT;
314
315 $this->assertHTMLEquals($expected, $html);
316 }
317
318 public function test_link_title()
319 {
320 $f = $this->getFactory();
321 $r = $this->getDefaultRenderer();
322
323 $c = $f->standard(new I\Component\Link\Standard("ILIAS", "https://www.ilias.de"));
324 $html = $r->render($c);
325
326 $expected = <<<EOT
327<div class="il-item il-std-item "><div class="il-item-title"><a href="https://www.ilias.de">ILIAS</a></div></div>
328EOT;
329
330 $this->assertHTMLEquals($expected, $html);
331 }
332}
An exception for terminatinating execution or to throw for unit testing.
Provides common functionality for UI tests.
Definition: Base.php:225
assertHTMLEquals($expected_html_as_string, $html_as_string)
Definition: Base.php:326
getDefaultRenderer(JavaScriptBinding $js_binding=null)
Definition: Base.php:268
brutallyTrimHTML($html)
A more radical version of normalizeHTML.
Definition: Base.php:346
Test items.
Definition: ItemTest.php:15
test_with_properties()
Definition: ItemTest.php:49
test_get_title()
Definition: ItemTest.php:32
test_render_lead_text_and_color()
Definition: ItemTest.php:250
test_render_lead_image()
Definition: ItemTest.php:193
test_with_lead_text()
Definition: ItemTest.php:106
test_with_no_lead()
Definition: ItemTest.php:115
test_implements_factory_interface()
Definition: ItemTest.php:25
test_with_lead_icon()
Definition: ItemTest.php:95
test_shy_title_and_property()
Definition: ItemTest.php:281
getFactory()
Definition: ItemTest.php:20
test_with_lead_image()
Definition: ItemTest.php:84
test_with_actions()
Definition: ItemTest.php:59
test_render_lead_icon()
Definition: ItemTest.php:222
test_link_title()
Definition: ItemTest.php:318
test_with_color()
Definition: ItemTest.php:72
test_render_base()
Definition: ItemTest.php:124
test_with_description()
Definition: ItemTest.php:40
Title class.
Definition: Title.php:37
Class ChatMainBarProvider \MainMenu\Provider.