Files
fusion/packages/dashboard/src/__tests__/github-tracking-documentation.test.ts
Fusion ebb867ea4e feat(FN-4044): restore github tracking patch persistence
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
2026-05-11 17:55:09 -07:00

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`");
});
});