<?php

declare(strict_types=1);

use App\Models\User;
use App\Models\Workspace;
use App\Models\WorkspaceMembership;
use App\Support\Workspaces\WorkspaceContext;

it('renders the workspace overview when a workspace is already selected', function (): void {
    $workspace = Workspace::factory()->create(['name' => 'Contoso Workspace']);
    [$user] = createUserWithTenant(
        tenant: \App\Models\ManagedEnvironment::factory()->create([
            'status' => 'active',
            'workspace_id' => (int) $workspace->getKey(),
        ]),
        role: 'owner',
        workspaceRole: 'owner',
    );

    $this->actingAs($user)
        ->withSession([WorkspaceContext::SESSION_KEY => (int) $workspace->getKey()])
        ->get(route('admin.workspace.home', ['workspace' => $workspace]))
        ->assertOk()
        ->assertSee('Workspace overview')
        ->assertSee('Contoso Workspace')
        ->assertSee(__('localization.shell.choose_environment'));
});

it('sends direct /admin visits without workspace context through the chooser even for a single membership', function (): void {
    $user = User::factory()->create();
    $workspace = Workspace::factory()->create();

    WorkspaceMembership::factory()->create([
        'workspace_id' => (int) $workspace->getKey(),
        'user_id' => (int) $user->getKey(),
        'role' => 'owner',
    ]);

    $user->forceFill(['last_workspace_id' => (int) $workspace->getKey()])->save();

    $this->actingAs($user)
        ->get('/admin')
        ->assertRedirect(route('filament.admin.pages.choose-workspace'));
});
