<?php

declare(strict_types=1);

use App\Filament\Resources\PolicyResource;
use App\Models\ManagedEnvironment;
use App\Models\Policy;
use App\Support\Workspaces\WorkspaceContext;
use Filament\Facades\Filament;

it('disables policy global search explicitly for the rollout', function (): void {
    $property = new \ReflectionProperty(PolicyResource::class, 'isGloballySearchable');
    $property->setAccessible(true);

    expect($property->getValue())->toBeFalse();
});

it('returns no policy global-search results even with a remembered canonical admin tenant', function (): void {
    $tenant = ManagedEnvironment::factory()->create();
    [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner');

    Policy::factory()->for($tenant)->create([
        'display_name' => 'Admin search policy',
    ]);

    $this->actingAs($user);
    Filament::setCurrentPanel('admin');
    Filament::setTenant(null, true);
    Filament::bootCurrentPanel();

    session()->put(WorkspaceContext::SESSION_KEY, (int) $tenant->workspace_id);
    session()->put(WorkspaceContext::LAST_ENVIRONMENT_IDS_SESSION_KEY, [
        (string) $tenant->workspace_id => (int) $tenant->getKey(),
    ]);

    expect(PolicyResource::getGlobalSearchResults('Admin search policy'))
        ->toHaveCount(0);
});
