Files
Rune-Spec/tests/defaults/config.test.ts

78 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
});
});