summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/Header.test.tsx
blob: 0c03e514a04a95b16994d45a845ddda02e7fdbb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */

import { render } from 'ink-testing-library';
import { Header } from './Header.js';
import { vi } from 'vitest';

// Mock ink-gradient and ink-big-text as they might have complex rendering
vi.mock('ink-gradient', () => ({
  default: vi.fn(({ children }) => children), // Pass through children
}));

import { Text } from 'ink'; // Import the actual Text component from Ink

vi.mock('ink-big-text', () => ({
  default: vi.fn(({ text }) => <Text>{text}</Text>), // Use Ink's Text component
}));

describe('<Header />', () => {
  it('should render with the default title "GEMINI" when no title prop is provided', () => {
    const { lastFrame } = render(<Header />);
    const output = lastFrame();
    // Check if the output contains the default text "GEMINI"
    // The actual output will be simple text due to mocking
    expect(output).toContain('GEMINI');
  });

  it('should render with a custom title when the title prop is provided', () => {
    const customTitle = 'My Custom CLI';
    const { lastFrame } = render(<Header title={customTitle} />);
    const output = lastFrame();
    // Check if the output contains the custom title
    expect(output).toContain(customTitle);
  });

  it('should render with an empty title if an empty string is provided', () => {
    const customTitle = '';
    const { lastFrame } = render(<Header title={customTitle} />);
    const output = lastFrame();
    // Depending on how BigText handles empty strings,
    // it might render nothing or a specific representation.
    // For this test, we'll assume it renders the empty string.
    expect(output).toContain(''); // or check for a specific structure if BigText behaves differently
  });
});