buildValidSchema(); $provider = $this->app->make(SupplierIntakeGuards::class); foreach ($provider->publishGuards() as $guard) { $result = $guard->evaluate($schema); $this->assertTrue( $result->passed, "Guard {$guard->code()} failed: {$result->messageKey}", ); } } public function test_two_identity_keys_on_company_fails(): void { $schema = $this->buildValidSchema(); $extraField = FormField::factory()->create(['form_schema_id' => $schema->id]); FormFieldBinding::factory()->forField($extraField)->entityOwned('company', 'kvk_number') ->create(['is_identity_key' => true, 'trust_level' => 60]); $schema->load('fields.bindings'); $provider = $this->app->make(SupplierIntakeGuards::class); $failedCodes = []; foreach ($provider->publishGuards() as $guard) { $result = $guard->evaluate($schema); if (! $result->passed) { $failedCodes[] = $guard->code(); } } $this->assertContains('max_one_identity_key_per_target_entity', $failedCodes); } private function buildValidSchema(): FormSchema { $schema = FormSchema::factory()->create([ 'purpose' => FormPurpose::SUPPLIER_INTAKE->value, ]); $field = FormField::factory()->create(['form_schema_id' => $schema->id]); FormFieldBinding::factory()->forField($field)->entityOwned('company', 'name') ->create(['is_identity_key' => true, 'trust_level' => 80]); $schema->load(['fields.bindings', 'sections']); return $schema; } }