21 require_once
'./Services/WorkflowEngine/classes/utils/class.ilWorkflowUtils.php';
24 require_once
'./Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
28 require_once
'./Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
32 $this->workflow->addNode($this->node);
34 require_once
'./Services/WorkflowEngine/classes/detectors/class.ilEventDetector.php';
41 if (isset($DIC[
'ilSetting'])) {
42 $DIC[
'ilSetting']->delete(
'IL_PHPUNIT_TEST_TIME');
43 $DIC[
'ilSetting']->delete(
'IL_PHPUNIT_TEST_MICROTIME');
56 'Construction failed with valid context passed to constructor.' 64 $timer_start = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from here.
66 $detector->setListeningTimeframe($timer_start, $timer_end);
69 $actual = $detector->isListening();
72 $this->assertFalse($actual,
'Detector should not be listening.');
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);
84 $actual = $detector->isListening();
87 $this->assertFalse($actual,
'Detector should not be listening.');
94 $timer_start = ilWorkflowUtils::time() - 5 * 60; # -5 Minutes from now.
95 $timer_end = 0; # Wildcard.
96 $detector->setListeningTimeframe($timer_start, $timer_end);
99 $actual = $detector->isListening();
102 $this->assertTrue($actual,
'Detector should not be listening.');
109 $timer_start = 0; # Wildcard.
110 $timer_end = ilWorkflowUtils::time() + 5 * 60; # +5 Minutes from now.
111 $detector->setListeningTimeframe($timer_start, $timer_end);
114 $actual = $detector->isListening();
117 $this->assertTrue($actual,
'Detector should not be listening.');
126 $actual = $detector->isListening();
129 $this->assertTrue($actual,
'Detector should be listening.');
140 $detector->setListeningTimeframe($exp_start, $exp_end);
141 $act = $detector->getListeningTimeframe();
144 $this->assertEquals($exp_start . $exp_end, $act[
'listening_start'] . $act[
'listening_end']);
152 $this->expectException(ilWorkflowInvalidArgumentException::class);
156 $exp_start = 4712; # +5 Minutes from here.
160 $detector->setListeningTimeframe($exp_start, $exp_end);
161 $act = $detector->getListeningTimeframe();
164 $this->assertEquals($exp_start . $exp_end, $act[
'listening_start'] . $act[
'listening_end']);
174 $detector->setDbId($expected);
175 $actual = $detector->getDbId();
178 $this->assertEquals($expected, $actual);
186 $this->expectException(ilWorkflowObjectStateException::class);
193 $actual = $detector->getDbId();
196 $this->assertEquals($expected, $actual);
206 $detector->setDbId($expected);
207 $actual = $detector->hasDbId();
210 $this->assertTrue($actual);
219 $actual = $detector->hasDbId();
222 $this->assertFalse($actual);
229 $exp_type =
'time_passed';
230 $exp_content =
'time_passed';
233 $detector->setEvent($exp_type, $exp_content);
236 $event = $detector->getEvent();
237 $act_type = $event[
'type'];
238 $act_content = $event[
'content'];
239 $this->assertEquals($exp_type . $exp_content, $act_type . $act_content);
250 $detector->setEventSubject($exp_type, $exp_id);
253 $event = $detector->getEventSubject();
254 $act_type = $event[
'type'];
255 $act_id = $event[
'identifier'];
256 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
267 $detector->setEventContext($exp_type, $exp_id);
270 $event = $detector->getEventContext();
271 $act_type = $event[
'type'];
272 $act_id = $event[
'identifier'];
273 $this->assertEquals($exp_type . $exp_id, $act_type . $act_id);
282 $actual = $detector->getContext();
285 if ($actual === $this->node) {
286 $this->assertEquals($actual, $this->node);
288 $this->assertTrue(
false,
'Context not identical.');
296 $evt_type =
'testEvent';
297 $evt_content =
'content';
298 $detector->setEvent($evt_type, $evt_content);
301 $detector->setEventSubject($subj_type, $subj_id);
304 $detector->setEventContext($ctx_type, $ctx_id);
306 $evt_type, $evt_content,
307 $subj_type, $subj_id,
312 $detector->trigger($params);
315 $actual = $detector->getDetectorState();
316 $this->assertTrue($actual);
323 $evt_type =
'testEvent';
324 $evt_content =
'content';
325 $detector->setEvent($evt_type, $evt_content);
328 $detector->setEventSubject($subj_type, $subj_id);
331 $detector->setEventContext($ctx_type, $ctx_id);
333 $evt_type, $evt_content,
334 $subj_type, $subj_id,
339 $this->assertTrue($detector->trigger($params),
'First trigger should receive a true state.');
340 $this->assertFalse($detector->trigger($params),
'Second trigger should receive a false state.');
343 $actual = $detector->getDetectorState();
344 $this->assertTrue($actual,
'After satisfaction of the trigger, detectorstate should be true.');
353 $evt_type =
'testEvent';
354 $evt_content =
'content';
355 $detector->setEvent($evt_type, $evt_content);
358 $detector->setEventSubject($subj_type, $subj_id);
361 $detector->setEventContext($ctx_type, $ctx_id);
363 $evt_type, $evt_content .
'INVALIDATE',
364 $subj_type, $subj_id,
369 $detector->trigger($params);
372 $actual = $detector->getDetectorState();
373 $this->assertFalse($actual);
380 $evt_type =
'testEvent';
381 $evt_content =
'content';
382 $detector->setEvent($evt_type, $evt_content);
385 $detector->setEventSubject($subj_type, $subj_id);
388 $detector->setEventContext($ctx_type, $ctx_id);
390 $evt_type .
'INVALIDATE', $evt_content,
391 $subj_type, $subj_id,
396 $detector->trigger($params);
399 $actual = $detector->getDetectorState();
400 $this->assertFalse($actual);
407 $evt_type =
'testEvent';
408 $evt_content =
'content';
409 $detector->setEvent($evt_type, $evt_content);
412 $detector->setEventSubject($subj_type, $subj_id);
415 $detector->setEventContext($ctx_type, $ctx_id);
417 $evt_type, $evt_content,
418 $subj_type .
'INVALIDATE', $subj_id,
423 $detector->trigger($params);
426 $actual = $detector->getDetectorState();
427 $this->assertFalse($actual);
434 $evt_type =
'testEvent';
435 $evt_content =
'content';
436 $detector->setEvent($evt_type, $evt_content);
439 $detector->setEventSubject($subj_type, $subj_id);
442 $detector->setEventContext($ctx_type, $ctx_id);
444 $evt_type, $evt_content,
445 $subj_type, $subj_id .
'INVALIDATE',
450 $detector->trigger($params);
453 $actual = $detector->getDetectorState();
454 $this->assertFalse($actual);
461 $evt_type =
'testEvent';
462 $evt_content =
'content';
463 $detector->setEvent($evt_type, $evt_content);
466 $detector->setEventSubject($subj_type, $subj_id);
469 $detector->setEventContext($ctx_type, $ctx_id);
471 $evt_type, $evt_content,
472 $subj_type, $subj_id,
473 $ctx_type .
'INVALIDATE', $ctx_id
477 $detector->trigger($params);
480 $actual = $detector->getDetectorState();
481 $this->assertFalse($actual);
488 $evt_type =
'testEvent';
489 $evt_content =
'content';
490 $detector->setEvent($evt_type, $evt_content);
493 $detector->setEventSubject($subj_type, $subj_id);
496 $detector->setEventContext($ctx_type, $ctx_id);
498 $evt_type, $evt_content,
499 $subj_type, $subj_id,
500 $ctx_type, $ctx_id .
'INVALIDATE' 504 $detector->trigger($params);
507 $actual = $detector->getDetectorState();
508 $this->assertFalse($actual);
testIsListeningWithWildcardEndingTimeFrame()
Class ilWorkflowEngineBaseTest.
testSetGetListeningTimeframe()
testTriggerInvalidSubjectId()
testTriggerInvalidContent()
ilEventDetectorTest is part of the petri net based workflow engine.
testTriggerInvalidContextType()
testIsListeningWithTimeFrame()
testSetGetIllegalListeningTimeframe()
testConstructorValidContext()
testIsListeningWithoutTimeFrame()
testIsListeningWithWildcardBeginningTimeFrame()
__construct(Container $dic, ilPlugin $plugin)
testTriggerInvalidContextId()
testTriggerInvalidSubjectType()
testIsListeningWithPastTimeFrame()