<?php

declare(strict_types=1);

use App\Filament\Pages\TenantDashboard;
use App\Models\Finding;
use App\Models\OperationRun;
use Illuminate\Support\Facades\Bus;

it('renders the tenant dashboard DB-only (no outbound HTTP, no background work)', function (): void {
    [$user, $tenant] = createUserWithTenant(role: 'owner');

    Finding::factory()->create([
        'tenant_id' => $tenant->getKey(),
        'finding_type' => Finding::FINDING_TYPE_DRIFT,
        'severity' => Finding::SEVERITY_HIGH,
        'status' => Finding::STATUS_NEW,
    ]);

    OperationRun::factory()->create([
        'tenant_id' => $tenant->getKey(),
        'type' => 'inventory_sync',
        'status' => 'queued',
        'outcome' => 'pending',
        'initiator_name' => 'System',
    ]);

    $this->actingAs($user);

    Bus::fake();

    assertNoOutboundHttp(function () use ($tenant): void {
        $this->get(TenantDashboard::getUrl(tenant: $tenant))
            ->assertOk()
            ->assertSee('/admin/choose-workspace', false);
        // NeedsAttention, RecentOperations and RecentDriftFindings are
        // lazy-loaded widgets and will not appear in the initial
        // server-rendered HTML.
    });

    Bus::assertNothingDispatched();
});
