<?php

declare(strict_types=1);

use App\Filament\Resources\BackupSetResource;
use App\Support\BackupHealth\TenantBackupHealthAssessment;
use Filament\Facades\Filament;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

it('confirms no usable completed backup basis on the backup-set list surface', function (): void {
    [$user, $tenant] = createUserWithTenant(role: 'owner', ensureDefaultMicrosoftProviderConnection: false);
    $this->actingAs($user);

    Filament::setTenant($tenant, true);

    $this->get(BackupSetResource::getUrl('index', [
        'backup_health_reason' => TenantBackupHealthAssessment::REASON_NO_BACKUP_BASIS,
    ], panel: 'admin', tenant: $tenant))
        ->assertOk()
        ->assertSee('No usable completed backup basis is currently available for this tenant.')
        ->assertSee('No backup sets');
});

it('keeps fallback continuity copy readable on the backup-set list when the latest backup detail is unavailable', function (): void {
    [$user, $tenant] = createUserWithTenant(role: 'owner', ensureDefaultMicrosoftProviderConnection: false);
    $this->actingAs($user);

    Filament::setTenant($tenant, true);

    $this->get(BackupSetResource::getUrl('index', [
        'backup_health_reason' => TenantBackupHealthAssessment::REASON_LATEST_BACKUP_STALE,
    ], panel: 'admin', tenant: $tenant))
        ->assertOk()
        ->assertSee('The latest backup detail is no longer available, so this view stays on the backup-set list.');
});
