seed(RoleSeeder::class); } public function test_email_is_sent_to_users_with_role(): void { Mail::fake(); $approver = User::factory()->create(); $approver->assignRole('travel_approver'); $workflow = ApprovalWorkflow::factory()->create(['is_active' => true]); ApprovalStep::factory()->create(['workflow_id' => $workflow->id, 'order' => 1, 'role' => 'travel_approver']); $staff = User::factory()->create(); $request = TravelRequest::factory()->create([ 'user_id' => $staff->id, 'workflow_id' => $workflow->id, ]); SendApprovalRequestEmail::dispatch($request, 'travel_approver'); (new SendApprovalRequestEmail($request, 'travel_approver'))->handle(); Mail::assertQueued(ApprovalRequestMail::class, fn ($mail) => $mail->hasTo($approver->email)); } public function test_no_email_sent_when_no_users_with_role(): void { Mail::fake(); $staff = User::factory()->create(); $request = TravelRequest::factory()->create(['user_id' => $staff->id]); (new SendApprovalRequestEmail($request, 'travel_approver'))->handle(); Mail::assertNothingSent(); } }