Download desktop/src/components/layout/ContentRouter.test.tsx from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 3.06 kB
-
https://huggingface.co/chenbhao/codev/resolve/e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/layout/ContentRouter.test.tsx
- Command line
-
hf download hf://chenbhao/codev@e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/layout/ContentRouter.test.tsx
-
curl -L -o ContentRouter.test.tsx https://huggingface.co/chenbhao/codev/resolve/e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/layout/ContentRouter.test.tsx
3.06 kB
| import { cleanup, fireEvent, render, screen } from '@testing-library/react' | |
| import '@testing-library/jest-dom' | |
| import { afterEach, describe, expect, it, vi } from 'vitest' | |
| vi.mock('../../pages/EmptySession', () => ({ | |
| EmptySession: () => <div data-testid="empty-session" />, | |
| })) | |
| vi.mock('../../pages/ActiveSession', () => ({ | |
| ActiveSession: () => <div data-testid="active-session" />, | |
| })) | |
| vi.mock('../../pages/ScheduledTasks', () => ({ | |
| ScheduledTasks: () => <div data-testid="scheduled-tasks" />, | |
| })) | |
| vi.mock('../../pages/Settings', () => ({ | |
| Settings: () => <div data-testid="settings-page" />, | |
| })) | |
| vi.mock('../../pages/TerminalSettings', () => ({ | |
| TerminalSettings: ({ active, cwd, onNewTerminal, testId }: { active: boolean; cwd?: string; onNewTerminal: () => void; testId: string }) => ( | |
| <div data-active={active ? 'true' : 'false'} data-cwd={cwd ?? ''} data-testid={testId}> | |
| <button type="button" onClick={onNewTerminal}>New Terminal</button> | |
| </div> | |
| ), | |
| })) | |
| import { ContentRouter } from './ContentRouter' | |
| import { useTabStore } from '../../stores/tabStore' | |
| describe('ContentRouter terminal tabs', () => { | |
| afterEach(() => { | |
| cleanup() | |
| useTabStore.setState({ tabs: [], activeTabId: null }) | |
| }) | |
| it('renders the active terminal tab as main content', () => { | |
| useTabStore.setState({ | |
| tabs: [{ sessionId: '__terminal__1', title: 'Terminal 1', type: 'terminal', status: 'idle', terminalCwd: '/tmp/project' }], | |
| activeTabId: '__terminal__1', | |
| }) | |
| render(<ContentRouter />) | |
| expect(screen.getByTestId('terminal-host-__terminal__1')).toHaveAttribute('data-active', 'true') | |
| expect(screen.getByTestId('terminal-host-__terminal__1')).toHaveAttribute('data-cwd', '/tmp/project') | |
| expect(screen.queryByTestId('active-session')).not.toBeInTheDocument() | |
| }) | |
| it('keeps terminal tabs mounted while chat content is active', () => { | |
| useTabStore.setState({ | |
| tabs: [ | |
| { sessionId: '__terminal__1', title: 'Terminal 1', type: 'terminal', status: 'idle' }, | |
| { sessionId: 'session-1', title: 'Chat', type: 'session', status: 'idle' }, | |
| ], | |
| activeTabId: 'session-1', | |
| }) | |
| render(<ContentRouter />) | |
| expect(screen.getByTestId('terminal-host-__terminal__1')).toHaveAttribute('data-active', 'false') | |
| expect(screen.getByTestId('active-session')).toBeInTheDocument() | |
| }) | |
| it('can open another terminal tab from a terminal page', () => { | |
| useTabStore.setState({ | |
| tabs: [{ sessionId: '__terminal__1', title: 'Terminal 1', type: 'terminal', status: 'idle', terminalCwd: '/tmp/project' }], | |
| activeTabId: '__terminal__1', | |
| }) | |
| render(<ContentRouter />) | |
| fireEvent.click(screen.getByRole('button', { name: 'New Terminal' })) | |
| expect(useTabStore.getState().tabs.filter((tab) => tab.type === 'terminal')).toHaveLength(2) | |
| expect(useTabStore.getState().activeTabId).not.toBe('__terminal__1') | |
| expect(useTabStore.getState().tabs.find((tab) => tab.sessionId === useTabStore.getState().activeTabId)?.terminalCwd).toBe('/tmp/project') | |
| }) | |
| }) | |