diff --git a/src/Symfony/Component/Workflow/CHANGELOG.md b/src/Symfony/Component/Workflow/CHANGELOG.md index 51a52777dfa8e..d1b50cb4ef497 100644 --- a/src/Symfony/Component/Workflow/CHANGELOG.md +++ b/src/Symfony/Component/Workflow/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +3.4.0 +----- + + * Added support for `Event::getWorkflowName()` for "announce" events. + 3.3.0 ----- diff --git a/src/Symfony/Component/Workflow/Tests/WorkflowTest.php b/src/Symfony/Component/Workflow/Tests/WorkflowTest.php index 212bd5f3f9411..3ca61914aad1c 100644 --- a/src/Symfony/Component/Workflow/Tests/WorkflowTest.php +++ b/src/Symfony/Component/Workflow/Tests/WorkflowTest.php @@ -276,6 +276,35 @@ public function testApplyWithEventDispatcher() $this->assertSame($eventNameExpected, $eventDispatcher->dispatchedEvents); } + public function testEventName() + { + $definition = $this->createComplexWorkflowDefinition(); + $subject = new \stdClass(); + $subject->marking = null; + $dispatcher = new EventDispatcher(); + $name = 'workflow_name'; + $workflow = new Workflow($definition, new MultipleStateMarkingStore(), $dispatcher, $name); + + $assertWorkflowName = function (Event $event) use ($name) { + $this->assertEquals($name, $event->getWorkflowName()); + }; + + $eventNames = array( + 'workflow.guard', + 'workflow.leave', + 'workflow.transition', + 'workflow.enter', + 'workflow.entered', + 'workflow.announce', + ); + + foreach ($eventNames as $eventName) { + $dispatcher->addListener($eventName, $assertWorkflowName); + } + + $workflow->apply($subject, 't1'); + } + public function testMarkingStateOnApplyWithEventDispatcher() { $definition = new Definition(range('a', 'f'), array(new Transition('t', range('a', 'c'), range('d', 'f')))); diff --git a/src/Symfony/Component/Workflow/Workflow.php b/src/Symfony/Component/Workflow/Workflow.php index 1791b568d79be..617c05b381e09 100644 --- a/src/Symfony/Component/Workflow/Workflow.php +++ b/src/Symfony/Component/Workflow/Workflow.php @@ -298,7 +298,7 @@ private function announce($subject, Transition $initialTransition, Marking $mark return; } - $event = new Event($subject, $marking, $initialTransition); + $event = new Event($subject, $marking, $initialTransition, $this->name); $this->dispatcher->dispatch('workflow.announce', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.announce', $this->name), $event);