/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ /** @vitest-environment jsdom */ import { render } from 'ink-testing-library'; import { describe, it, expect } from 'vitest'; import { Help } from './Help.js'; import type { SlashCommand } from '../commands/types.js'; import { CommandKind } from '../commands/types.js'; const mockCommands: readonly SlashCommand[] = [ { name: 'test', description: 'A test command', kind: CommandKind.BUILT_IN, altNames: ['alias-one', 'alias-two'], }, { name: 'hidden', description: 'A hidden command', hidden: true, kind: CommandKind.BUILT_IN, }, { name: 'parent', description: 'A parent command', kind: CommandKind.BUILT_IN, subCommands: [ { name: 'visible-child', description: 'A visible child command', kind: CommandKind.BUILT_IN, }, { name: 'hidden-child', description: 'A hidden child command', hidden: true, kind: CommandKind.BUILT_IN, }, ], }, ]; describe('Help Component', () => { it('should not render hidden commands', () => { const { lastFrame } = render(); const output = lastFrame(); expect(output).toContain('/test'); expect(output).not.toContain('/hidden'); }); it('should not render hidden subcommands', () => { const { lastFrame } = render(); const output = lastFrame(); expect(output).toContain('visible-child'); expect(output).not.toContain('hidden-child'); }); it('should render alt names for commands when available', () => { const { lastFrame } = render(); const output = lastFrame(); expect(output).toContain('/test (alias-one, alias-two)'); }); });