<?php

declare(strict_types=1);

use App\Filament\Resources\RestoreRunResource\Pages\CreateRestoreRun;
use App\Models\ManagedEnvironment;
use App\Support\RestoreSafety\RestoreSafetyResolver;
use Filament\Facades\Filament;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;

uses(RefreshDatabase::class);

it('renders warning-suppressed execution guidance when current evidence still has warnings', function (): void {
    $tenant = ManagedEnvironment::factory()->create([
        'rbac_status' => 'ok',
        'rbac_last_checked_at' => now(),
    ]);
    [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner');
    ensureDefaultProviderConnection($tenant, 'microsoft');

    /** @var RestoreSafetyResolver $resolver */
    $resolver = app(RestoreSafetyResolver::class);

    $data = [
        'backup_set_id' => 10,
        'scope_mode' => 'selected',
        'backup_item_ids' => [1],
        'group_mapping' => [],
        'check_summary' => ['blocking' => 0, 'warning' => 1, 'safe' => 0],
        'check_results' => [['code' => 'warning', 'severity' => 'warning']],
        'checks_ran_at' => now('UTC')->toIso8601String(),
        'preview_summary' => ['generated_at' => now('UTC')->toIso8601String(), 'policies_total' => 1, 'policies_changed' => 1],
        'preview_diffs' => [['policy_identifier' => 'policy-1', 'action' => 'update']],
        'preview_ran_at' => now('UTC')->toIso8601String(),
    ];
    $data['check_basis'] = $resolver->checksBasisFromData($data);
    $data['preview_basis'] = $resolver->previewBasisFromData($data);
    $data = \App\Filament\Resources\RestoreRunResource::synchronizeRestoreSafetyDraft($data);

    Filament::setTenant($tenant, true);

    Livewire::actingAs($user)
        ->test(CreateRestoreRun::class)
        ->set('data', $data)
        ->goToWizardStep(5)
        ->assertSee('Ready with caution')
        ->assertSee('warnings remain')
        ->assertSee('Review the warnings before real execution.');
});
