import { describe, it, expect } from 'vitest'; import { generateBashCompletion, generateZshCompletion, generateFishCompletion } from './completion.js'; const EXPECTED_SUBCOMMANDS = ['start', 'tui', 'send', 'sessions', 'doctor', 'config', 'completion']; describe('generateBashCompletion', () => { it('generates valid bash completion', () => { const script = generateBashCompletion(); expect(script).toContain('_flynn_completions'); expect(script).toContain('complete -F _flynn_completions flynn'); }); it('contains all subcommands', () => { const script = generateBashCompletion(); for (const cmd of EXPECTED_SUBCOMMANDS) { expect(script).toContain(cmd); } }); it('contains global options', () => { const script = generateBashCompletion(); expect(script).toContain('--help'); expect(script).toContain('--version'); }); it('contains subcommand-specific options', () => { const script = generateBashCompletion(); expect(script).toContain('--config'); expect(script).toContain('--fullscreen'); expect(script).toContain('--no-tools'); expect(script).toContain('--raw'); }); }); describe('generateZshCompletion', () => { it('generates valid zsh completion', () => { const script = generateZshCompletion(); expect(script).toContain('#compdef flynn'); expect(script).toContain('compdef _flynn flynn'); }); it('contains all subcommands', () => { const script = generateZshCompletion(); for (const cmd of EXPECTED_SUBCOMMANDS) { expect(script).toContain(cmd); } }); it('contains subcommand-specific options', () => { const script = generateZshCompletion(); expect(script).toContain('--config'); expect(script).toContain('--fullscreen'); }); }); describe('generateFishCompletion', () => { it('generates valid fish completion', () => { const script = generateFishCompletion(); expect(script).toContain('complete -c flynn'); expect(script).toContain('__fish_use_subcommand'); }); it('contains all subcommands', () => { const script = generateFishCompletion(); for (const cmd of EXPECTED_SUBCOMMANDS) { expect(script).toContain(cmd); } }); it('contains subcommand-specific options', () => { const script = generateFishCompletion(); expect(script).toContain('__fish_seen_subcommand_from start'); expect(script).toContain('__fish_seen_subcommand_from tui'); }); it('contains shell type completions for completion subcommand', () => { const script = generateFishCompletion(); expect(script).toContain("'bash zsh fish'"); }); });