Files
superwork/vscode/webview-ui/src/components/SettingsModal.test.tsx
T

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')
})
})