ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
ilEventDetectorTest.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()
18 {
19 include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
20 //ilUnitUtil::performInitialisation();
21
22 require_once './Services/WorkflowEngine/classes/utils/class.ilWorkflowUtils.php';
23
24 // Empty workflow.
25 require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
26 $this->workflow = new ilEmptyWorkflow();
27
28 // Basic node
29 require_once './Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
30 $this->node = new ilBasicNode($this->workflow);
31
32 // Wiring up so the node is attached to the workflow.
33 $this->workflow->addNode($this->node);
34
35 require_once './Services/WorkflowEngine/classes/detectors/class.ilEventDetector.php';
36 }
37
38 public function tearDown()
39 {
40 global $ilSetting;
41 if ($ilSetting != null) {
42 $ilSetting->delete('IL_PHPUNIT_TEST_TIME');
43 $ilSetting->delete('IL_PHPUNIT_TEST_MICROTIME');
44 }
45 }
46
48 {
49 // Act
50 $detector = new ilEventDetector($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
61 {
62 // Arrange
63 $detector = new ilEventDetector($this->node);
64 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
65 $timer_end = 0;
66 $detector->setListeningTimeframe($timer_start, $timer_end);
67
68 // Act
69 $actual = $detector->isListening();
70
71 // Assert
72 $this->assertFalse($actual, 'Detector should not be listening.');
73 }
74
76 {
77 // Arrange
78 $detector = new ilEventDetector($this->node);
79 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
80 $timer_end = ilWorkflowUtils::time() - 1 * 60; # -1 Minute from now.
81 $detector->setListeningTimeframe($timer_start, $timer_end);
82
83 // Act
84 $actual = $detector->isListening();
85
86 // Assert
87 $this->assertFalse($actual, 'Detector should not be listening.');
88 }
89
91 {
92 // Arrange
93 $detector = new ilEventDetector($this->node);
94 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
95 $timer_end = 0; # Wildcard.
96 $detector->setListeningTimeframe($timer_start, $timer_end);
97
98 // Act
99 $actual = $detector->isListening();
100
101 // Assert
102 $this->assertTrue($actual, 'Detector should not be listening.');
103 }
104
106 {
107 // Arrange
108 $detector = new ilEventDetector($this->node);
109 $timer_start = 0; # Wildcard.
110 $timer_end = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from now.
111 $detector->setListeningTimeframe($timer_start, $timer_end);
112
113 // Act
114 $actual = $detector->isListening();
115
116 // Assert
117 $this->assertTrue($actual, 'Detector should not be listening.');
118 }
119
121 {
122 // Arrange
123 $detector = new ilEventDetector($this->node);
124
125 // Act
126 $actual = $detector->isListening();
127
128 // Assert
129 $this->assertTrue($actual, 'Detector should be listening.');
130 }
131
133 {
134 // Arrange
135 $detector = new ilEventDetector($this->node);
136 $exp_start = 4711;
137 $exp_end = 4712;
138
139 // Act
140 $detector->setListeningTimeframe($exp_start, $exp_end);
141 $act = $detector->getListeningTimeframe();
142
143 // Assert
144 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
145 }
146
151 {
152 // Arrange
153 $detector = new ilEventDetector($this->node);
154 $exp_start = 4712; # +5 Minutes from here.
155 $exp_end = 4711;
156
157 // Act
158 $detector->setListeningTimeframe($exp_start, $exp_end);
159 $act = $detector->getListeningTimeframe();
160
161 // Assert
162 $this->assertEquals($exp_start . $exp_end, $act['listening_start'] . $act['listening_end']);
163 }
164
165 public function testSetGetDbId()
166 {
167 // Arrange
168 $detector = new ilEventDetector($this->node);
169 $expected = '1234';
170
171 // Act
172 $detector->setDbId($expected);
173 $actual = $detector->getDbId();
174
175 // Assert
176 $this->assertEquals($expected, $actual);
177 }
178
182 public function testGetNonExistingDbId()
183 {
184 // Arrange
185 $detector = new ilEventDetector($this->node);
186 $expected = '1234';
187
188 // Act
189 $actual = $detector->getDbId();
190
191 // Assert
192 $this->assertEquals($expected, $actual);
193 }
194
195 public function testHasDbIdSet()
196 {
197 // Arrange
198 $detector = new ilEventDetector($this->node);
199 $expected = '1234';
200
201 // Act
202 $detector->setDbId($expected);
203 $actual = $detector->hasDbId();
204
205 // Assert
206 $this->assertTrue($actual);
207 }
208
209 public function testHasDbIdUnset()
210 {
211 // Arrange
212 $detector = new ilEventDetector($this->node);
213
214 // Act
215 $actual = $detector->hasDbId();
216
217 // Assert
218 $this->assertFalse($actual);
219 }
220
221 public function testSetGetEvent()
222 {
223 // Arrange INC
224 $detector = new ilEventDetector($this->node);
225 $exp_type = 'time_passed';
226 $exp_content = 'time_passed';
227
228 // Act
229 $detector->setEvent($exp_type, $exp_content);
230
231 // Assert
232 $event = $detector->getEvent();
233 $act_type = $event['type'];
234 $act_content = $event['content'];
235 $this->assertEquals($exp_type . $exp_content, $act_type . $act_content);
236 }
237
238 public function testSetGetEventSubject()
239 {
240 // Arrange INC
241 $detector = new ilEventDetector($this->node);
242 $exp_type = 'none';
243 $exp_id = '0';
244
245 // Act
246 $detector->setEventSubject($exp_type, $exp_id);
247
248 // Assert
249 $event = $detector->getEventSubject();
250 $act_type = $event['type'];
251 $act_id = $event['identifier'];
252 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
253 }
254
255 public function testSetGetEventContext()
256 {
257 // Arrange INC
258 $detector = new ilEventDetector($this->node);
259 $exp_type = 'none';
260 $exp_id = '0';
261
262 // Act
263 $detector->setEventContext($exp_type, $exp_id);
264
265 // Assert
266 $event = $detector->getEventContext();
267 $act_type = $event['type'];
268 $act_id = $event['identifier'];
269 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
270 }
271
272 public function testGetContext()
273 {
274 // Arrange
275 $detector = new ilEventDetector($this->node);
276
277 // Act
278 $actual = $detector->getContext();
279
280 // Assert
281 if ($actual === $this->node) {
282 $this->assertEquals($actual, $this->node);
283 } else {
284 $this->assertTrue(false, 'Context not identical.');
285 }
286 }
287
288 public function testTriggerValid()
289 {
290 // Arrange
291 $detector = new ilEventDetector($this->node);
292 $evt_type = 'testEvent';
293 $evt_content = 'content';
294 $detector->setEvent($evt_type, $evt_content);
295 $subj_type = 'usr';
296 $subj_id = 6;
297 $detector->setEventSubject($subj_type, $subj_id);
298 $ctx_type = 'crs';
299 $ctx_id = 48;
300 $detector->setEventContext($ctx_type, $ctx_id);
301 $params = array(
302 $evt_type, $evt_content,
303 $subj_type, $subj_id,
304 $ctx_type, $ctx_id
305 );
306
307 // Act
308 $detector->trigger($params);
309
310 // Assert
311 $actual = $detector->getDetectorState();
312 $this->assertTrue($actual);
313 }
314
315 public function testTriggerValidTwice()
316 {
317 // Arrange
318 $detector = new ilEventDetector($this->node);
319 $evt_type = 'testEvent';
320 $evt_content = 'content';
321 $detector->setEvent($evt_type, $evt_content);
322 $subj_type = 'usr';
323 $subj_id = 6;
324 $detector->setEventSubject($subj_type, $subj_id);
325 $ctx_type = 'crs';
326 $ctx_id = 48;
327 $detector->setEventContext($ctx_type, $ctx_id);
328 $params = array(
329 $evt_type, $evt_content,
330 $subj_type, $subj_id,
331 $ctx_type, $ctx_id
332 );
333
334 // Act
335 $this->assertTrue($detector->trigger($params), 'First trigger should receive a true state.');
336 $this->assertFalse($detector->trigger($params), 'Second trigger should receive a false state.');
337
338 // Assert
339 $actual = $detector->getDetectorState();
340 $this->assertTrue($actual, 'After satisfaction of the trigger, detectorstate should be true.');
341 }
342
343 // TODO Test wildcards!
344
346 {
347 // Arrange
348 $detector = new ilEventDetector($this->node);
349 $evt_type = 'testEvent';
350 $evt_content = 'content';
351 $detector->setEvent($evt_type, $evt_content);
352 $subj_type = 'usr';
353 $subj_id = 6;
354 $detector->setEventSubject($subj_type, $subj_id);
355 $ctx_type = 'crs';
356 $ctx_id = 48;
357 $detector->setEventContext($ctx_type, $ctx_id);
358 $params = array(
359 $evt_type, $evt_content . 'INVALIDATE',
360 $subj_type, $subj_id,
361 $ctx_type, $ctx_id
362 );
363
364 // Act
365 $detector->trigger($params);
366
367 // Assert
368 $actual = $detector->getDetectorState();
369 $this->assertFalse($actual);
370 }
371
372 public function testTriggerInvalidType()
373 {
374 // Arrange
375 $detector = new ilEventDetector($this->node);
376 $evt_type = 'testEvent';
377 $evt_content = 'content';
378 $detector->setEvent($evt_type, $evt_content);
379 $subj_type = 'usr';
380 $subj_id = 6;
381 $detector->setEventSubject($subj_type, $subj_id);
382 $ctx_type = 'crs';
383 $ctx_id = 48;
384 $detector->setEventContext($ctx_type, $ctx_id);
385 $params = array(
386 $evt_type . 'INVALIDATE', $evt_content,
387 $subj_type, $subj_id,
388 $ctx_type, $ctx_id
389 );
390
391 // Act
392 $detector->trigger($params);
393
394 // Assert
395 $actual = $detector->getDetectorState();
396 $this->assertFalse($actual);
397 }
398
400 {
401 // Arrange
402 $detector = new ilEventDetector($this->node);
403 $evt_type = 'testEvent';
404 $evt_content = 'content';
405 $detector->setEvent($evt_type, $evt_content);
406 $subj_type = 'usr';
407 $subj_id = 6;
408 $detector->setEventSubject($subj_type, $subj_id);
409 $ctx_type = 'crs';
410 $ctx_id = 48;
411 $detector->setEventContext($ctx_type, $ctx_id);
412 $params = array(
413 $evt_type, $evt_content,
414 $subj_type . 'INVALIDATE', $subj_id,
415 $ctx_type, $ctx_id
416 );
417
418 // Act
419 $detector->trigger($params);
420
421 // Assert
422 $actual = $detector->getDetectorState();
423 $this->assertFalse($actual);
424 }
425
427 {
428 // Arrange
429 $detector = new ilEventDetector($this->node);
430 $evt_type = 'testEvent';
431 $evt_content = 'content';
432 $detector->setEvent($evt_type, $evt_content);
433 $subj_type = 'usr';
434 $subj_id = 6;
435 $detector->setEventSubject($subj_type, $subj_id);
436 $ctx_type = 'crs';
437 $ctx_id = 48;
438 $detector->setEventContext($ctx_type, $ctx_id);
439 $params = array(
440 $evt_type, $evt_content,
441 $subj_type, $subj_id . 'INVALIDATE',
442 $ctx_type, $ctx_id
443 );
444
445 // Act
446 $detector->trigger($params);
447
448 // Assert
449 $actual = $detector->getDetectorState();
450 $this->assertFalse($actual);
451 }
452
454 {
455 // Arrange
456 $detector = new ilEventDetector($this->node);
457 $evt_type = 'testEvent';
458 $evt_content = 'content';
459 $detector->setEvent($evt_type, $evt_content);
460 $subj_type = 'usr';
461 $subj_id = 6;
462 $detector->setEventSubject($subj_type, $subj_id);
463 $ctx_type = 'crs';
464 $ctx_id = 48;
465 $detector->setEventContext($ctx_type, $ctx_id);
466 $params = array(
467 $evt_type, $evt_content,
468 $subj_type, $subj_id,
469 $ctx_type . 'INVALIDATE', $ctx_id
470 );
471
472 // Act
473 $detector->trigger($params);
474
475 // Assert
476 $actual = $detector->getDetectorState();
477 $this->assertFalse($actual);
478 }
479
481 {
482 // Arrange
483 $detector = new ilEventDetector($this->node);
484 $evt_type = 'testEvent';
485 $evt_content = 'content';
486 $detector->setEvent($evt_type, $evt_content);
487 $subj_type = 'usr';
488 $subj_id = 6;
489 $detector->setEventSubject($subj_type, $subj_id);
490 $ctx_type = 'crs';
491 $ctx_id = 48;
492 $detector->setEventContext($ctx_type, $ctx_id);
493 $params = array(
494 $evt_type, $evt_content,
495 $subj_type, $subj_id,
496 $ctx_type, $ctx_id . 'INVALIDATE'
497 );
498
499 // Act
500 $detector->trigger($params);
501
502 // Assert
503 $actual = $detector->getDetectorState();
504 $this->assertFalse($actual);
505 }
506}
An exception for terminatinating execution or to throw for unit testing.
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
ilEventDetectorTest is part of the petri net based workflow engine.
testGetNonExistingDbId()
@expectedException ilWorkflowObjectStateException
testSetGetIllegalListeningTimeframe()
@expectedException ilWorkflowInvalidArgumentException
@noinspection PhpIncludeInspection
global $ilSetting
Definition: privfeed.php:17