<?php

declare(strict_types=1);

use Illuminate\Support\Collection;
use Tests\Support\TestLaneManifest;

it('excludes browser, discovery-heavy, and surface-guard families from fast-feedback discovery', function (): void {
    $files = collect(TestLaneManifest::discoverFiles('fast-feedback'));
    $discoveryValidation = TestLaneManifest::validateLanePlacement(
        laneId: 'fast-feedback',
        filePath: 'tests/Feature/Filament/PolicyResourceAdminSearchParityTest.php',
    );

    expect($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Browser/')))->toBeFalse()
        ->and($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Feature/OpsUx/')))->toBeFalse()
        ->and($files)->not->toContain('tests/Feature/Guards/ActionSurfaceContractTest.php')
        ->and($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Architecture/')))->toBeFalse()
        ->and($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Deprecation/')))->toBeFalse()
        ->and($discoveryValidation['valid'])->toBeFalse()
        ->and($discoveryValidation['resolvedClassificationId'])->toBe('discovery-heavy');
});

it('keeps fast-feedback focused on the quick-edit families the manifest declares', function (): void {
    $files = new Collection(TestLaneManifest::discoverFiles('fast-feedback'));

    expect($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Unit/')))->toBeTrue()
        ->and($files->contains(static fn (string $path): bool => str_starts_with($path, 'tests/Feature/Guards/')))->toBeTrue()
        ->and($files)->not->toContain(
            'tests/Feature/Baselines/BaselineCompareMatrixCompareAllActionTest.php',
            'tests/Feature/Drift/DriftBulkAcknowledgeAllMatchingConfirmationTest.php',
            'tests/Feature/Findings/FindingBulkActionsTest.php',
            'tests/Feature/Rbac/OnboardingWizardUiEnforcementTest.php',
        );
});