create(); $result = app(EvidenceSnapshotResolver::class)->resolve(new EvidenceResolutionRequest( workspaceId: (int) $tenant->workspace_id, tenantId: (int) $tenant->getKey(), requiredDimensions: ['findings_summary'], )); expect($result->outcome)->toBe('missing_snapshot'); }); it('resolves an eligible active snapshot', function (): void { $tenant = Tenant::factory()->create(); $snapshot = EvidenceSnapshot::query()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'status' => EvidenceSnapshotStatus::Active->value, 'completeness_state' => EvidenceCompletenessState::Complete->value, 'summary' => [], ]); $snapshot->items()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'dimension_key' => 'findings_summary', 'state' => EvidenceCompletenessState::Complete->value, 'required' => true, 'source_kind' => 'model_summary', 'source_record_type' => 'finding', 'summary_payload' => [], ]); $result = app(EvidenceSnapshotResolver::class)->resolve(new EvidenceResolutionRequest( workspaceId: (int) $tenant->workspace_id, tenantId: (int) $tenant->getKey(), requiredDimensions: ['findings_summary'], )); expect($result->isResolved())->toBeTrue(); }); it('returns snapshot ineligible when a required dimension is stale', function (): void { $tenant = Tenant::factory()->create(); $snapshot = EvidenceSnapshot::query()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'status' => EvidenceSnapshotStatus::Active->value, 'completeness_state' => EvidenceCompletenessState::Stale->value, 'summary' => [], ]); $snapshot->items()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'dimension_key' => 'findings_summary', 'state' => EvidenceCompletenessState::Stale->value, 'required' => true, 'source_kind' => 'model_summary', 'source_record_type' => 'finding', 'summary_payload' => [], ]); $result = app(EvidenceSnapshotResolver::class)->resolve(new EvidenceResolutionRequest( workspaceId: (int) $tenant->workspace_id, tenantId: (int) $tenant->getKey(), requiredDimensions: ['findings_summary'], )); expect($result->outcome)->toBe('snapshot_ineligible'); });