ILIAS  release_7 Revision v7.30-3-g800a261c036
SortationTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 2017 Nils Haagen <nils.haagen@concepts-and-training.de> Extended GPL, see docs/LICENSE */
3
4require_once("libs/composer/vendor/autoload.php");
5require_once(__DIR__ . "/../../Base.php");
6
7use \ILIAS\UI\Component as C;
8use \ILIAS\UI\Implementation as I;
10
15{
16 protected $options = array(
17 'internal_rating' => 'Best',
18 'date_desc' => 'Most Recent',
19 'date_asc' => 'Oldest',
20 );
21
22 private function getFactory()
23 {
24 return new I\Component\ViewControl\Factory(
25 new SignalGenerator()
26 );
27 }
28
29 public function testConstruction()
30 {
31 $f = $this->getFactory();
32 $sortation = $f->sortation($this->options);
33 $this->assertInstanceOf(
34 "ILIAS\\UI\\Component\\ViewControl\\Sortation",
35 $sortation
36 );
37 $this->assertInstanceOf(
38 "ILIAS\\UI\\Component\\Signal",
39 $sortation->getSelectSignal()
40 );
41 }
42
43 public function testAttributes()
44 {
45 $f = $this->getFactory();
46 $s = $f->sortation($this->options);
47
48 $this->assertEquals($this->options, $s->getOptions());
49
50 $this->assertEquals('label', $s->withLabel('label')->getLabel());
51
52 $s = $s->withTargetURL('#', 'param');
53 $this->assertEquals('#', $s->getTargetURL());
54 $this->assertEquals('param', $s->getParameterName());
55
56 $this->assertEquals(array(), $s->getTriggeredSignals());
57 $generator = new SignalGenerator();
58 $signal = $generator->create();
59 $this->assertEquals(
60 $signal,
61 $s->withOnSort($signal)->getTriggeredSignals()[0]->getSignal()
62 );
63 }
64
65 public function testRendering()
66 {
67 $f = $this->getFactory();
68 $r = $this->getDefaultRenderer();
69 $s = $f->sortation($this->options);
70
71 $html = $this->normalizeHTML($r->render($s));
72 $this->assertEquals(
73 $this->getSortationExpectedHTML(true),
74 $html
75 );
76 }
77
79 {
80 $f = $this->getFactory();
81 $r = $this->getDefaultRenderer();
82 $s = $f->sortation($this->options)->withAdditionalOnLoadCode(function ($id) {
83 return "";
84 });
85
86 $html = $this->normalizeHTML($r->render($s));
87 $this->assertEquals(
88 $this->getSortationExpectedHTML(true),
89 $html
90 );
91 }
92
93 protected function getSortationExpectedHTML(bool $with_id = false)
94 {
95 $id = "";
96 $button1_id = "id_1";
97 $button2_id = "id_2";
98 $button3_id = "id_3";
99
100 if ($with_id) {
101 $id = "id=\"id_1\"";
102 $button1_id = "id_2";
103 $button2_id = "id_3";
104 $button3_id = "id_4";
105 }
106
107 $expected = <<<EOT
108<div class="il-viewcontrol-sortation" $id><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><ul class="dropdown-menu">
109 <li><button class="btn btn-link" data-action="?sortation=internal_rating" id="$button1_id">Best</button></li>
110 <li><button class="btn btn-link" data-action="?sortation=date_desc" id="$button2_id">Most Recent</button></li>
111 <li><button class="btn btn-link" data-action="?sortation=date_asc" id="$button3_id">Oldest</button></li></ul></div>
112</div>
113EOT;
114 return $this->normalizeHTML($expected);
115 }
116
117 public function getUIFactory()
118 {
119 $factory = new class extends NoUIFactory {
120 public function button()
121 {
122 return new I\Component\Button\Factory();
123 }
124 public function dropdown()
125 {
126 return new I\Component\Dropdown\Factory();
127 }
128 };
129 return $factory;
130 }
131}
An exception for terminatinating execution or to throw for unit testing.
Provides common functionality for UI tests.
Definition: Base.php:263
getDefaultRenderer(JavaScriptBinding $js_binding=null, $with_stub_renderings=[])
Definition: Base.php:311
normalizeHTML($html)
Definition: Base.php:363
Test on icon implementation.
getSortationExpectedHTML(bool $with_id=false)
testRenderingWithJsBinding()
$factory
Definition: metadata.php:58