ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilCaseNodeTest.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{
18 public $workflow;
19
20 public function setUp()
21 {
22 include_once("./Services/PHPUnit/classes/class.ilUnitUtil.php");
23 //ilUnitUtil::performInitialisation();
24
25 // Empty workflow.
26 require_once './Services/WorkflowEngine/classes/workflows/class.ilEmptyWorkflow.php';
27 $this->workflow = new ilEmptyWorkflow();
28 }
29
30 public function tearDown()
31 {
32 global $ilSetting;
33 if ($ilSetting != null) {
34 $ilSetting->delete('IL_PHPUNIT_TEST_TIME');
35 $ilSetting->delete('IL_PHPUNIT_TEST_MICROTIME');
36 }
37 }
38
40 {
41 // Act
42 $node = new ilCaseNode($this->workflow);
43
44 // Assert
45 // No exception - good
46 $this->assertTrue(
47 true,
48 'Construction failed with valid context passed to constructor.'
49 );
50 }
51
52 public function testGetContext()
53 {
54 // Arrange
55 $node = new ilCaseNode($this->workflow);
56
57 // Act
58 $actual = $node->getContext();
59
60 // Assert
61 if ($actual === $this->workflow) {
62 $this->assertEquals($actual, $this->workflow);
63 } else {
64 $this->assertTrue(false, 'Context not identical.');
65 }
66 }
67
68 public function testIsActiveAndActivate()
69 {
70 // Arrange
71 $node = new ilCaseNode($this->workflow);
72 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
73 $detector = new ilSimpleDetector($node);
74 $node->addDetector($detector);
75
76 // Act
77 $node->activate();
78
79 // Assert
80 $actual = $node->isActive();
81 $this->assertTrue($actual);
82 }
83
84 public function testDeactivate()
85 {
86 // Arrange
87 $node = new ilCaseNode($this->workflow);
88 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
89 $detector = new ilSimpleDetector($node);
90 $node->addDetector($detector);
91
92 // Act
93 $node->activate();
94 $was_activated = $node->isActive();
95 $node->deactivate();
96 $was_deactivated = !$node->isActive();
97
98 // Assert
99 $this->assertEquals($was_activated, $was_deactivated);
100 }
101
103 {
104 // Arrange
105 $node = new ilCaseNode($this->workflow);
106 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
107 $detector1 = new ilSimpleDetector($node);
108 $node->addDetector($detector1);
109 $detector2 = new ilSimpleDetector($node);
110 $node->addDetector($detector2);
111
112 $detector1->trigger(null);
113 $detector2->trigger(null);
114
115 // Act
116 $preconditions = $node->checkTransitionPreconditions();
117
118 // Assert
119 $this->assertTrue($preconditions);
120 }
121
123 {
124 // Arrange
125 $node = new ilCaseNode($this->workflow);
126 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
127 $detector1 = new ilSimpleDetector($node);
128 $node->addDetector($detector1);
129 $detector2 = new ilSimpleDetector($node);
130 $node->addDetector($detector2);
131 $node->setIsExclusiveJoin(true);
132 $detector1->trigger(null);
133 $detector2->trigger(null);
134
135 // Act
136 $preconditions = $node->checkTransitionPreconditions();
137
138 // Assert
139 $this->assertTrue($preconditions);
140 }
141
143 {
144 // Arrange
145 $node = new ilCaseNode($this->workflow);
146 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
147 $detector1 = new ilSimpleDetector($node);
148 $node->addDetector($detector1);
149 $detector2 = new ilSimpleDetector($node);
150 $node->addDetector($detector2);
151
152 // Act
153 $node->activate();
154 $this->assertTrue($node->isActive());
155 $detector1->trigger(null);
156 $detector2->trigger(null);
157 // TODO: Assert something more meaningful here.
158 $this->assertFalse($node->isActive());
159 }
160
162 {
163 // Arrange
164 $node = new ilCaseNode($this->workflow);
165 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
166 $detector1 = new ilSimpleDetector($node);
167 $node->addDetector($detector1);
168 $detector2 = new ilSimpleDetector($node);
169 $node->addDetector($detector2);
170
171 $detector1->trigger(null);
172 //$detector2->trigger(null);
173
174 // Act
175 $preconditions = $node->checkTransitionPreconditions();
176
177 // Assert
178 $this->assertFalse($preconditions);
179 }
180
182 {
183 // Arrange
184 $node = new ilCaseNode($this->workflow);
185 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
186 $detector1 = new ilSimpleDetector($node);
187 $node->addDetector($detector1);
188 $detector2 = new ilSimpleDetector($node);
189 $node->addDetector($detector2);
190 $node->setIsExclusiveJoin(true);
191 $detector1->trigger(null);
192 $detector2->trigger(null);
193
194 // Act
195 $success = $node->attemptTransition();
196
197 // Assert
198 $this->assertTrue($success);
199 }
200
201 public function testExecuteTransition()
202 {
203 // Arrange
204 $node = new ilCaseNode($this->workflow);
205 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
206 $detector = new ilSimpleDetector($node);
207 $node->addDetector($detector);
208 $node->activate();
209
210 // Act
211 $node->executeTransition();
212 $state = $node->isActive();
213
214 // Assert
215 $this->assertFalse($state);
216 }
217
219 {
220 // Arrange
221 $node = new ilCaseNode($this->workflow);
222 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
223 $detector = new ilSimpleDetector($node);
224 $node->addDetector($detector);
225 $node->activate();
226 $node->setIsExclusiveFork(true);
227
228 // Act
229 $node->executeTransition();
230 $state = $node->isActive();
231
232 // Assert
233 $this->assertFalse($state);
234 }
235
237 {
238 // Arrange
239 $node = new ilCaseNode($this->workflow);
240 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
241 $detector = new ilSimpleDetector($node);
242 $node->addDetector($detector);
243
244 require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
245 $activity = new ilLoggingActivity($node);
246 $activity->setLogFile('ilTransitionLog.txt');
247 $activity->setLogLevel('MESSAGE');
248 $activity->setLogMessage('TEST');
249 $node->addActivity($activity);
250
251 // Act
252 $node->activate();
253 $node->executeTransition();
254
255 // Assert
256 $expected = ' :: MESSAGE :: TEST';
257 $fp = fopen('ilTransitionLog.txt', r);
258 $line = fgets($fp);
259 $actual = substr($line, 25, strlen($line)-27);
260 @unlink('ilTransitionLog.txt'); // TODO: Use vfsStrream
261 $this->assertEquals(
262 $expected,
263 $actual
264 );
265 }
266
268 {
269 // Arrange
270 $node = new ilCaseNode($this->workflow);
271 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
272 $detector = new ilSimpleDetector($node);
273 $node->addDetector($detector);
274
275 require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
276 $t_node = new ilBasicNode($this->workflow);
277 $t_detector = new ilSimpleDetector($t_node);
278 $t_node->addDetector($t_detector);
279 $foo_detector = new ilSimpleDetector($t_node);
280 $t_node->addDetector($foo_detector);
281 // again a foo_detector to keep the t_node from transitting
282
283 $emitter = new ilActivationEmitter($node);
284 $emitter->setTargetDetector($t_detector);
285 $node->addEmitter($emitter);
286
287 // Act
288 $node->activate();
289 $node->executeTransition();
290
291 // Assert
292 $this->assertTrue($t_node->isActive());
293 }
294
296 {
297 // Arrange
298 $node = new ilCaseNode($this->workflow);
299 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
300 $detector = new ilSimpleDetector($node);
301 $node->addDetector($detector);
302
303 require_once './Services/WorkflowEngine/classes/emitters/class.ilActivationEmitter.php';
304 $t_node = new ilBasicNode($this->workflow);
305 $t_detector = new ilSimpleDetector($t_node);
306 $t_node->addDetector($t_detector);
307 $foo_detector = new ilSimpleDetector($t_node);
308 $t_node->addDetector($foo_detector);
309 // again a foo_detector to keep the t_node from transitting
310
311 $emitter = new ilActivationEmitter($node);
312 $emitter->setTargetDetector($t_detector);
313 $node->addEmitter($emitter);
314 $node->setIsExclusiveFork(true);
315
316 // Act
317 $node->activate();
318 $node->executeTransition();
319
320 // Assert
321 $this->assertTrue($t_node->isActive());
322 }
323
324 public function testAddDetectorFirst()
325 {
326 // Arrange
327 $node = new ilCaseNode($this->workflow);
328 require_once './Services/WorkflowEngine/classes/detectors/class.ilSimpleDetector.php';
329 $detector = new ilSimpleDetector($node);
330
331 // Act
332 $node->addDetector($detector);
333 $detectors = $node->getDetectors();
334
335 // Assert
336 $this->assertEquals($detector, $detectors[0]);
337 }
338
339 public function testAddGetActivity()
340 {
341 // Arrange
342 $node = new ilCaseNode($this->workflow);
343 require_once './Services/WorkflowEngine/classes/activities/class.ilLoggingActivity.php';
344 $activity = new ilLoggingActivity($node);
345
346 // Act
347 $node->addActivity($activity);
348 $activities = $node->getActivities();
349
350 // Assert
351 $this->assertEquals($activity, $activities[0]);
352 }
353}
$success
Definition: Utf8Test.php:86
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
Definition: linkback.php:10
An exception for terminatinating execution or to throw for unit testing.
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
ilCaseNodeTest is part of the petri net based workflow engine.
testExecuteEmitterViaExecuteTransitionExclusiveFork()
testExecuteEmitterViaExecuteTransition()
testNotifyDetectorSatisfactionAndTransit()
testCheckTransitionPreconditionsValidOnExclusiveJoin()
testExecuteTransitionExclusiveFork()
testExecuteActivitiesViaExecuteTransition()
testCheckTransitionPreconditionsInvalid()
testCheckTransitionPreconditionsValid()
testAttemptTransitionPreconditionsValidOnExclusiveJoin()
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
@noinspection PhpIncludeInspection
global $ilSetting
Definition: privfeed.php:17