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

86 lines
3.1 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.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();
});
});