test: archive 阶段端到端测试(3 个用例)
This commit is contained in:
65
tests/agent/e2e-archive.test.ts
Normal file
65
tests/agent/e2e-archive.test.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { describe, it, expect, beforeEach, afterEach } from "bun:test";
|
||||
import { mkdir, writeFile } from "node:fs/promises";
|
||||
import { join } from "node:path";
|
||||
import { createRunner } from "./tier1-command.ts";
|
||||
import {
|
||||
setupTempDir,
|
||||
cleanupTempDir,
|
||||
getTempDir,
|
||||
createFreshProject,
|
||||
writeDoc,
|
||||
changeFileExists,
|
||||
} from "./fixtures.ts";
|
||||
import { scanChanges, scanArchives } from "../../src/core/scanner.ts";
|
||||
import { getChangeDir } from "../../src/core/config.ts";
|
||||
|
||||
describe("e2e: archive 阶段", () => {
|
||||
let runner: ReturnType<typeof createRunner>;
|
||||
|
||||
beforeEach(async () => {
|
||||
await setupTempDir();
|
||||
runner = createRunner();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
await cleanupTempDir();
|
||||
});
|
||||
|
||||
it("全部任务完成时变更移至 archive/", async () => {
|
||||
const config = await createFreshProject();
|
||||
await writeDoc("ready", "task", "- [x] 任务\n");
|
||||
|
||||
await runner.runArchive(getTempDir(), "ready", config);
|
||||
|
||||
expect(changeFileExists("ready", "task.md")).toBe(false);
|
||||
|
||||
const archives = await scanArchives(getTempDir());
|
||||
expect(archives.length).toBeGreaterThanOrEqual(1);
|
||||
|
||||
const changes = await scanChanges(getTempDir(), config);
|
||||
expect(changes.find((c) => c.name === "ready")).toBeUndefined();
|
||||
});
|
||||
|
||||
it("任务未完成时阻止归档", async () => {
|
||||
const config = await createFreshProject();
|
||||
await writeDoc("pending", "task", "- [ ] 未完成\n");
|
||||
|
||||
await expect(runner.runArchive(getTempDir(), "pending", config)).rejects.toThrow("未完成任务");
|
||||
|
||||
expect(changeFileExists("pending", "task.md")).toBe(true);
|
||||
});
|
||||
|
||||
it("无 task.md 时允许归档", async () => {
|
||||
const config = await createFreshProject();
|
||||
const changeDir = getChangeDir(getTempDir(), "no-task");
|
||||
await mkdir(changeDir, { recursive: true });
|
||||
await writeFile(join(changeDir, "design.md"), "# 设计\n");
|
||||
|
||||
await runner.runArchive(getTempDir(), "no-task", config);
|
||||
|
||||
expect(changeFileExists("no-task", "design.md")).toBe(false);
|
||||
|
||||
const archives = await scanArchives(getTempDir());
|
||||
expect(archives.length).toBeGreaterThanOrEqual(1);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user