<?php

use App\Filament\Resources\FindingResource\Pages\ListFindings;
use App\Models\Finding;
use Filament\Facades\Filament;
use Livewire\Livewire;

test('findings can be acknowledged via table bulk action', function () {
    [$user, $tenant] = createUserWithTenant(role: 'manager');
    $this->actingAs($user);
    Filament::setTenant($tenant, true);

    $findings = Finding::factory()
        ->count(3)
        ->for($tenant)
        ->create([
            'finding_type' => Finding::FINDING_TYPE_DRIFT,
            'status' => Finding::STATUS_NEW,
            'acknowledged_at' => null,
            'acknowledged_by_user_id' => null,
        ]);

    Livewire::test(ListFindings::class)
        ->callTableBulkAction('triage_selected', $findings)
        ->assertHasNoTableBulkActionErrors();

    $findings->each(function (Finding $finding): void {
        $finding->refresh();

        expect($finding->status)->toBe(Finding::STATUS_TRIAGED);
        expect($finding->triaged_at)->not->toBeNull();
        expect($finding->acknowledged_at)->toBeNull();
        expect($finding->acknowledged_by_user_id)->toBeNull();
    });
});
