$role, 'guard_name' => 'web']); } } private function createUser(string $role): User { $user = User::factory()->create(); $user->assignRole($role); return $user; } public function test_unauthenticated_cannot_export_pdf(): void { $this->get('/export/pdf')->assertRedirect('/login'); } public function test_authenticated_can_export_all_miskin_pdf(): void { $this->actingAs($this->createUser('pemangku_kebijakan')); $response = $this->get('/export/pdf'); $response->assertOk(); $response->assertHeader('content-type', 'application/pdf'); } public function test_radius_pdf_returns_404_for_invalid_ibadah(): void { $this->actingAs($this->createUser('administrator')); $this->get('/export/pdf/radius/99999/500')->assertNotFound(); } public function test_radius_pdf_returns_pdf_for_valid_ibadah(): void { $admin = $this->createUser('administrator'); $this->actingAs($admin); $ibadah = RumahIbadah::create([ 'user_id' => $admin->id, 'nama' => 'Test Masjid', 'jenis' => 'masjid', 'latitude' => -7.0, 'longitude' => 110.0, 'radius' => 500, ]); $response = $this->get("/export/pdf/radius/{$ibadah->id}/500"); $response->assertOk(); $response->assertHeader('content-type', 'application/pdf'); } public function test_radius_pdf_rejects_non_numeric_params(): void { $this->actingAs($this->createUser('administrator')); $this->get('/export/pdf/radius/abc/def')->assertNotFound(); } }