import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { AppModeEnum } from '@/types/app' import Doc from '../doc' vi.mock('../template/template.en.mdx', () => ({ default: () =>
completion-en
})) vi.mock('../template/template.zh.mdx', () => ({ default: () =>
completion-zh
})) vi.mock('../template/template.ja.mdx', () => ({ default: () =>
completion-ja
})) vi.mock('../template/template_chat.en.mdx', () => ({ default: () =>
chat-en
})) vi.mock('../template/template_chat.zh.mdx', () => ({ default: () =>
chat-zh
})) vi.mock('../template/template_chat.ja.mdx', () => ({ default: () =>
chat-ja
})) vi.mock('../template/template_advanced_chat.en.mdx', () => ({ default: () =>
advanced-chat-en
, })) vi.mock('../template/template_advanced_chat.zh.mdx', () => ({ default: () =>
advanced-chat-zh
, })) vi.mock('../template/template_advanced_chat.ja.mdx', () => ({ default: () =>
advanced-chat-ja
, })) vi.mock('../template/template_workflow.en.mdx', () => ({ default: () =>
workflow-en
})) vi.mock('../template/template_workflow.zh.mdx', () => ({ default: () =>
workflow-zh
})) vi.mock('../template/template_workflow.ja.mdx', () => ({ default: () =>
workflow-ja
})) const mockLocale = vi.fn(() => 'en-US') vi.mock('@/context/i18n', () => ({ useLocale: () => mockLocale(), })) vi.mock('@/i18n-config/language', () => ({ LanguagesSupported: ['en-US', 'zh-Hans', 'ja-JP'], getDocLanguage: (locale: string) => locale === 'zh-Hans' ? 'zh' : locale === 'ja-JP' ? 'ja' : 'en', })) const makeAppDetail = (mode: AppModeEnum) => ({ mode, model_config: { configs: { prompt_variables: [] } }, }) as unknown as Parameters[0]['appDetail'] describe('Doc', () => { beforeEach(() => { mockLocale.mockReturnValue('en-US') Object.defineProperty(window, 'matchMedia', { writable: true, value: vi.fn().mockReturnValue({ matches: false }), }) }) it.each([ [AppModeEnum.CHAT, 'chat-en'], [AppModeEnum.AGENT_CHAT, 'chat-en'], [AppModeEnum.ADVANCED_CHAT, 'advanced-chat-en'], [AppModeEnum.WORKFLOW, 'workflow-en'], [AppModeEnum.COMPLETION, 'completion-en'], ])('selects the documentation for %s apps', (mode, template) => { render() expect(screen.getByText(template)).toBeInTheDocument() }) it.each([ ['zh-Hans', 'chat-zh'], ['ja-JP', 'chat-ja'], ])('selects the %s documentation', (locale, template) => { mockLocale.mockReturnValue(locale) render() expect(screen.getByText(template)).toBeInTheDocument() }) it('expands the table of contents', async () => { const user = userEvent.setup() render() await user.click(screen.getByRole('button', { name: 'Open table of contents' })) expect(screen.getByRole('navigation')).toBeInTheDocument() }) })