Files
claude-code/src/commands/__tests__/init-verifiers.test.ts
claude-code-best 6a182e45b3 feat: 注册所有新命令到命令系统和工具注册表
- commands.ts: 注册所有新命令(memory-stores、vault、schedule 等),
  移除 require() 动态加载,统一为 ESM import
- tools.ts: 注册 LocalMemoryRecallTool、VaultHttpFetchTool
- 补充命令测试(bridge-kick、commit、commit-push-pr、init-verifiers)
- 补充工具测试(AgentTool、RemoteTrigger、SkillTool、WebFetch、WebSearch)
- 集成测试:autonomy-lifecycle-user-flow 更新
- 探测脚本和功能文档

Co-Authored-By: glm-5-turbo <zai-org@claude-code-best.win>
2026-05-09 23:04:39 +08:00

114 lines
3.6 KiB
TypeScript

import { describe, expect, test } from 'bun:test'
// init-verifiers.ts has no external dependencies that need mocking
// It's a simple prompt-type command that returns a static text prompt
let initVerifiers: any
// Import once - no async deps
const mod = await import('../init-verifiers.js')
initVerifiers = mod.default
describe('init-verifiers command metadata', () => {
test('has correct name', () => {
expect(initVerifiers.name).toBe('init-verifiers')
})
test('has description', () => {
expect(initVerifiers.description).toBeTruthy()
expect(typeof initVerifiers.description).toBe('string')
})
test('type is prompt', () => {
expect(initVerifiers.type).toBe('prompt')
})
test('has progressMessage', () => {
expect(initVerifiers.progressMessage).toBeTruthy()
})
test('source is builtin', () => {
expect(initVerifiers.source).toBe('builtin')
})
test('contentLength is 0 (dynamic)', () => {
expect(initVerifiers.contentLength).toBe(0)
})
})
describe('init-verifiers getPromptForCommand', () => {
test('returns a non-empty array', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(Array.isArray(result)).toBe(true)
expect(result.length).toBeGreaterThan(0)
})
test('first element has type "text"', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].type).toBe('text')
})
test('text contains Phase 1 auto-detection instructions', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Phase 1')
})
test('text contains Phase 2 verification tool setup', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Phase 2')
})
test('text contains Phase 3 interactive Q&A', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Phase 3')
})
test('text contains Phase 4 generate verifier skill', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Phase 4')
})
test('text contains Phase 5 confirm creation', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Phase 5')
})
test('text mentions Playwright', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Playwright')
})
test('text mentions SKILL.md template', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('SKILL.md')
})
test('text mentions TodoWrite tool', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('TodoWrite')
})
test('text mentions verifier naming convention', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('verifier')
})
test('text mentions authentication handling', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(result[0].text).toContain('Authentication')
})
test('text is a non-empty string', async () => {
const result = await initVerifiers.getPromptForCommand()
expect(typeof result[0].text).toBe('string')
expect(result[0].text.length).toBeGreaterThan(100)
})
test('works with no arguments (no args parameter)', async () => {
// getPromptForCommand takes no required params
const result = await initVerifiers.getPromptForCommand(undefined, undefined)
expect(Array.isArray(result)).toBe(true)
expect(result.length).toBeGreaterThan(0)
})
})