Skip to content

Commit d16750b

Browse files
committed
Added completed event and fixed using of incorrect event names.
1 parent a259780 commit d16750b

File tree

3 files changed

+44
-6
lines changed

3 files changed

+44
-6
lines changed

src/Events/CompletedEvent.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace Brexis\LaravelWorkflow\Events;
4+
5+
class CompletedEvent extends BaseEvent
6+
{
7+
8+
}

src/Events/WorkflowSubscriber.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public function leaveEvent(Event $event)
2424
event(new LeaveEvent($event));
2525
event('workflow.leave', $event);
2626
event('workflow.' . $event->getWorkflowName() . '.leave', $event);
27-
event('workflow.' . $event->getWorkflowName() . '.leave.' . $event->getTransition()->getName(), $event);
27+
foreach ($event->getTransition()->getFroms() as $marking) {
28+
event('workflow.' . $event->getWorkflowName() . '.leave.' . $marking, $event);
29+
}
2830
}
2931

3032
public function transitionEvent(Event $event)
@@ -40,17 +42,30 @@ public function enterEvent(Event $event)
4042
event(new EnterEvent($event));
4143
event('workflow.enter', $event);
4244
event('workflow.' . $event->getWorkflowName() . '.enter', $event);
43-
event('workflow.' . $event->getWorkflowName() . '.enter.' . $event->getTransition()->getName(), $event);
45+
foreach ($event->getTransition()->getTos() as $marking) {
46+
event('workflow.' . $event->getWorkflowName() . '.enter.' . $marking, $event);
47+
}
4448
}
4549

4650
public function enteredEvent(Event $event)
4751
{
4852
event(new EnteredEvent($event));
4953
event('workflow.entered', $event);
5054
event('workflow.' . $event->getWorkflowName() . '.entered', $event);
51-
event('workflow.' . $event->getWorkflowName() . '.entered.' . $event->getTransition()->getName(), $event);
55+
foreach ($event->getTransition()->getTos() as $marking) {
56+
event('workflow.' . $event->getWorkflowName() . '.entered.' . $marking, $event);
57+
}
5258
}
5359

60+
public function completedEvent(Event $event)
61+
{
62+
event(new CompletedEvent($event));
63+
event('workflow.completed', $event);
64+
event('workflow.' . $event->getWorkflowName() . '.completed', $event);
65+
event('workflow.' . $event->getWorkflowName() . '.completed.' . $event->getTransition()->getName(), $event);
66+
}
67+
68+
5469
public static function getSubscribedEvents()
5570
{
5671
return [
@@ -59,6 +74,7 @@ public static function getSubscribedEvents()
5974
'workflow.transition' => ['transitionEvent'],
6075
'workflow.enter' => ['enterEvent'],
6176
'workflow.entered' => ['enteredEvent'],
77+
'workflow.completed' => ['completedEvent'],
6278
];
6379
}
6480
}

tests/WorkflowSubscriberTest.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Tests {
44

5+
use Brexis\LaravelWorkflow\Events\AnnounceEvent;
6+
use Brexis\LaravelWorkflow\Events\CompletedEvent;
57
use Brexis\LaravelWorkflow\Events\EnteredEvent;
68
use Brexis\LaravelWorkflow\Events\EnterEvent;
79
use Brexis\LaravelWorkflow\Events\GuardEvent;
@@ -42,6 +44,8 @@ public function testIfWorkflowEmitsEvents()
4244

4345
$workflow->apply($object, 't1');
4446

47+
$this->assertCount(28, $events);
48+
4549
$this->assertInstanceOf(GuardEvent::class, $events[0]);
4650
$this->assertEquals('workflow.guard', $events[1]);
4751
$this->assertEquals('workflow.straight.guard', $events[2]);
@@ -50,7 +54,7 @@ public function testIfWorkflowEmitsEvents()
5054
$this->assertInstanceOf(LeaveEvent::class, $events[4]);
5155
$this->assertEquals('workflow.leave', $events[5]);
5256
$this->assertEquals('workflow.straight.leave', $events[6]);
53-
$this->assertEquals('workflow.straight.leave.t1', $events[7]);
57+
$this->assertEquals('workflow.straight.leave.a', $events[7]);
5458

5559
$this->assertInstanceOf(TransitionEvent::class, $events[8]);
5660
$this->assertEquals('workflow.transition', $events[9]);
@@ -60,12 +64,22 @@ public function testIfWorkflowEmitsEvents()
6064
$this->assertInstanceOf(EnterEvent::class, $events[12]);
6165
$this->assertEquals('workflow.enter', $events[13]);
6266
$this->assertEquals('workflow.straight.enter', $events[14]);
63-
$this->assertEquals('workflow.straight.enter.t1', $events[15]);
67+
$this->assertEquals('workflow.straight.enter.b', $events[15]);
6468

6569
$this->assertInstanceOf(EnteredEvent::class, $events[16]);
6670
$this->assertEquals('workflow.entered', $events[17]);
6771
$this->assertEquals('workflow.straight.entered', $events[18]);
68-
$this->assertEquals('workflow.straight.entered.t1', $events[19]);
72+
$this->assertEquals('workflow.straight.entered.b', $events[19]);
73+
74+
$this->assertInstanceOf(CompletedEvent::class, $events[20]);
75+
$this->assertEquals('workflow.completed', $events[21]);
76+
$this->assertEquals('workflow.straight.completed', $events[22]);
77+
$this->assertEquals('workflow.straight.completed.t1', $events[23]);
78+
79+
$this->assertInstanceOf(GuardEvent::class, $events[24]);
80+
$this->assertEquals('workflow.guard', $events[25]);
81+
$this->assertEquals('workflow.straight.guard', $events[26]);
82+
$this->assertEquals('workflow.straight.guard.t2', $events[27]);
6983
}
7084
}
7185
}

0 commit comments

Comments
 (0)