ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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(
74 $html
75 );
76 }
77
78 protected function getSortationExpectedHTML()
79 {
80 $expected = <<<EOT
81<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">
82 <li><button class="btn btn-link" data-action="?sortation=internal_rating" id="id_1" >Best</button></li>
83 <li><button class="btn btn-link" data-action="?sortation=date_desc" id="id_2" >Most Recent</button></li>
84 <li><button class="btn btn-link" data-action="?sortation=date_asc" id="id_3" >Oldest</button></li></ul></div>
85</div>
86EOT;
87 return $this->normalizeHTML($expected);
88 }
89
90 public function getUIFactory()
91 {
92 return new \ILIAS\UI\Implementation\Factory(
93 $this->createMock(C\Counter\Factory::class),
94 $this->createMock(C\Glyph\Factory::class),
95 new I\Component\Button\Factory,
96 $this->createMock(C\Listing\Factory::class),
97 $this->createMock(C\Image\Factory::class),
98 $this->createMock(C\Panel\Factory::class),
99 $this->createMock(C\Modal\Factory::class),
100 $this->createMock(C\Dropzone\Factory::class),
101 $this->createMock(C\Popover\Factory::class),
102 $this->createMock(C\Divider\Factory::class),
103 $this->createMock(C\Link\Factory::class),
104 new I\Component\Dropdown\Factory,
105 $this->createMock(C\Item\Factory::class),
106 $this->createMock(C\Icon\Factory::class),
107 $this->createMock(C\ViewControl\Factory::class),
108 $this->createMock(C\Chart\Factory::class),
109 $this->createMock(C\Input\Factory::class),
110 $this->createMock(C\Table\Factory::class),
111 $this->createMock(C\MessageBox\Factory::class),
112 $this->createMock(C\Card\Factory::class)
113 );
114 }
115}
An exception for terminatinating execution or to throw for unit testing.
Provides common functionality for UI tests.
Definition: Base.php:192
getDefaultRenderer(JavaScriptBinding $js_binding=null)
Definition: Base.php:228
normalizeHTML($html)
Definition: Base.php:261
Test on icon implementation.
$html
Definition: example_001.php:87
$r
Definition: example_031.php:79
$s
Definition: pwgen.php:45
$this data['403_header']