import type { SettingsModalProps } from './SettingsModal' import { renderToStaticMarkup } from 'react-dom/server' import { describe, expect, it } from 'vitest' import { SettingsModal } from './SettingsModal' const PROPS: SettingsModalProps = { open: true, host: 'gitea.example.com', initialTokenSaved: true, initialWebhookPort: 8080, initialWebhookSecret: '', initialBrainstormPrompt: '', initialImplementPlanPrompt: '', initialAutoReview: false, initialReviewPrompt: '', initialTestPrompt: '', initialPrototypePrompt: '', initialDevBranch: 'main', initialReleaseBranchPrefix: 'release/', initialJenkinsJob: '', initialJenkinsProdHost: '', initialWorktreeDirectory: '', initialWorktreeOpenWith: 'vscode', initialPycharmCommand: '', initialWorktreePostCreateScript: '', initialWorktreePreRemoveScript: '', initialImplTabPreCreateScript: '', initialImplTabPostCloseScript: '', initialSplitNewTerminals: false, initialDefaultBrainstormProfilePath: '', initialDefaultImplementProfilePath: '', initialDefaultTestProfilePath: '', initialDefaultPrototypeProfilePath: '', initialDefaultAskProfilePath: '/p/sonnet.json', initialConflictResolutionProfilePath: '', initialCommitProfilePath: '', initialPrDiffSummaryProfilePath: '', initialCodexModel: '', initialCodexReasoningEffort: '', initialProfilesDirectory: '', initialYoutrackBaseUrl: '', initialYoutrackProjectShortName: '', initialYoutrackCloseCommand: '', initialYoutrackTokenSaved: false, profiles: [{ name: 'sonnet', path: '/p/sonnet.json' }], youtrackProjects: { status: 'idle', projects: [] }, onListYouTrackProjects: () => {}, onSubmit: () => {}, } function field(props: Partial = {}): string { const html = renderToStaticMarkup() expect(html).toContain('文件问答默认模型') return html.slice(html.indexOf('文件问答默认模型'), html.indexOf('冲突解决配置文件')) } describe('设置面板的文件问答默认模型', () => { it('与其他默认配置在同一区域,显示保存的名称并说明临时切换不会改默认', () => { const html = field() expect(html).toContain('sonnet') expect(html).toContain('问这个文件') expect(html).toContain('临时切换') expect(html).toContain('不会修改这里的默认值') expect(html).toContain('aria-haspopup="listbox"') }) it('未配置时显示官方默认,失效路径不能伪装成默认', () => { expect(field({ initialDefaultAskProfilePath: '' })).toContain('(默认)') expect(field({ initialDefaultAskProfilePath: '/p/deleted.json' })).toContain('不可用:/p/deleted.json') }) })