create(); $submission = FormSubmission::factory()->create(['form_schema_id' => $schema->id]); $this->assertSame($schema->id, $submission->schema->id); } public function test_form_submission_morphs_to_subject(): void { $person = Person::factory()->create(); $submission = FormSubmission::factory()->create([ 'subject_type' => 'person', 'subject_id' => $person->id, ]); $this->assertInstanceOf(Person::class, $submission->subject); $this->assertSame($person->id, $submission->subject->id); } public function test_form_submission_casts_status_to_enum(): void { $submission = FormSubmission::factory()->submitted()->create(); $this->assertSame(FormSubmissionStatus::SUBMITTED, $submission->fresh()->status); } public function test_form_submission_casts_schema_snapshot_to_array(): void { $snapshot = ['schema_version' => 2, 'fields' => [['slug' => 'shirtmaat']]]; $submission = FormSubmission::factory()->create(['schema_snapshot' => $snapshot]); $this->assertIsArray($submission->fresh()->schema_snapshot); $this->assertSame(2, $submission->fresh()->schema_snapshot['schema_version']); } public function test_form_submission_has_many_values(): void { $schema = FormSchema::factory()->create(); $fields = FormField::factory()->count(3)->for($schema, 'schema')->create(); $submission = FormSubmission::factory()->create(['form_schema_id' => $schema->id]); foreach ($fields as $field) { FormValue::create([ 'form_submission_id' => $submission->id, 'form_field_id' => $field->id, 'value' => ['value' => 'x'], ]); } $this->assertCount(3, $submission->fresh()->values); } }