<?php

declare(strict_types=1);

use App\Filament\Pages\ChooseEnvironment;
use App\Models\ManagedEnvironment;
use App\Support\Workspaces\WorkspaceContext;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

pest()->browser()->timeout(20_000);

it('smokes managed-environment selection and temporary tenant-shell dashboard boot', function (): void {
    [$user, $environment] = createUserWithTenant(
        role: 'owner',
        workspaceRole: 'manager',
        ensureDefaultMicrosoftProviderConnection: false,
    );

    $environment->forceFill([
        'name' => 'Spec 279 Production',
        'slug' => 'spec-279-production',
        'kind' => 'production',
        'lifecycle_status' => ManagedEnvironment::STATUS_ACTIVE,
    ])->save();

    $this->actingAs($user)->withSession([
        WorkspaceContext::SESSION_KEY => (int) $environment->workspace_id,
    ]);

    visit(ChooseEnvironment::getUrl(panel: 'admin'))
        ->waitForText('Spec 279 Production')
        ->assertSee($environment->workspace->name)
        ->assertSee('Active')
        ->click('Spec 279 Production')
        ->waitForText('Spec 279 Production')
        ->assertPathContains('/admin/workspaces/'.$environment->workspace->slug.'/environments/spec-279-production')
        ->assertNoJavaScriptErrors()
        ->assertNoConsoleLogs();
});
