78 lines
2.8 KiB
TypeScript
78 lines
2.8 KiB
TypeScript
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.task).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 阶段包含三个文档配置(requirements/design/plan)", () => {
|
||
const docs = defaultConfig.stages.plan!.documents;
|
||
expect(docs).toHaveLength(3);
|
||
expect(docs[0].name).toBe("requirements");
|
||
expect(docs[0].depend).toEqual([]);
|
||
expect(docs[1].name).toBe("design");
|
||
expect(docs[1].depend).toEqual(["requirements"]);
|
||
expect(docs[2].name).toBe("plan");
|
||
expect(docs[2].depend).toEqual(["requirements", "design"]);
|
||
});
|
||
|
||
it("每个 plan 文档都有 prompt 和 template", () => {
|
||
const docs = defaultConfig.stages.plan!.documents;
|
||
for (const doc of docs) {
|
||
expect(doc.prompt).toBeTruthy();
|
||
expect(doc.template).toBeTruthy();
|
||
}
|
||
});
|
||
|
||
it("task 阶段有 prompt", () => {
|
||
expect(defaultConfig.stages.task).toBeDefined();
|
||
expect(defaultConfig.stages.task!.prompt).toBeTruthy();
|
||
});
|
||
|
||
it("build 阶段有 prompt", () => {
|
||
expect(defaultConfig.stages.build!.prompt).toBeTruthy();
|
||
});
|
||
|
||
it("archive 阶段有 prompt", () => {
|
||
expect(defaultConfig.stages.archive!.prompt).toBeTruthy();
|
||
});
|
||
});
|