import React from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; import { describe, expect, it } from 'vitest'; import AIMCPClientInstallPanel from './AIMCPClientInstallPanel'; import { buildOverlayWorkbenchTheme } from '../../utils/overlayWorkbenchTheme'; describe('AIMCPClientInstallPanel', () => { it('renders a clearer external-client selection flow instead of parallel install buttons', () => { const markup = renderToStaticMarkup( {}} onRefreshStatus={() => {}} onCopyConfigPath={() => {}} onCopyLaunchCommand={() => {}} onInstall={() => {}} />, ); expect(markup).toContain('不是给 GoNavi 自己再装一个 MCP'); expect(markup).toContain('把 GoNavi MCP 接入外部 AI 客户端'); expect(markup).toContain('第 1 步:选择目标客户端'); expect(markup).toContain('第 2 步:确认状态后写入'); expect(markup).toContain('未接入'); expect(markup).toContain('需更新'); expect(markup).toContain('复制配置路径'); expect(markup).toContain('复制启动命令'); expect(markup).toContain('更新 Codex 配置'); expect(markup).toContain('不会下载 Claude Code / Codex'); }); it('shows an already-connected label when the selected client matches the current GoNavi path', () => { const markup = renderToStaticMarkup( {}} onRefreshStatus={() => {}} onCopyConfigPath={() => {}} onCopyLaunchCommand={() => {}} onInstall={() => {}} />, ); expect(markup).toContain('已接入'); expect(markup).toContain('已接入 Claude Code'); }); });