create(); $policy = Policy::factory()->create(['tenant_id' => $tenant->id]); $oldNonCurrent = PolicyVersion::factory()->create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'captured_at' => now()->subDays(120), ]); PolicyVersion::factory()->create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 2, 'captured_at' => now()->subDays(10), ]); $eligibleIds = PolicyVersion::query() ->where('tenant_id', $tenant->id) ->pruneEligible(90) ->pluck('id') ->all(); expect($eligibleIds)->toBe([$oldNonCurrent->id]); }); test('pruneEligible excludes current even when old', function () { $tenant = Tenant::factory()->create(); $policy = Policy::factory()->create(['tenant_id' => $tenant->id]); PolicyVersion::factory()->create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'captured_at' => now()->subDays(120), ]); $eligibleCount = PolicyVersion::query() ->where('tenant_id', $tenant->id) ->pruneEligible(90) ->count(); expect($eligibleCount)->toBe(0); }); test('pruneEligible excludes archived versions', function () { $tenant = Tenant::factory()->create(); $policy = Policy::factory()->create(['tenant_id' => $tenant->id]); $archived = PolicyVersion::factory()->create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'captured_at' => now()->subDays(120), ]); PolicyVersion::factory()->create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 2, 'captured_at' => now()->subDays(120), ]); $archived->delete(); $eligibleIds = PolicyVersion::query() ->where('tenant_id', $tenant->id) ->pruneEligible(90) ->pluck('id') ->all(); expect($eligibleIds)->not->toContain($archived->id); });