Document::factory()->create()->id, 'doctor_id' => User::factory()->create()->id, 'status' => ReportStatusEnum::Approved->name, 'body' => 'متن گزارش', 'submitted_at' => '2026-09-21 10:00:00', ], $overrides); } public function test_passes_with_valid_payload(): void { $this->assertPasses(ReportRequest::class, $this->valid()); } public function test_passes_with_existing_medium(): void { $this->assertPasses(ReportRequest::class, $this->valid(['medium_id' => Medium::factory()->create()->id])); } public function test_fails_without_required_fields(): void { $errors = $this->formRequestErrors(ReportRequest::class, []); foreach (['document_id', 'doctor_id', 'status', 'body', 'submitted_at'] as $field) { $this->assertArrayHasKey($field, $errors); } } public function test_fails_with_unknown_document_doctor_or_medium(): void { $this->assertFailsOn('document_id', ReportRequest::class, $this->valid(['document_id' => 999])); $this->assertFailsOn('doctor_id', ReportRequest::class, $this->valid(['doctor_id' => 999])); $this->assertFailsOn('medium_id', ReportRequest::class, $this->valid(['medium_id' => 999])); } public function test_fails_when_status_is_a_value_instead_of_key(): void { $this->assertFailsOn('status', ReportRequest::class, $this->valid(['status' => ReportStatusEnum::Approved->value])); } public function test_fails_with_invalid_submitted_at(): void { $this->assertFailsOn('submitted_at', ReportRequest::class, $this->valid(['submitted_at' => 'x'])); } }