ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
TriggererTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 require_once("vendor/composer/vendor/autoload.php");
22 
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 {
58  protected Triggerermock $mock;
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 
86  public function testAppendTriggeredSignalIsImmutable(): void
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 
113  public function testWithTriggeredSignalIsImmutable(): void
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(C\Signal $signal, string $event)
Append a triggered signal to other signals of the same event.
Definition: Triggerer.php:47
_appendTriggeredSignal(Component\Signal $signal, string $event)
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.
withResetTriggeredSignals()
Get a component like this but reset any triggered signals of other components.
setTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event. ...
Definition: Triggerer.php:75
_setTriggeredSignal(Component\Signal $signal, string $event)
_withTriggeredSignal(Component\Signal $signal, string $event)
getTriggeredSignals()
Get all triggered signals of this component.