ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilActivationEmitterTest.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  // Empty workflow.
23  require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
24  $this->workflow = new ilEmptyWorkflow();
25 
26  // Basic node
27  require_once './Services/WorkflowEngine/classes/nodes/class.ilBasicNode.php';
28  $this->node = new ilBasicNode($this->workflow);
29 
30  // Wiring up so the node is attached to the workflow.
31  $this->workflow->addNode($this->node);
32 
33  require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
34  }
35 
36  public function tearDown()
37  {
38  global $ilSetting;
39  if ($ilSetting != null) {
40  $ilSetting->delete('IL_PHPUNIT_TEST_TIME');
41  $ilSetting->delete('IL_PHPUNIT_TEST_MICROTIME');
42  }
43  }
44 
45  public function testConstructorValidContext()
46  {
47  // Act
48  $emitter = new ilActivationEmitter($this->node);
49 
50  // Assert
51  // No exception - good
52  $this->assertTrue(
53  true,
54  'Construction failed with valid context passed to constructor.'
55  );
56  }
57 
58  public function testGetContext()
59  {
60  // Arrange
61  $emitter = new ilActivationEmitter($this->node);
62 
63  // Act
64  $actual = $emitter->getContext();
65 
66  // Assert
67  if ($actual === $this->node) {
68  $this->assertEquals($actual, $this->node);
69  } else {
70  $this->assertTrue(false, 'Context not identical.');
71  }
72  }
73 
74  public function testSetGetTargetDetector()
75  {
76  // Arrange
77  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
78  $target_node = new ilBasicNode($this->workflow);
79  $target_detector = new ilSimpleDetector($target_node);
80  $target_node->addDetector($target_detector);
81 
82  $emitter = new ilActivationEmitter($this->node);
83 
84  // Act
85  $emitter->setTargetDetector($target_detector);
86 
87  // Assert
88  $actual = $emitter->getTargetDetector();
89  $this->assertEquals($target_detector, $actual);
90  }
91 
92  public function testEmitValidState()
93  {
94  // Arrange
95  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
96  $target_node = new ilBasicNode($this->workflow);
97  $target_detector = new ilSimpleDetector($target_node);
98  $target_node->addDetector($target_detector);
99 
100  // Blocking detector to keep node from transitting and resetting state.
101  $foo_detector = new ilSimpleDetector($target_node);
102  $target_node->addDetector($foo_detector);
103 
104  $emitter = new ilActivationEmitter($this->node);
105  $emitter->setTargetDetector($target_detector);
106 
107  // Act
108  $emitter->emit();
109  // Assert
110  $actual = $target_detector->getDetectorState();
111  $this->assertTrue($actual);
112  }
113 
115  {
116  // Arrange
117  require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
118  $target_node = new ilBasicNode($this->workflow);
119  $target_detector = new ilSimpleDetector($target_node);
120  $foo_detector = new ilSimpleDetector($target_node);
121  $target_node->addDetector($foo_detector);
122  $target_node->addDetector($target_detector);
123 
124  /* We want to see if the target node gets activated. To achieve
125  * that, we need a second detector, so the node won't transit
126  * and deactivate on receiving the emit to $target_detector.
127  * Thought you wondered.
128  */
129 
130  $emitter = new ilActivationEmitter($this->node);
131  $emitter->setTargetDetector($target_detector);
132 
133  // Act
134  $emitter->emit();
135  // Assert
136  $actual = $target_node->isActive();
137  $this->assertTrue($actual);
138  }
139 }
ilActivationEmitterTest is part of the petri net based workflow engine.
PhpIncludeInspection
global $ilSetting
Definition: privfeed.php:17
PhpIncludeInspection
PhpIncludeInspection