ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
TriggererTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21require_once("vendor/composer/vendor/autoload.php");
22
25use PHPUnit\Framework\TestCase;
28use ILIAS\UI\Implementation\Component\ComponentHelper;
29use PHPUnit\Framework\MockObject\MockObject;
30
32{
33 use Triggerer;
35 use ComponentHelper;
36
37 public function _appendTriggeredSignal(Component\Signal $signal, string $event): Component\Triggerer
38 {
39 return $this->appendTriggeredSignal($signal, $event);
40 }
41
42 public function _withTriggeredSignal(Component\Signal $signal, string $event): Component\Triggerer
43 {
44 return $this->withTriggeredSignal($signal, $event);
45 }
46
47 public function _setTriggeredSignal(Component\Signal $signal, string $event)
48 {
49 $this->setTriggeredSignal($signal, $event);
50 }
51}
52
57{
59 protected static int $signal_mock_counter = 0;
60
61 public function setUp(): void
62 {
63 $this->mock = new TriggererMock();
64 }
65
69 protected function getSignalMock()
70 {
71 self::$signal_mock_counter++;
72 return $this
73 ->getMockBuilder(Component\Signal::class)
74 ->disableOriginalClone()
75 ->disableArgumentCloning()
76 ->disallowMockingUnknownTypes()
77 ->setMockClassName("Signal_" . ((string) self::$signal_mock_counter))
78 ->getMock();
79 }
80
81 public function testStartEmpty(): void
82 {
83 $this->assertEquals([], $this->mock->getTriggeredSignals());
84 }
85
87 {
88 $signal = $this->getSignalMock();
89
90 $mock = $this->mock->_appendTriggeredSignal($signal, "some_event");
91 $this->assertNotSame($mock, $this->mock);
92 }
93
94 public function testAppendTriggeredSignal(): void
95 {
96 $signal1 = $this->getSignalMock();
97 $signal2 = $this->getSignalMock();
98 $signal3 = $this->getSignalMock();
99
100 $mock = $this->mock->_appendTriggeredSignal($signal1, "some_event");
101 $mock2 = $this->mock
102 ->_appendTriggeredSignal($signal2, "some_event")
103 ->_appendTriggeredSignal($signal3, "some_event");
104
105 $this->assertEquals([], $this->mock->getTriggeredSignals());
106 $this->assertEquals([new TriggeredSignal($signal1, "some_event")], $mock->getTriggeredSignals());
107 $this->assertEquals(
108 [new TriggeredSignal($signal2, "some_event"), new TriggeredSignal($signal3, "some_event")],
109 $mock2->getTriggeredSignals()
110 );
111 }
112
114 {
115 $signal = $this->getSignalMock();
116
117 $mock = $this->mock->_withTriggeredSignal($signal, "some_event");
118
119 $this->assertNotSame($mock, $this->mock);
120 }
121
122 public function testWithTriggeredSignal(): void
123 {
124 $signal1 = $this->getSignalMock();
125 $signal2 = $this->getSignalMock();
126
127 $mock = $this->mock->_withTriggeredSignal($signal1, "some_event");
128 $mock2 = $mock->_withTriggeredSignal($signal2, "some_event");
129
130 $this->assertEquals([new TriggeredSignal($signal1, "some_event")], $mock->getTriggeredSignals());
131 $this->assertEquals([new TriggeredSignal($signal2, "some_event")], $mock2->getTriggeredSignals());
132 }
133
134 public function testSetTriggeredSignal(): void
135 {
136 $signal1 = $this->getSignalMock();
137 $signal2 = $this->getSignalMock();
138
139 $this->mock->_setTriggeredSignal($signal1, "some_event");
140 $this->mock->_setTriggeredSignal($signal2, "some_event");
141
142 $this->assertEquals([new TriggeredSignal($signal2, "some_event")], $this->mock->getTriggeredSignals());
143 }
144
146 {
147 $this->getSignalMock();
148 $mock = $this->mock->withResetTriggeredSignals();
149 $this->assertNotSame($mock, $this->mock);
150 }
151
152 public function testWithResetTriggeredSignal(): void
153 {
154 $signal1 = $this->getSignalMock();
155 $signal2 = $this->getSignalMock();
156
157 $mock = $this->mock
158 ->_appendTriggeredSignal($signal1, "some_event")
159 ->_appendTriggeredSignal($signal2, "some_event")
160 ->withResetTriggeredSignals();
161
162 $this->assertEquals([], $mock->getTriggeredSignals());
163 }
164
166 {
167 $signals = $this->mock->getTriggeredSignalsFor("some_event");
168 $this->assertEquals([], $signals);
169 }
170
171 public function testGetTriggeredSignals(): void
172 {
173 $signal1 = $this->getSignalMock();
174 $signal2 = $this->getSignalMock();
175
176 $mock = $this->mock
177 ->_appendTriggeredSignal($signal1, "some_event")
178 ->_appendTriggeredSignal($signal2, "some_event");
179
180 $signals = $mock->getTriggeredSignalsFor("some_event");
181
182 $this->assertEquals([$signal1, $signal2], $signals);
183 }
184}
_appendTriggeredSignal(Component\Signal $signal, string $event)
_setTriggeredSignal(Component\Signal $signal, string $event)
_withTriggeredSignal(Component\Signal $signal, string $event)
withResetTriggeredSignals()
Get a component like this but reset any triggered signals of other components.
getTriggeredSignals()
Get all triggered signals of this component.
appendTriggeredSignal(C\Signal $signal, string $event)
Append a triggered signal to other signals of the same event.
Definition: Triggerer.php:47
withTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event.
Definition: Triggerer.php:62
trait JavaScriptBindable
Trait for components implementing JavaScriptBindable providing standard implementation.
setTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event.
Definition: Triggerer.php:75