<?php

use App\Models\BackupSchedule;
use App\Models\BackupScheduleRun;
use App\Models\BackupSet;

test('backup schedule run view modal renders run details', function () {
    [$user, $tenant] = createUserWithTenant(role: 'manager');

    $schedule = BackupSchedule::query()->create([
        'tenant_id' => $tenant->id,
        'name' => 'Nightly',
        'is_enabled' => true,
        'timezone' => 'UTC',
        'frequency' => 'daily',
        'time_of_day' => '01:00:00',
        'days_of_week' => null,
        'policy_types' => ['deviceConfiguration'],
        'include_foundations' => true,
        'retention_keep_last' => 30,
    ]);

    $backupSet = BackupSet::query()->create([
        'tenant_id' => $tenant->id,
        'name' => 'Set 174',
        'status' => 'completed',
        'item_count' => 0,
    ]);

    $run = BackupScheduleRun::query()->create([
        'backup_schedule_id' => $schedule->id,
        'tenant_id' => $tenant->id,
        'scheduled_for' => now('UTC')->startOfMinute()->toDateTimeString(),
        'status' => BackupScheduleRun::STATUS_SUCCESS,
        'summary' => [
            'policies_total' => 7,
            'policies_backed_up' => 7,
            'errors_count' => 0,
        ],
        'error_code' => null,
        'error_message' => null,
        'backup_set_id' => $backupSet->id,
    ]);

    $this->actingAs($user);

    $html = view('filament.modals.backup-schedule-run-view', ['run' => $run])->render();

    expect($html)->toContain('Scheduled for');
    expect($html)->toContain('Status');
    expect($html)->toContain('Summary');
    expect($html)->toContain((string) $backupSet->id);
});
