Restored GitHub tracking patch persistence in the core store with matching test coverage in the task detail and routes tasks ops suites, plus documentation for the repaired flow. Fusion-Task-Id: FN-4044
44 lines
2.5 KiB
TypeScript
44 lines
2.5 KiB
TypeScript
// @vitest-environment node
|
|
|
|
import { describe, it, expect } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import path from "node:path";
|
|
|
|
const repoRoot = path.resolve(__dirname, "../../../../");
|
|
|
|
function readDoc(relativePath: string): string {
|
|
return readFileSync(path.join(repoRoot, relativePath), "utf8");
|
|
}
|
|
|
|
describe("github tracking documentation contract", () => {
|
|
it("documents the GitHub Tracking Issues section with required behavior", () => {
|
|
const taskManagement = readDoc("docs/task-management.md");
|
|
|
|
expect(taskManagement).toContain("## GitHub Tracking Issues");
|
|
expect(taskManagement).toContain("They are **not** the same as imported source issues (`issueInfo` / `sourceIssue`)");
|
|
expect(taskManagement).toContain("task creation flows (including quick create, planning output, automation `create-task` workflow steps, and subtask creation paths that create tasks)");
|
|
expect(taskManagement).toContain("For existing tasks, PATCH first persists any `githubTracking` mutation");
|
|
expect(taskManagement).toContain("task.githubTracking.enabled");
|
|
expect(taskManagement).toContain("task.githubTracking.repoOverride");
|
|
expect(taskManagement).toContain("Repository resolution order");
|
|
expect(taskManagement).toContain("1. Task override: `task.githubTracking.repoOverride`");
|
|
expect(taskManagement).toContain("2. Project default: `githubTrackingDefaultRepo`");
|
|
expect(taskManagement).toContain("3. Global default: `githubTrackingDefaultRepo`");
|
|
expect(taskManagement).toContain("Creation is best-effort and non-blocking");
|
|
expect(taskManagement).toContain("Explicit manual unlink (`githubTracking.issue: null`) does not recreate a tracking issue in that same update request");
|
|
expect(taskManagement).toContain("Title: `[FN-XXXX] Task title`");
|
|
expect(taskManagement).toContain("Body prefix: `Fusion task: FN-XXXX`");
|
|
});
|
|
|
|
it("keeps GitHub auth cross-links discoverable from task management docs", () => {
|
|
const taskManagement = readDoc("docs/task-management.md");
|
|
const settingsReference = readDoc("docs/settings-reference.md");
|
|
|
|
expect(taskManagement).toContain("[Settings Reference](./settings-reference.md)");
|
|
expect(taskManagement).toContain("`githubAuthMode` (`gh-cli` or `token`) and `githubAuthToken`");
|
|
|
|
expect(settingsReference).toContain("`githubAuthMode` | `\"gh-cli\" \\\| \"token\"` | `\"gh-cli\"`");
|
|
expect(settingsReference).toContain("`githubAuthToken` | `string` | `undefined`");
|
|
});
|
|
});
|