From 5e45bfc6933dfc3aafae30360d91fc3f289f4381 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 14 Nov 2017 16:20:54 -0500 Subject: [PATCH] 143 - Testing Events --- app/Events/ConcertAdded.php | 23 +++++++++++++++++++ .../Backstage/ConcertsController.php | 3 +++ tests/Feature/Backstage/AddConcertTest.php | 18 +++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 app/Events/ConcertAdded.php diff --git a/app/Events/ConcertAdded.php b/app/Events/ConcertAdded.php new file mode 100644 index 0000000..6119ceb --- /dev/null +++ b/app/Events/ConcertAdded.php @@ -0,0 +1,23 @@ +concert = $concert; + } +} diff --git a/app/Http/Controllers/Backstage/ConcertsController.php b/app/Http/Controllers/Backstage/ConcertsController.php index aef02a1..a291d06 100644 --- a/app/Http/Controllers/Backstage/ConcertsController.php +++ b/app/Http/Controllers/Backstage/ConcertsController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Backstage; use App\Concert; use App\NullFile; use Carbon\Carbon; +use App\Events\ConcertAdded; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use App\Http\Controllers\Controller; @@ -59,6 +60,8 @@ class ConcertsController extends Controller 'poster_image_path' => request('poster_image', new NullFile)->store('posters', 'public'), ]); + ConcertAdded::dispatch($concert); + return redirect()->route('backstage.concerts.index'); } diff --git a/tests/Feature/Backstage/AddConcertTest.php b/tests/Feature/Backstage/AddConcertTest.php index fc60a6d..ec51b5d 100644 --- a/tests/Feature/Backstage/AddConcertTest.php +++ b/tests/Feature/Backstage/AddConcertTest.php @@ -6,7 +6,9 @@ use App\User; use App\Concert; use Carbon\Carbon; use Tests\TestCase; +use App\Events\ConcertAdded; use Illuminate\Http\Testing\File; +use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Storage; use Illuminate\Foundation\Testing\DatabaseMigrations; @@ -460,4 +462,20 @@ class AddConcertTest extends TestCase $this->assertNull($concert->poster_image_path); }); } + + /** @test */ + function an_event_is_fired_when_a_concert_is_added() + { + $this->disableExceptionHandling(); + + Event::fake([ConcertAdded::class]); + $user = factory(User::class)->create(); + + $response = $this->actingAs($user)->post('/backstage/concerts', $this->validParams()); + + Event::assertDispatched(ConcertAdded::class, function ($event) { + $concert = Concert::firstOrFail(); + return $event->concert->is($concert); + }); + } }