72 lines
2.7 KiB
TypeScript
72 lines
2.7 KiB
TypeScript
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<SettingsModalProps> = {}): string {
|
|
const html = renderToStaticMarkup(<SettingsModal {...PROPS} {...props} />)
|
|
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')
|
|
})
|
|
})
|