Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
<?php // tests/Feature/OrderTest.php namespace Tests\Feature; use App\Jobs\ProcessOrder; use App\Mail\OrderConfirmation; use App\Models\Order; use App\Models\User; use App\Notifications\OrderShipped; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Queue; use Tests\TestCase; class OrderTest extends TestCase { use RefreshDatabase; public function test_placing_an_order_dispatches_job_and_sends_email(): void { Queue::fake(); Mail::fake(); Notification::fake(); $user = User::factory()->create(); $response = $this->actingAs($user, 'sanctum') ->postJson('/api/v1/orders', ['product_id' => 1, 'quantity' => 2]); $response->assertCreated(); Queue::assertPushed(ProcessOrder::class, function ($job) use ($user) { return $job->order->user_id === $user->id; }); Mail::assertQueued(OrderConfirmation::class, fn($mail) => $mail->hasTo($user->email) ); Notification::assertSentTo($user, OrderShipped::class); } }
Result
Open