<?php

declare(strict_types=1);

use App\Models\OperationRun;
use App\Services\OperationRunService;

it('does not emit terminal database notifications for blocked system runs', function (): void {
    [, $tenant] = createUserWithTenant(role: 'owner');

    $run = OperationRun::factory()->create([
        'managed_environment_id' => (int) $tenant->getKey(),
        'workspace_id' => (int) $tenant->workspace_id,
        'user_id' => null,
        'initiator_name' => 'System',
        'type' => 'backup_schedule_run',
        'status' => 'queued',
        'outcome' => 'pending',
        'context' => [
            'reason_code' => 'tenant_not_operable',
            'blocked_by' => 'queued_execution_legitimacy',
        ],
    ]);

    app(OperationRunService::class)->updateRun(
        $run,
        status: 'completed',
        outcome: 'blocked',
        failures: [[
            'code' => 'operation.blocked',
            'reason_code' => 'tenant_not_operable',
            'message' => 'Operation blocked because the target tenant is not currently operable for this action.',
        ]],
    );

    expect($run->fresh()?->outcome)->toBe('blocked')
        ->and(
            \Illuminate\Notifications\DatabaseNotification::query()->count()
        )->toBe(0);
});
