Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 01ffe81

Browse files
committed
fixed marking states in leave events
1 parent 43fc456 commit 01ffe81

File tree

2 files changed

+10
-11
lines changed

2 files changed

+10
-11
lines changed

src/Symfony/Component/Workflow/Tests/WorkflowTest.php

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -274,16 +274,13 @@ public function testMarkingStateOnApplyWithEventDispatcher()
274274
$this->assertEquals(new Marking($initialState), $event->getMarking());
275275
});
276276
$dispatcher->addListener('workflow.test.leave.a', function (Event $event) use ($initialState) {
277-
// Fails
278-
//$this->assertEquals(new Marking($initialState), $event->getMarking());
277+
$this->assertEquals(new Marking($initialState), $event->getMarking());
279278
});
280279
$dispatcher->addListener('workflow.test.leave.b', function (Event $event) use ($initialState) {
281-
// Fails
282-
//$this->assertEquals(new Marking($initialState), $event->getMarking());
280+
$this->assertEquals(new Marking($initialState), $event->getMarking());
283281
});
284282
$dispatcher->addListener('workflow.test.leave.c', function (Event $event) use ($initialState) {
285-
// Fails
286-
//$this->assertEquals(new Marking($initialState), $event->getMarking());
283+
$this->assertEquals(new Marking($initialState), $event->getMarking());
287284
});
288285
$dispatcher->addListener('workflow.transition', function (Event $event) use ($transitionState) {
289286
$this->assertEquals(new Marking($transitionState), $event->getMarking());

src/Symfony/Component/Workflow/Workflow.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,22 @@ private function guardTransition($subject, Marking $marking, Transition $transit
223223

224224
private function leave($subject, Transition $transition, Marking $marking)
225225
{
226+
$froms = $transition->getFroms();
227+
226228
if (null !== $this->dispatcher) {
227229
$event = new Event($subject, $marking, $transition);
228230

229231
$this->dispatcher->dispatch('workflow.leave', $event);
230232
$this->dispatcher->dispatch(sprintf('workflow.%s.leave', $this->name), $event);
231-
}
232-
233-
foreach ($transition->getFroms() as $place) {
234-
$marking->unmark($place);
235233

236-
if (null !== $this->dispatcher) {
234+
foreach ($froms as $place) {
237235
$this->dispatcher->dispatch(sprintf('workflow.%s.leave.%s', $this->name, $place), $event);
238236
}
239237
}
238+
239+
foreach ($froms as $place) {
240+
$marking->unmark($place);
241+
}
240242
}
241243

242244
private function transition($subject, Transition $transition, Marking $marking)

0 commit comments

Comments
 (0)