assertCount(7, FormPurpose::cases()); } public function test_values_match_v1_vocabulary(): void { $this->assertSame( [ 'event_registration', 'artist_advance', 'supplier_intake', 'post_event_evaluation', 'incident_report', 'signature_contract', 'user_profile', ], FormPurpose::values(), ); } public function test_default_submission_mode_delegates_to_registry(): void { $this->assertSame(FormSubmissionMode::SINGLE, FormPurpose::EVENT_REGISTRATION->defaultSubmissionMode()); $this->assertSame(FormSubmissionMode::DRAFT_SINGLE, FormPurpose::ARTIST_ADVANCE->defaultSubmissionMode()); $this->assertSame(FormSubmissionMode::SINGLE, FormPurpose::SUPPLIER_INTAKE->defaultSubmissionMode()); $this->assertSame(FormSubmissionMode::MULTIPLE, FormPurpose::INCIDENT_REPORT->defaultSubmissionMode()); $this->assertSame(FormSubmissionMode::SINGLE, FormPurpose::USER_PROFILE->defaultSubmissionMode()); } public function test_default_subject_type_delegates_to_registry(): void { $this->assertSame('person', FormPurpose::EVENT_REGISTRATION->defaultSubjectType()); $this->assertSame('artist', FormPurpose::ARTIST_ADVANCE->defaultSubjectType()); $this->assertSame('company', FormPurpose::SUPPLIER_INTAKE->defaultSubjectType()); $this->assertSame('person', FormPurpose::POST_EVENT_EVALUATION->defaultSubjectType()); $this->assertSame('person', FormPurpose::INCIDENT_REPORT->defaultSubjectType()); $this->assertSame('user', FormPurpose::SIGNATURE_CONTRACT->defaultSubjectType()); $this->assertSame('user', FormPurpose::USER_PROFILE->defaultSubjectType()); } public function test_only_event_registration_allows_public_access(): void { $this->assertTrue(FormPurpose::EVENT_REGISTRATION->allowsPublicAccess()); $this->assertFalse(FormPurpose::ARTIST_ADVANCE->allowsPublicAccess()); $this->assertFalse(FormPurpose::SUPPLIER_INTAKE->allowsPublicAccess()); $this->assertFalse(FormPurpose::POST_EVENT_EVALUATION->allowsPublicAccess()); $this->assertFalse(FormPurpose::INCIDENT_REPORT->allowsPublicAccess()); $this->assertFalse(FormPurpose::SIGNATURE_CONTRACT->allowsPublicAccess()); $this->assertFalse(FormPurpose::USER_PROFILE->allowsPublicAccess()); } }