<?php

declare(strict_types=1);

it('avoids raw tenant lifecycle string checks in the spec 143 coordination seams', function (): void {
    $files = [
        base_path('app/Filament/Pages/ChooseEnvironment.php'),
        base_path('app/Http/Controllers/SelectEnvironmentController.php'),
        base_path('app/Support/Workspaces/WorkspaceContext.php'),
        base_path('app/Support/OperateHub/OperateHubShell.php'),
        base_path('app/Filament/Pages/Workspaces/ManagedEnvironmentsLanding.php'),
        base_path('app/Filament/Resources/ManagedEnvironmentResource.php'),
        base_path('app/Filament/Resources/ManagedEnvironmentResource/Pages/ViewManagedEnvironment.php'),
    ];

    $forbiddenPatterns = [
        '/where\(\s*[\'"]status[\'"]\s*,\s*[\'"](draft|onboarding|active|archived)[\'"]\s*\)/',
        '/->status\s*===\s*[\'"](draft|onboarding|active|archived)[\'"]/',
        '/status\s*=>\s*[\'"](draft|onboarding|active|archived)[\'"]/',
    ];

    foreach ($files as $file) {
        $contents = file_get_contents($file);

        expect($contents)->not->toBeFalse();

        foreach ($forbiddenPatterns as $pattern) {
            expect((int) preg_match($pattern, (string) $contents))
                ->toBe(0, "Unexpected ad hoc lifecycle check in {$file}: {$pattern}");
        }
    }
});
