Skip to content

Commit a259780

Browse files
committed
Added more event subscribers to conform to the way Symfony has the events set up. Also updated and added assert statements.
1 parent be4bc58 commit a259780

File tree

2 files changed

+77
-41
lines changed

2 files changed

+77
-41
lines changed

src/Events/WorkflowSubscriber.php

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,39 +11,54 @@
1111
*/
1212
class WorkflowSubscriber implements EventSubscriberInterface
1313
{
14-
public function guardEvent(SymfonyGuardEvent $event) {
14+
public function guardEvent(SymfonyGuardEvent $event)
15+
{
1516
event(new GuardEvent($event));
16-
event('workflow.'.$event->getWorkflowName().'.guard', $event);
17+
event('workflow.guard', $event);
18+
event('workflow.' . $event->getWorkflowName() . '.guard', $event);
19+
event('workflow.' . $event->getWorkflowName() . '.guard.' . $event->getTransition()->getName(), $event);
1720
}
1821

19-
public function leaveEvent(Event $event) {
22+
public function leaveEvent(Event $event)
23+
{
2024
event(new LeaveEvent($event));
21-
event('workflow.'.$event->getWorkflowName().'.leave', $event);
25+
event('workflow.leave', $event);
26+
event('workflow.' . $event->getWorkflowName() . '.leave', $event);
27+
event('workflow.' . $event->getWorkflowName() . '.leave.' . $event->getTransition()->getName(), $event);
2228
}
2329

24-
public function transitionEvent(Event $event) {
30+
public function transitionEvent(Event $event)
31+
{
2532
event(new TransitionEvent($event));
26-
event('workflow.'.$event->getWorkflowName().'.transition', $event);
33+
event('workflow.transition', $event);
34+
event('workflow.' . $event->getWorkflowName() . '.transition', $event);
35+
event('workflow.' . $event->getWorkflowName() . '.transition.' . $event->getTransition()->getName(), $event);
2736
}
2837

29-
public function enterEvent(Event $event) {
38+
public function enterEvent(Event $event)
39+
{
3040
event(new EnterEvent($event));
31-
event('workflow.'.$event->getWorkflowName().'.enter', $event);
41+
event('workflow.enter', $event);
42+
event('workflow.' . $event->getWorkflowName() . '.enter', $event);
43+
event('workflow.' . $event->getWorkflowName() . '.enter.' . $event->getTransition()->getName(), $event);
3244
}
3345

34-
public function enteredEvent(Event $event) {
46+
public function enteredEvent(Event $event)
47+
{
3548
event(new EnteredEvent($event));
36-
event('workflow.'.$event->getWorkflowName().'.entered', $event);
49+
event('workflow.entered', $event);
50+
event('workflow.' . $event->getWorkflowName() . '.entered', $event);
51+
event('workflow.' . $event->getWorkflowName() . '.entered.' . $event->getTransition()->getName(), $event);
3752
}
3853

3954
public static function getSubscribedEvents()
4055
{
4156
return [
42-
'workflow.guard' => ['guardEvent'],
43-
'workflow.leave' => ['leaveEvent'],
44-
'workflow.transition' => ['transitionEvent'],
45-
'workflow.enter' => ['enterEvent'],
46-
'workflow.entered' => ['enteredEvent'],
57+
'workflow.guard' => ['guardEvent'],
58+
'workflow.leave' => ['leaveEvent'],
59+
'workflow.transition' => ['transitionEvent'],
60+
'workflow.enter' => ['enterEvent'],
61+
'workflow.entered' => ['enteredEvent'],
4762
];
4863
}
4964
}

tests/WorkflowSubscriberTest.php

Lines changed: 47 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
<?php
2+
23
namespace Tests {
34

5+
use Brexis\LaravelWorkflow\Events\EnteredEvent;
6+
use Brexis\LaravelWorkflow\Events\EnterEvent;
7+
use Brexis\LaravelWorkflow\Events\GuardEvent;
8+
use Brexis\LaravelWorkflow\Events\LeaveEvent;
9+
use Brexis\LaravelWorkflow\Events\TransitionEvent;
410
use PHPUnit\Framework\TestCase;
511
use Brexis\LaravelWorkflow\WorkflowRegistry;
612
use Tests\Fixtures\TestObject;
@@ -13,44 +19,59 @@ public function testIfWorkflowEmitsEvents()
1319

1420
$events = [];
1521

16-
$config = [
17-
'straight' => [
18-
'supports' => ['Tests\Fixtures\TestObject'],
19-
'places' => ['a', 'b', 'c'],
20-
'transitions' => [
21-
't1' => [
22-
'from' => 'a',
23-
'to' => 'b',
22+
$config = [
23+
'straight' => [
24+
'supports' => [TestObject::class],
25+
'places' => ['a', 'b', 'c'],
26+
'transitions' => [
27+
't1' => [
28+
'from' => 'a',
29+
'to' => 'b',
30+
],
31+
't2' => [
32+
'from' => 'b',
33+
'to' => 'c',
34+
],
2435
],
25-
't2' => [
26-
'from' => 'b',
27-
'to' => 'c',
28-
]
2936
],
30-
]
3137
];
3238

33-
$registry = new WorkflowRegistry($config);
34-
$object = new TestObject;
35-
$workflow = $registry->get($object);
39+
$registry = new WorkflowRegistry($config);
40+
$object = new TestObject;
41+
$workflow = $registry->get($object);
3642

3743
$workflow->apply($object, 't1');
3844

39-
$this->assertTrue($events[0] instanceof \Brexis\LaravelWorkflow\Events\GuardEvent);
40-
$this->assertTrue($events[1] == "workflow.straight.guard");
41-
$this->assertTrue($events[2] instanceof \Brexis\LaravelWorkflow\Events\LeaveEvent);
42-
$this->assertTrue($events[3] == "workflow.straight.leave");
43-
$this->assertTrue($events[4] instanceof \Brexis\LaravelWorkflow\Events\TransitionEvent);
44-
$this->assertTrue($events[5] == "workflow.straight.transition");
45-
$this->assertTrue($events[6] instanceof \Brexis\LaravelWorkflow\Events\EnterEvent);
46-
$this->assertTrue($events[7] == "workflow.straight.enter");
47-
$this->assertTrue($events[8] instanceof \Brexis\LaravelWorkflow\Events\EnteredEvent);
48-
$this->assertTrue($events[9] == "workflow.straight.entered");
45+
$this->assertInstanceOf(GuardEvent::class, $events[0]);
46+
$this->assertEquals('workflow.guard', $events[1]);
47+
$this->assertEquals('workflow.straight.guard', $events[2]);
48+
$this->assertEquals('workflow.straight.guard.t1', $events[3]);
49+
50+
$this->assertInstanceOf(LeaveEvent::class, $events[4]);
51+
$this->assertEquals('workflow.leave', $events[5]);
52+
$this->assertEquals('workflow.straight.leave', $events[6]);
53+
$this->assertEquals('workflow.straight.leave.t1', $events[7]);
54+
55+
$this->assertInstanceOf(TransitionEvent::class, $events[8]);
56+
$this->assertEquals('workflow.transition', $events[9]);
57+
$this->assertEquals('workflow.straight.transition', $events[10]);
58+
$this->assertEquals('workflow.straight.transition.t1', $events[11]);
59+
60+
$this->assertInstanceOf(EnterEvent::class, $events[12]);
61+
$this->assertEquals('workflow.enter', $events[13]);
62+
$this->assertEquals('workflow.straight.enter', $events[14]);
63+
$this->assertEquals('workflow.straight.enter.t1', $events[15]);
64+
65+
$this->assertInstanceOf(EnteredEvent::class, $events[16]);
66+
$this->assertEquals('workflow.entered', $events[17]);
67+
$this->assertEquals('workflow.straight.entered', $events[18]);
68+
$this->assertEquals('workflow.straight.entered.t1', $events[19]);
4969
}
5070
}
5171
}
5272

5373
namespace {
74+
5475
$events = null;
5576

5677
function event($ev)

0 commit comments

Comments
 (0)