<?php

declare(strict_types=1);

use App\Filament\Resources\ManagedEnvironmentResource;
use App\Models\EntraGroup;
use App\Models\ManagedEnvironment;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

it('searches cached directory groups without Graph calls', function (): void {
    bindFailHardGraphClient();

    /** @var ManagedEnvironment $tenant */
    $tenant = ManagedEnvironment::factory()->create();

    EntraGroup::factory()
        ->for($tenant)
        ->create([
            'entra_id' => '33333333-3333-3333-3333-333333333333',
            'display_name' => 'TenantPilot Operators',
        ]);

    $options = assertNoOutboundHttp(fn () => ManagedEnvironmentResource::groupSearchOptions($tenant, 'Ten'));

    expect($options)->toMatchArray([
        '33333333-3333-3333-3333-333333333333' => 'TenantPilot Operators (…33333333)',
    ]);
});

it('resolves a directory group label from cached data without Graph calls', function (): void {
    bindFailHardGraphClient();

    /** @var ManagedEnvironment $tenant */
    $tenant = ManagedEnvironment::factory()->create();

    EntraGroup::factory()
        ->for($tenant)
        ->create([
            'entra_id' => '44444444-4444-4444-4444-444444444444',
            'display_name' => 'TenantPilot Admins',
        ]);

    $label = assertNoOutboundHttp(fn () => ManagedEnvironmentResource::groupLabelFromCache($tenant, '44444444-4444-4444-4444-444444444444'));

    expect($label)->toBe('TenantPilot Admins (…44444444)');
});
