134 - Confirming That a Job Was Dispatched

This commit is contained in:
Adam Wathan
2017-08-22 14:25:04 -04:00
parent 049499366f
commit 028e8bab41
3 changed files with 54 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Backstage; namespace App\Http\Controllers\Backstage;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Jobs\SendAttendeeMessage;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@@ -26,6 +27,8 @@ class ConcertMessagesController extends Controller
$message = $concert->attendeeMessages()->create(request(['subject', 'message'])); $message = $concert->attendeeMessages()->create(request(['subject', 'message']));
SendAttendeeMessage::dispatch($message);
return redirect()->route('backstage.concert-messages.new', $concert) return redirect()->route('backstage.concert-messages.new', $concert)
->with('flash', "Your message has been sent."); ->with('flash', "Your message has been sent.");
} }

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class SendAttendeeMessage implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $attendeeMessage;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($attendeeMessage)
{
$this->attendeeMessage = $attendeeMessage;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
}
}

View File

@@ -6,6 +6,8 @@ use App\User;
use ConcertFactory; use ConcertFactory;
use Tests\TestCase; use Tests\TestCase;
use App\AttendeeMessage; use App\AttendeeMessage;
use App\Jobs\SendAttendeeMessage;
use Illuminate\Support\Facades\Queue;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
class MessageAttendeesTest extends TestCase class MessageAttendeesTest extends TestCase
@@ -57,6 +59,7 @@ class MessageAttendeesTest extends TestCase
{ {
$this->disableExceptionHandling(); $this->disableExceptionHandling();
Queue::fake();
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$concert = ConcertFactory::createPublished([ $concert = ConcertFactory::createPublished([
'user_id' => $user->id, 'user_id' => $user->id,
@@ -74,11 +77,16 @@ class MessageAttendeesTest extends TestCase
$this->assertEquals($concert->id, $message->concert_id); $this->assertEquals($concert->id, $message->concert_id);
$this->assertEquals('My subject', $message->subject); $this->assertEquals('My subject', $message->subject);
$this->assertEquals('My message', $message->message); $this->assertEquals('My message', $message->message);
Queue::assertPushed(SendAttendeeMessage::class, function ($job) use ($message) {
return $job->attendeeMessage->is($message);
});
} }
/** @test */ /** @test */
function a_promoter_cannot_send_a_new_message_for_other_concerts() function a_promoter_cannot_send_a_new_message_for_other_concerts()
{ {
Queue::fake();
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$otherUser = factory(User::class)->create(); $otherUser = factory(User::class)->create();
$concert = ConcertFactory::createPublished([ $concert = ConcertFactory::createPublished([
@@ -92,11 +100,13 @@ class MessageAttendeesTest extends TestCase
$response->assertStatus(404); $response->assertStatus(404);
$this->assertEquals(0, AttendeeMessage::count()); $this->assertEquals(0, AttendeeMessage::count());
Queue::assertNotPushed(SendAttendeeMessage::class);
} }
/** @test */ /** @test */
function a_guest_cannot_send_a_new_message_for_any_concerts() function a_guest_cannot_send_a_new_message_for_any_concerts()
{ {
Queue::fake();
$concert = ConcertFactory::createPublished(); $concert = ConcertFactory::createPublished();
$response = $this->post("/backstage/concerts/{$concert->id}/messages", [ $response = $this->post("/backstage/concerts/{$concert->id}/messages", [
@@ -106,11 +116,13 @@ class MessageAttendeesTest extends TestCase
$response->assertRedirect('/login'); $response->assertRedirect('/login');
$this->assertEquals(0, AttendeeMessage::count()); $this->assertEquals(0, AttendeeMessage::count());
Queue::assertNotPushed(SendAttendeeMessage::class);
} }
/** @test */ /** @test */
function subject_is_required() function subject_is_required()
{ {
Queue::fake();
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$concert = ConcertFactory::createPublished([ $concert = ConcertFactory::createPublished([
'user_id' => $user->id, 'user_id' => $user->id,
@@ -127,11 +139,13 @@ class MessageAttendeesTest extends TestCase
$response->assertSessionHasErrors('subject'); $response->assertSessionHasErrors('subject');
$this->assertEquals(0, AttendeeMessage::count()); $this->assertEquals(0, AttendeeMessage::count());
Queue::assertNotPushed(SendAttendeeMessage::class);
} }
/** @test */ /** @test */
function message_is_required() function message_is_required()
{ {
Queue::fake();
$user = factory(User::class)->create(); $user = factory(User::class)->create();
$concert = ConcertFactory::createPublished([ $concert = ConcertFactory::createPublished([
'user_id' => $user->id, 'user_id' => $user->id,
@@ -148,5 +162,6 @@ class MessageAttendeesTest extends TestCase
$response->assertSessionHasErrors('message'); $response->assertSessionHasErrors('message');
$this->assertEquals(0, AttendeeMessage::count()); $this->assertEquals(0, AttendeeMessage::count());
Queue::assertNotPushed(SendAttendeeMessage::class);
} }
} }