actingAs($user); Filament::setTenant($tenant, true); $profile = BaselineProfile::factory()->active()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'name' => 'Security Baseline', ]); $snapshot = BaselineSnapshot::factory()->create([ 'workspace_id' => (int) $tenant->workspace_id, 'baseline_profile_id' => (int) $profile->getKey(), ]); $policy = Policy::factory()->create([ 'tenant_id' => (int) $tenant->getKey(), 'display_name' => 'Windows Lockdown', ]); $version = PolicyVersion::factory()->create([ 'tenant_id' => (int) $tenant->getKey(), 'policy_id' => (int) $policy->getKey(), 'version_number' => 3, ]); $run = OperationRun::factory()->for($tenant)->create([ 'workspace_id' => (int) $tenant->workspace_id, 'type' => 'baseline_compare', ]); $finding = Finding::factory()->for($tenant)->create([ 'current_operation_run_id' => (int) $run->getKey(), 'evidence_jsonb' => [ 'current' => [ 'policy_version_id' => (int) $version->getKey(), ], 'provenance' => [ 'baseline_profile_id' => (int) $profile->getKey(), 'baseline_snapshot_id' => (int) $snapshot->getKey(), 'compare_operation_run_id' => (int) $run->getKey(), ], ], ]); $entries = app(RelatedNavigationResolver::class) ->detailEntries(CrossResourceNavigationMatrix::SOURCE_FINDING, $finding); expect(collect($entries)->pluck('key')->take(4)->values()->all()) ->toBe(['baseline_snapshot', 'source_run', 'current_policy_version', 'parent_policy']) ->and(collect($entries)->firstWhere('key', 'baseline_snapshot')['targetUrl']) ->toContain('/admin/baseline-snapshots/') ->and(collect($entries)->firstWhere('key', 'source_run')['targetUrl']) ->toContain('/admin/operations/'); }); it('picks the highest priority list action for backup sets', function (): void { [$user, $tenant] = createUserWithTenant(role: 'owner'); $this->actingAs($user); Filament::setTenant($tenant, true); $backupSet = \App\Models\BackupSet::factory()->create([ 'tenant_id' => (int) $tenant->getKey(), 'name' => 'Nightly backup', ]); $run = OperationRun::factory()->for($tenant)->create([ 'workspace_id' => (int) $tenant->workspace_id, 'type' => 'backup_set.add_policies', 'context' => [ 'backup_set_id' => (int) $backupSet->getKey(), ], ]); $action = app(RelatedNavigationResolver::class) ->primaryListAction(CrossResourceNavigationMatrix::SOURCE_BACKUP_SET, $backupSet); expect($action)->not->toBeNull() ->and($action?->actionLabel)->toBe('View run') ->and($action?->targetUrl)->toContain((string) $run->getKey()); });