import { describe, it, expect } from "bun:test"; import { defaultConfig } from "../../src/defaults/config.ts"; describe("defaultConfig", () => { it("包含所有四个阶段的配置", () => { expect(defaultConfig.stages.discuss).toBeDefined(); expect(defaultConfig.stages.plan).toBeDefined(); expect(defaultConfig.stages.build).toBeDefined(); expect(defaultConfig.stages.archive).toBeDefined(); }); it("discuss 阶段有 prompt", () => { expect(defaultConfig.stages.discuss!.prompt).toBeTruthy(); expect(typeof defaultConfig.stages.discuss!.prompt).toBe("string"); }); it("discuss 默认提示词包含关键章节", () => { const prompt = defaultConfig.stages.discuss!.prompt; expect(prompt).toContain("探索模式"); expect(prompt).toContain("立场"); expect(prompt).toContain("你可能做的事"); expect(prompt).toContain("Rune 感知"); expect(prompt).toContain("你不必做的事"); expect(prompt).toContain("结束探索"); expect(prompt).toContain("护栏"); expect(prompt).toContain("典型场景"); }); it("discuss 默认提示词不包含 OpenSpec 术语", () => { const prompt = defaultConfig.stages.discuss!.prompt; expect(prompt).not.toContain("openspec"); expect(prompt).not.toContain("/opsx:"); expect(prompt).not.toContain("proposal.md"); expect(prompt).not.toContain("specs/"); }); it("discuss 默认提示词包含正确 Rune 术语", () => { const prompt = defaultConfig.stages.discuss!.prompt; expect(prompt).toContain("/rune-plan"); expect(prompt).toContain("rune status"); expect(prompt).toContain("design.md"); expect(prompt).toContain("task.md"); }); it("plan 阶段包含 design 和 task 两个文档配置", () => { const docs = defaultConfig.stages.plan!.documents; expect(docs).toHaveLength(2); expect(docs[0].name).toBe("design"); expect(docs[1].name).toBe("task"); for (const doc of docs) { expect(doc.prompt).toBeTruthy(); } }); it("plan 的 task 文档配置存在", () => { const taskDoc = defaultConfig.stages.plan!.documents.find((d) => d.name === "task"); expect(taskDoc).toBeDefined(); expect(taskDoc!.prompt).toBeTruthy(); }); it("task 文档依赖 design", () => { const taskDoc = defaultConfig.stages.plan!.documents.find((d) => d.name === "task"); expect(taskDoc!.depend).toEqual(["design"]); }); it("design 文档有 template", () => { const designDoc = defaultConfig.stages.plan!.documents.find((d) => d.name === "design"); expect(designDoc!.template).toBeTruthy(); expect(designDoc!.template).toContain("设计文档"); }); it("task 文档有 template", () => { const taskDoc = defaultConfig.stages.plan!.documents.find((d) => d.name === "task"); expect(taskDoc!.template).toBeTruthy(); expect(taskDoc!.template).toContain("- [ ]"); }); it("build 阶段有 prompt", () => { expect(defaultConfig.stages.build!.prompt).toBeTruthy(); }); it("archive 阶段有 prompt", () => { expect(defaultConfig.stages.archive!.prompt).toBeTruthy(); }); });