referenceClass, rawIdentifier: $descriptor->rawIdentifier, primaryLabel: 'Matched policy', secondaryLabel: null, state: ReferenceResolutionState::Resolved, stateLabel: null, linkTarget: null, technicalDetail: ReferenceTechnicalDetail::forIdentifier($descriptor->rawIdentifier), ); } }; $registry = new ReferenceResolverRegistry( resolvers: [$resolver], fallbackResolver: new FallbackReferenceResolver, ); $resolved = $registry->resolve(new ReferenceDescriptor( referenceClass: ReferenceClass::Policy, rawIdentifier: '17', )); expect($resolved->primaryLabel)->toBe('Matched policy'); }); it('falls back for unsupported classes', function (): void { $registry = new ReferenceResolverRegistry( resolvers: [], fallbackResolver: new FallbackReferenceResolver, ); $resolved = $registry->resolve(new ReferenceDescriptor( referenceClass: ReferenceClass::Unsupported, rawIdentifier: 'raw-guid', fallbackLabel: 'Stored fallback', )); expect($resolved->state)->toBe(ReferenceResolutionState::PartiallyResolved) ->and($resolved->primaryLabel)->toBe('Stored fallback'); });