TenantAtlas/apps/platform/tests/Unit/Support/TenantConfiguration/CoverageKernelValueTest.php
ahmido dfda397eb6 feat: migrate tcm first coverage core cutover (#481)
Automated PR provided by Codex via Gitea API.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #481
2026-06-25 12:54:56 +00:00

72 lines
2.3 KiB
PHP

<?php
declare(strict_types=1);
use App\Support\TenantConfiguration\ClaimState;
use App\Support\TenantConfiguration\CoverageLevel;
use App\Support\TenantConfiguration\EvidenceState;
use App\Support\TenantConfiguration\IdentityState;
use App\Support\TenantConfiguration\ResourceClass;
use App\Support\TenantConfiguration\RestoreTier;
use App\Support\TenantConfiguration\SourceClass;
use App\Support\TenantConfiguration\SupportState;
use App\Support\TenantConfiguration\Workload;
it('Spec414 exposes exactly the approved Coverage v2 kernel value families', function () {
expect(SourceClass::values())->toBe([
'tcm',
'graph_v1_fallback',
'graph_beta_experimental',
])
->and(Workload::values())->toBe(['intune'])
->and(ResourceClass::values())->toBe(['configuration'])
->and(SupportState::values())->toBe([
'supported',
'fallback_supported',
'experimental',
'unsupported',
'out_of_scope',
])
->and(CoverageLevel::values())->toBe([
'detected',
'content_backed',
'comparable',
'renderable',
'restorable',
'certified',
])
->and(EvidenceState::values())->toBe([
'not_captured',
'captured',
'content_backed',
'permission_blocked',
'source_unavailable',
'schema_unknown',
'capture_failed',
])
->and(IdentityState::values())->toBe([
'stable',
'derived',
'identity_conflict',
'missing_external_id',
'unsupported_identity',
])
->and(ClaimState::values())->toBe([
'claim_allowed',
'claim_limited',
'claim_blocked',
'internal_only',
])
->and(RestoreTier::values())->toBe([
'not_restorable',
'preview_only',
'restorable',
]);
});
it('Spec414 orders coverage levels by claim strength', function () {
expect(CoverageLevel::Certified->meets(CoverageLevel::Detected))->toBeTrue()
->and(CoverageLevel::Restorable->meets(CoverageLevel::Renderable))->toBeTrue()
->and(CoverageLevel::ContentBacked->meets(CoverageLevel::Comparable))->toBeFalse();
});