public function testGetEnabledTransitions() { $definition = $this->createComplexWorkflow(); $subject = new \stdClass(); $subject->marking = null; $eventDispatcher = new EventDispatcher(); $eventDispatcher->addListener('workflow.workflow_name.guard.t1', function (GuardEvent $event) { $event->setBlocked(true); }); $workflow = new Workflow($definition, new PropertyAccessorMarkingStore(), $eventDispatcher, 'workflow_name'); $this->assertEmpty($workflow->getEnabledTransitions($subject)); $subject->marking = array('d' => true); $transitions = $workflow->getEnabledTransitions($subject); $this->assertCount(2, $transitions); $this->assertSame('t3', $transitions['t3']->getName()); $this->assertSame('t4', $transitions['t4']->getName()); $subject->marking = array('c' => true, 'e' => true); $transitions = $workflow->getEnabledTransitions($subject); $this->assertCount(1, $transitions); $this->assertSame('t5', $transitions['t5']->getName()); }