assertPasses(DocumentRequest::class, ['pet_id' => Pet::factory()->create()->id]); } public function test_passes_with_all_optional_fields(): void { $this->assertPasses(DocumentRequest::class, [ 'pet_id' => Pet::factory()->create()->id, 'modality' => 'mri', 'status' => DocumentStatusEnum::Registered->name, 'priority' => DocumentPriorityEnum::High->name, 'note' => 'n', 'submitted_at' => '2026-09-21', 'scan_date' => '2026-09-21 10:00:00', 'processing_deadline' => '2026-09-22', 'primary_files' => [], 'history_files' => [], ]); } public function test_fails_without_pet_or_with_unknown_pet(): void { $this->assertFailsOn('pet_id', DocumentRequest::class, []); $this->assertFailsOn('pet_id', DocumentRequest::class, ['pet_id' => 999]); } public function test_fails_when_status_or_priority_is_a_value_instead_of_key(): void { $petId = Pet::factory()->create()->id; $this->assertFailsOn('status', DocumentRequest::class, ['pet_id' => $petId, 'status' => DocumentStatusEnum::Registered->value]); $this->assertFailsOn('priority', DocumentRequest::class, ['pet_id' => $petId, 'priority' => DocumentPriorityEnum::High->value]); } public function test_fails_with_invalid_dates_or_non_array_files(): void { $petId = Pet::factory()->create()->id; $this->assertFailsOn('submitted_at', DocumentRequest::class, ['pet_id' => $petId, 'submitted_at' => 'x']); $this->assertFailsOn('primary_files', DocumentRequest::class, ['pet_id' => $petId, 'primary_files' => 'x']); } }