|
5 | 5 | use PHPUnit\Framework\TestCase;
|
10000
6 | 6 | use Symfony\Component\EventDispatcher\EventDispatcher;
|
7 | 7 | use Symfony\Component\Workflow\Definition;
|
| 8 | +use Symfony\Component\Workflow\Event\Event; |
8 | 9 | use Symfony\Component\Workflow\Event\GuardEvent;
|
9 | 10 | use Symfony\Component\Workflow\Marking;
|
10 | 11 | use Symfony\Component\Workflow\MarkingStore\MarkingStoreInterface;
|
@@ -252,6 +253,65 @@ public function testApplyWithEventDispatcher()
|
252 | 253 | $this->assertSame($eventNameExpected, $eventDispatcher->dispatchedEvents);
|
253 | 254 | }
|
254 | 255 |
|
| 256 | + public function testMarkingStateOnApplyWithEventDispatcher() |
| 257 | + { |
| 258 | + $definition = new Definition(array('a', 'b', 'c', 'd', 'e', 'f'), array( |
| 259 | + new Transition('t', array('a', 'b', 'c'), array('d', 'e', 'f')), |
| 260 | + )); |
| 261 | + |
| 262 | + $initialState = array('a' => 1, 'b' => 1, 'c' => 1); |
| 263 | + $transitionState = array(); |
| 264 | + $finalState = array('d' => 1, 'e' => 1, 'f' => 1); |
| 265 | + |
| 266 | + $subject = new \stdClass(); |
| 267 | + $subject->marking = $initialState; |
| 268 | + |
| 269 | + $dispatcher = new EventDispatcher(); |
| 270 | + $dispatcher->addListener('workflow.leave', function (Event $event) use ($initialState) { |
| 271 | + $this->assertEquals(new Marking($initialState), $event->getMarking()); |
| 272 | + }); |
| 273 | + $dispatcher->addListener('workflow.test.leave', function (Event $event) use ($initialState) { |
| 274 | + $this->assertEquals(new Marking($initialState), $event->getMarking()); |
| 275 | + }); |
| 276 | + $dispatcher->addListener('workflow.test.leave.a', function (Event $event) use ($initialState) { |
| 277 | + $this->assertEquals(new Marking($initialState), $event->getMarking()); |
| 278 | + }); |
| 279 | + $dispatcher->addListener('workflow.test.leave.b', function (Event $event) use ($initialState) { |
| 280 | + $this->assertEquals(new Marking($initialState), $event->getMarking()); |
| 281 | + }); |
| 282 | + $dispatcher->addListener('workflow.test.leave.c', function (Event $event) use ($initialState) { |
| 283 | + $this->assertEquals(new Marking($initialState), $event->getMarking()); |
| 284 | + }); |
| 285 | + $dispatcher->addListener('workflow.transition', function (Event $event) use ($transitionState) { |
| 286 | + $this->assertEquals(new Marking($transitionState), $event->getMarking()); |
| 287 | + }); |
| 288 | + $dispatcher->addListener('workflow.test.transition', function (Event $event) use ($transitionState) { |
| 289 | + $this->assertEquals(new Marking($transitionState), $event->getMarking()); |
| 290 | + }); |
| 291 | + $dispatcher->addListener('workflow.test.transition.t', function (Event $event) use ($transitionState) { |
| 292 | + $this->assertEquals(new Marking($transitionState), $event->getMarking()); |
| 293 | + }); |
| 294 | + $dispatcher->addListener('workflow.enter', function (Event $event) use ($finalState) { |
| 295 | + $this->assertEquals(new Marking($finalState), $event->getMarking()); |
| 296 | + }); |
| 297 | + $dispatcher->addListener('workflow.test.enter', function (Event $event) use ($finalState) { |
| 298 | + $this->assertEquals(new Marking($finalState), $event->getMarking()); |
| 299 | + }); |
| 300 | + $dispatcher->addListener('workflow.test.enter.d', function (Event $event) use ($finalState) { |
| 301 | + $this->assertEquals(new Marking($finalState), $event->getMarking()); |
| 302 | + }); |
| 303 | + $dispatcher->addListener('workflow.test.enter.e', function (Event $event) use ($finalState) { |
| 304 | + $this->assertEquals(new Marking($finalState), $event->getMarking()); |
| 305 | + }); |
| 306 | + $dispatcher->addListener('workflow.test.enter.f', function (Event $event) use ($finalState) { |
| 307 | + $this->assertEquals(new Marking($finalState), $event->getMarking()); |
| 308 | + }); |
| 309 | + |
| 310 | + $workflow = new Workflow($definition, new MultipleStateMarkingStore(), $dispatcher, 'test'); |
| 311 | + |
| 312 | + $workflow->apply($subject, 't'); |
| 313 | + } |
| 314 | + |
255 | 315 | public function testGetEnabledTransitions()
|
256 | 316 | {
|
257 | 317 | $definition = $this->createComplexWorkflowDefinition();
|
|
0 commit comments