<?php

declare(strict_types=1);

use App\Filament\Resources\RestoreRunResource\Pages\CreateRestoreRun;
use App\Models\BackupItem;
use App\Models\BackupSet;
use Filament\Facades\Filament;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;

uses(RefreshDatabase::class);

it('shows degraded backup-set hints before restore safety checks run', function (): void {
    [$user, $tenant] = createUserWithTenant(role: 'owner');

    $this->actingAs($user);
    Filament::setTenant($tenant, true);

    $backupSet = BackupSet::factory()->for($tenant)->create([
        'name' => 'Recovery candidate',
        'item_count' => 1,
    ]);

    BackupItem::factory()->for($tenant)->for($backupSet)->create([
        'payload' => [],
        'metadata' => [
            'source' => 'metadata_only',
            'assignments_fetch_failed' => true,
        ],
        'assignments' => [],
    ]);

    Livewire::test(CreateRestoreRun::class)
        ->assertSee('Backup quality is visible here before safety checks run.')
        ->assertSee('Recovery candidate')
        ->assertSee('1 degraded item')
        ->assertSee('Backup quality hints describe input strength only.');
});
