value, url: '/admin/t/1/policy-versions/42', actionLabel: 'View policy version', contextBadge: 'Tenant', ), technicalDetail: ReferenceTechnicalDetail::forIdentifier('42', 'Captured from drift evidence'), meta: ['foo' => 'bar'], ); expect($reference->isLinkable())->toBeTrue() ->and($reference->toArray())->toMatchArray([ 'referenceClass' => 'policy_version', 'rawIdentifier' => '42', 'primaryLabel' => 'Windows Lockdown', 'secondaryLabel' => 'Version 3', 'state' => 'resolved', 'linkTarget' => [ 'targetKind' => 'policy_version', 'url' => '/admin/t/1/policy-versions/42', 'actionLabel' => 'View policy version', 'contextBadge' => 'Tenant', ], 'technicalDetail' => [ 'displayId' => '42', 'fullId' => '42', 'sourceHint' => 'Captured from drift evidence', 'copyable' => true, 'defaultCollapsed' => true, ], 'meta' => ['foo' => 'bar'], ]); }); it('drops linkability when the link target is removed', function (): void { $reference = new ResolvedReference( referenceClass: ReferenceClass::Policy, rawIdentifier: '13', primaryLabel: 'Baseline policy', secondaryLabel: null, state: ReferenceResolutionState::Resolved, stateLabel: null, linkTarget: new ReferenceLinkTarget( targetKind: ReferenceClass::Policy->value, url: '/admin/t/1/policies/13', actionLabel: 'View policy', ), technicalDetail: ReferenceTechnicalDetail::forIdentifier('13'), ); expect($reference->withLinkTarget(null)->isLinkable())->toBeFalse(); });