From 0aa39b11e18622f0d77bdcbe1923192f2d266b46 Mon Sep 17 00:00:00 2001 From: Jeffrey Way Date: Thu, 25 Sep 2014 17:35:58 -0400 Subject: [PATCH] Make dispatchable trait more testable --- .../Commander/Events/DispatchableSpec.php | 37 +++++++++++++++++++ .../Commander/Events/Contracts/Dispatcher.php | 12 ++++++ .../Commander/Events/DispatchableTrait.php | 25 +++++++++++-- .../Commander/Events/EventDispatcher.php | 16 +++++--- 4 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 spec/Laracasts/Commander/Events/DispatchableSpec.php create mode 100644 src/Laracasts/Commander/Events/Contracts/Dispatcher.php diff --git a/spec/Laracasts/Commander/Events/DispatchableSpec.php b/spec/Laracasts/Commander/Events/DispatchableSpec.php new file mode 100644 index 0000000..3a3fe31 --- /dev/null +++ b/spec/Laracasts/Commander/Events/DispatchableSpec.php @@ -0,0 +1,37 @@ +beAnInstanceOf(HandlerStub::class); + } + + function it_dispatches_stuff(Dispatcher $dispatcher) + { + $this->setDispatcher($dispatcher); + + $this->dispatchEventsFor(new EntityStub); + + $dispatcher->dispatch([])->shouldBeCalled(); + } + +} + + +class HandlerStub { + use \Laracasts\Commander\Events\DispatchableTrait; +} + +class EntityStub { + + public function releaseEvents() + { + return []; + } + +} \ No newline at end of file diff --git a/src/Laracasts/Commander/Events/Contracts/Dispatcher.php b/src/Laracasts/Commander/Events/Contracts/Dispatcher.php new file mode 100644 index 0000000..329079e --- /dev/null +++ b/src/Laracasts/Commander/Events/Contracts/Dispatcher.php @@ -0,0 +1,12 @@ +getDispatcher()->dispatch($entity->releaseEvents()); } + /** + * Set the dispatcher instance. + * + * @param mixed $dispatcher + */ + public function setDispatcher(Dispatcher $dispatcher) + { + $this->dispatcher = $dispatcher; + } + /** * Get the event dispatcher. * - * @return \Laracasts\Commander\Events\EventDispatcher + * @return Dispatcher */ public function getDispatcher() { - return App::make('Laracasts\Commander\Events\EventDispatcher'); + return $this->dispatcher ?: App::make('Laracasts\Commander\Events\EventDispatcher'); } + } \ No newline at end of file diff --git a/src/Laracasts/Commander/Events/EventDispatcher.php b/src/Laracasts/Commander/Events/EventDispatcher.php index 369069f..95d2cae 100644 --- a/src/Laracasts/Commander/Events/EventDispatcher.php +++ b/src/Laracasts/Commander/Events/EventDispatcher.php @@ -1,21 +1,28 @@