ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilTimerDetectorTest.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
3
16{
17 public function setUp() : void
18 {
20
21 require_once './Services/WorkflowEngine/classes/utils/class.ilWorkflowUtils.php';
22
23 // Empty workflow.
24 require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
25 $this->workflow = new ilEmptyWorkflow();
26
27 // Basic node
28 require_once './Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
29 $this->node = new ilBasicNode($this->workflow);
30
31 // Wiring up so the node is attached to the workflow.
32 $this->workflow->addNode($this->node);
33
34 require_once './Services/WorkflowEngine/classes/detectors/class.ilTimerDetector.php';
35 }
36
37 public function tearDown() : void
38 {
39 global $DIC;
40
41 if (isset($DIC['ilSetting'])) {
42 $DIC['ilSetting']->delete('IL_PHPUNIT_TEST_TIME');
43 $DIC['ilSetting']->delete('IL_PHPUNIT_TEST_MICROTIME');
44 }
45 }
46
48 {
49 // Act
50 $detector = new ilTimerDetector($this->node);
51
52 // Assert
53 // No exception - good
54 $this->assertTrue(
55 true,
56 'Construction failed with valid context passed to constructor.'
57 );
58 }
59
60 public function testSetGetTimerStart()
61 {
62 // Arrange
63 $detector = new ilTimerDetector($this->node);
64 $expected = ilWorkflowUtils::time();
65
66 // Act
67 $detector->setTimerStart($expected);
68 $actual = $detector->getTimerStart();
69
70 // Assert
71 $this->assertEquals($actual, $expected);
72 }
73
74 public function testSetGetTimerLimit()
75 {
76 // Arrange
77 $detector = new ilTimerDetector($this->node);
78 $expected = 5 * 60 * 60;
79
80 // Act
81 $detector->setTimerLimit($expected);
82 $actual = $detector->getTimerLimit();
83
84 // Assert
85 $this->assertEquals($actual, $expected);
86 }
87
88 public function testTriggerEarly()
89 {
90 // Arrange
91 $detector = new ilTimerDetector($this->node);
92 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from here.
93 $timer_limit = 5 * 60;
94 $detector->setTimerStart($timer_start);
95 $detector->setTimerLimit($timer_limit);
96
97 // Act
98 $detector->trigger(null);
99
100 // Assert
101 $actual = $detector->getDetectorState();
102 $this->assertFalse($actual, 'Early trigger should not satisfy detector');
103 }
104
105 public function testTriggerValid()
106 {
107 // Arrange
108 $detector = new ilTimerDetector($this->node);
109 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from now.
110 $timer_limit = 0;
111 $detector->setTimerStart($timer_start);
112 $detector->setTimerLimit($timer_limit);
113
114 // Act
115 $detector->trigger(null);
116
117 // Assert
118 $actual = $detector->getDetectorState();
119 $this->assertTrue($actual, 'Trigger should not satisfy detector');
120 }
121
122 public function testTriggerValidTwice()
123 {
124 // Arrange
125 $detector = new ilTimerDetector($this->node);
126 $timer_start = ilWorkflowUtils::time(); # +5 Minutes from now.
127 $timer_limit = 0;
128 $detector->setTimerStart($timer_start);
129 $detector->setTimerLimit($timer_limit);
130
131 // Act
132 $detector->trigger(null);
133 $actual = $detector->trigger(null);
134
135 // Assert
136 $this->assertFalse($actual, 'Detector should be satisfied after single trigger');
137 }
138
140 {
141 // Arrange
142 $detector = new ilTimerDetector($this->node);
143 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
144 $timer_end = 0;
145 $detector->setListeningTimeframe($timer_start, $timer_end);
146
147 // Act
148 $actual = $detector->isListening();
149
150 // Assert
151 $this->assertFalse($actual, 'Detector should not be listening.');
152 }
153
155 {
156 // Arrange
157 $detector = new ilTimerDetector($this->node);
158 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
159 $timer_end = 0;
160
161 // Act
162 $actual = $detector->isListening();
163
164 // Assert
165 $this->assertTrue($actual, 'Detector should be listening.');
166 }
167
172 {
173 $this->expectException(ilWorkflowInvalidArgumentException::class);
174
175 // Arrange
176 $detector = new ilTimerDetector($this->node);
177 $exp_start = 4712;
178 $exp_end = 4711;
179
180 // Act
181 $detector->setListeningTimeframe($exp_start, $exp_end);
182 $act = $detector->getListeningTimeframe();
183
184 // Assert
185 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
186 }
187
189 {
190 // Arrange
191 $detector = new ilTimerDetector($this->node);
192 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
193 $timer_end = ilWorkflowUtils::time() - 1 * 60; # -1 Minute from now.
194 $detector->setListeningTimeframe($timer_start, $timer_end);
195
196 // Act
197 $actual = $detector->isListening();
198
199 // Assert
200 $this->assertFalse($actual, 'Detector should not be listening.');
201 }
202
204 {
205 // Arrange
206 $detector = new ilTimerDetector($this->node);
207 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
208 $timer_end = 0; # Wildcard.
209 $detector->setListeningTimeframe($timer_start, $timer_end);
210
211 // Act
212 $actual = $detector->isListening();
213
214 // Assert
215 $this->assertTrue($actual, 'Detector should not be listening.');
216 }
217
219 {
220 // Arrange
221 $detector = new ilTimerDetector($this->node);
222 $timer_start = 0; # Wildcard.
223 $timer_end = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from now.
224 $detector->setListeningTimeframe($timer_start, $timer_end);
225
226 // Act
227 $actual = $detector->isListening();
228
229 // Assert
230 $this->assertTrue($actual, 'Detector should not be listening.');
231 }
232
234 {
235 // Arrange
236 $detector = new ilTimerDetector($this->node);
237 $exp_start = 4711; # +5 Minutes from here.
238 $exp_end = 4712;
239
240 // Act
241 $detector->setListeningTimeframe($exp_start, $exp_end);
242 $act = $detector->getListeningTimeframe();
243
244 // Assert
245 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
246 }
247
248 public function testSetGetDbId()
249 {
250 // Arrange
251 $detector = new ilTimerDetector($this->node);
252 $expected = '1234';
253
254 // Act
255 $detector->setDbId($expected);
256 $actual = $detector->getDbId();
257
258 // Assert
259 $this->assertEquals($expected, $actual);
260 }
261
262 public function testHasDbIdSet()
263 {
264 // Arrange
265 $detector = new ilTimerDetector($this->node);
266 $expected = '1234';
267
268 // Act
269 $detector->setDbId($expected);
270 $actual = $detector->hasDbId();
271
272 // Assert
273 $this->assertTrue($actual);
274 }
275
279 public function testGetNonExistingDbId()
280 {
281 $this->expectException(ilWorkflowObjectStateException::class);
282
283 // Arrange
284 $detector = new ilTimerDetector($this->node);
285 $expected = '1234';
286
287 // Act
288 $actual = $detector->getDbId();
289
290 // Assert
291 $this->assertEquals($expected, $actual);
292 }
293
294 public function testHasDbIdUnset()
295 {
296 // Arrange
297 $detector = new ilTimerDetector($this->node);
298
299 // Act
300 $actual = $detector->hasDbId();
301
302 // Assert
303 $this->assertFalse($actual);
304 }
305
306 public function testGetEvent()
307 {
308 // Arrange
309 $detector = new ilTimerDetector($this->node);
310 $exp_type = 'time_passed';
311 $exp_content = 'time_passed';
312
313 // Act
314
315 // Assert
316 $event = $detector->getEvent();
317 $act_type = $event['type'];
318 $act_content = $event['content'];
319 $this->assertEquals($exp_type . $exp_content, $act_type . $act_content);
320 }
321
322 public function testGetEventSubject()
323 {
324 // Arrange
325 $detector = new ilTimerDetector($this->node);
326 $exp_type = 'none';
327 $exp_id = '0';
328
329 // Act
330
331 // Assert
332 $event = $detector->getEventSubject();
333 $act_type = $event['type'];
334 $act_id = $event['identifier'];
335 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
336 }
337
338 public function testGetEventContext()
339 {
340 // Arrange
341 $detector = new ilTimerDetector($this->node);
342 $exp_type = 'none';
343 $exp_id = '0';
344
345 // Act
346
347 // Assert
348 $event = $detector->getEventContext();
349 $act_type = $event['type'];
350 $act_id = $event['identifier'];
351 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
352 }
353
354 public function testGetContext()
355 {
356 // Arrange
357 $detector = new ilTimerDetector($this->node);
358
359 // Act
360 $actual = $detector->getContext();
361
362 // Assert
363 if ($actual === $this->node) {
364 $this->assertEquals($actual, $this->node);
365 } else {
366 $this->assertTrue(false, 'Context not identical.');
367 }
368 }
369}
An exception for terminatinating execution or to throw for unit testing.
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
ilTimerDetectorTest is part of the petri net based workflow engine.
@noinspection PhpIncludeInspection
Class ilWorkflowEngineBaseTest.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$DIC
Definition: xapitoken.php:46