<?php

use Illuminate\Process\PendingProcess;
use Illuminate\Support\Facades\Process;

it('lists unique intent tags and respects the limit option', function () {
    Process::fake(function (PendingProcess $process) {
        return match ($process->command) {
            ['pijul', 'log', '--output-format', 'json', '--limit', '2'] => Process::result(json_encode([
                ['message' => 'feat(pijul-qol): first'],
                ['message' => 'feat(init): second'],
                ['message' => 'feat(pijul-qol): duplicate'],
                ['message' => 'plain message'],
            ], JSON_THROW_ON_ERROR)),
            default => Process::result('', 'Unexpected command.', 1),
        };
    });

    $this->artisan('pijul:list-intent-tags', ['--limit' => '2'])
        ->expectsOutput('feat(pijul-qol)')
        ->expectsOutput('feat(init)')
        ->assertExitCode(0);
});