<?php

declare(strict_types=1);

use App\Filament\Resources\ProviderConnectionResource;
use App\Models\ProviderConnection;
use App\Models\Tenant;

it('returns an empty canonical list for unauthorized tenant filters', function (): void {
    $tenantA = Tenant::factory()->create(['name' => 'Tenant A']);
    $tenantB = Tenant::factory()->create(['name' => 'Tenant B']);

    [$user] = createUserWithTenant($tenantA, role: 'owner');

    ProviderConnection::factory()->create([
        'tenant_id' => (int) $tenantA->getKey(),
        'workspace_id' => (int) $tenantA->workspace_id,
        'display_name' => 'Tenant A Connection',
    ]);

    ProviderConnection::factory()->create([
        'tenant_id' => (int) $tenantB->getKey(),
        'workspace_id' => (int) $tenantB->workspace_id,
        'display_name' => 'Tenant B Connection',
    ]);

    $this->actingAs($user)
        ->get(ProviderConnectionResource::getUrl('index', tenant: $tenantB))
        ->assertOk()
        ->assertDontSee('Tenant A Connection')
        ->assertDontSee('Tenant B Connection');
});

it('does not show non-member tenants in the choose-tenant list', function (): void {
    $tenantA = Tenant::factory()->create(['name' => 'Tenant A']);
    $tenantB = Tenant::factory()->create(['name' => 'Tenant B']);

    [$user] = createUserWithTenant($tenantA, role: 'owner');

    $this->actingAs($user)
        ->get('/admin/choose-tenant')
        ->assertOk()
        ->assertSee('Tenant A')
        ->assertDontSee('Tenant B');
});

it('keeps provider connections excluded from global search', function (): void {
    $property = new ReflectionProperty(ProviderConnectionResource::class, 'isGloballySearchable');
    $property->setAccessible(true);

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