ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
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 ->setMockClassName("Signal_" . ((string) self::$signal_mock_counter))
76 ->getMock();
77 }
78
79 public function testStartEmpty(): void
80 {
81 $this->assertEquals([], $this->mock->getTriggeredSignals());
82 }
83
85 {
86 $signal = $this->getSignalMock();
87
88 $mock = $this->mock->_appendTriggeredSignal($signal, "some_event");
89 $this->assertNotSame($mock, $this->mock);
90 }
91
92 public function testAppendTriggeredSignal(): void
93 {
94 $signal1 = $this->getSignalMock();
95 $signal2 = $this->getSignalMock();
96 $signal3 = $this->getSignalMock();
97
98 $mock = $this->mock->_appendTriggeredSignal($signal1, "some_event");
99 $mock2 = $this->mock
100 ->_appendTriggeredSignal($signal2, "some_event")
101 ->_appendTriggeredSignal($signal3, "some_event");
102
103 $this->assertEquals([], $this->mock->getTriggeredSignals());
104 $this->assertEquals([new TriggeredSignal($signal1, "some_event")], $mock->getTriggeredSignals());
105 $this->assertEquals(
106 [new TriggeredSignal($signal2, "some_event"), new TriggeredSignal($signal3, "some_event")],
107 $mock2->getTriggeredSignals()
108 );
109 }
110
112 {
113 $signal = $this->getSignalMock();
114
115 $mock = $this->mock->_withTriggeredSignal($signal, "some_event");
116
117 $this->assertNotSame($mock, $this->mock);
118 }
119
120 public function testWithTriggeredSignal(): void
121 {
122 $signal1 = $this->getSignalMock();
123 $signal2 = $this->getSignalMock();
124
125 $mock = $this->mock->_withTriggeredSignal($signal1, "some_event");
126 $mock2 = $mock->_withTriggeredSignal($signal2, "some_event");
127
128 $this->assertEquals([new TriggeredSignal($signal1, "some_event")], $mock->getTriggeredSignals());
129 $this->assertEquals([new TriggeredSignal($signal2, "some_event")], $mock2->getTriggeredSignals());
130 }
131
132 public function testSetTriggeredSignal(): void
133 {
134 $signal1 = $this->getSignalMock();
135 $signal2 = $this->getSignalMock();
136
137 $this->mock->_setTriggeredSignal($signal1, "some_event");
138 $this->mock->_setTriggeredSignal($signal2, "some_event");
139
140 $this->assertEquals([new TriggeredSignal($signal2, "some_event")], $this->mock->getTriggeredSignals());
141 }
142
144 {
145 $this->getSignalMock();
146 $mock = $this->mock->withResetTriggeredSignals();
147 $this->assertNotSame($mock, $this->mock);
148 }
149
150 public function testWithResetTriggeredSignal(): void
151 {
152 $signal1 = $this->getSignalMock();
153 $signal2 = $this->getSignalMock();
154
155 $mock = $this->mock
156 ->_appendTriggeredSignal($signal1, "some_event")
157 ->_appendTriggeredSignal($signal2, "some_event")
158 ->withResetTriggeredSignals();
159
160 $this->assertEquals([], $mock->getTriggeredSignals());
161 }
162
164 {
165 $signals = $this->mock->getTriggeredSignalsFor("some_event");
166 $this->assertEquals([], $signals);
167 }
168
169 public function testGetTriggeredSignals(): void
170 {
171 $signal1 = $this->getSignalMock();
172 $signal2 = $this->getSignalMock();
173
174 $mock = $this->mock
175 ->_appendTriggeredSignal($signal1, "some_event")
176 ->_appendTriggeredSignal($signal2, "some_event");
177
178 $signals = $mock->getTriggeredSignalsFor("some_event");
179
180 $this->assertEquals([$signal1, $signal2], $signals);
181 }
182}
_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