mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 21:03:26 +00:00
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { normalizeParentBranch, parentLookupFromStack, sortBranchesForOverview } from "../src/actors/repository/stack-model.js";
|
|
|
|
describe("stack-model", () => {
|
|
it("normalizes self-parent references to null", () => {
|
|
expect(normalizeParentBranch("feature/a", "feature/a")).toBeNull();
|
|
expect(normalizeParentBranch("feature/a", "main")).toBe("main");
|
|
expect(normalizeParentBranch("feature/a", null)).toBeNull();
|
|
});
|
|
|
|
it("builds parent lookup with sanitized entries", () => {
|
|
const lookup = parentLookupFromStack([
|
|
{ branchName: "feature/a", parentBranch: "main" },
|
|
{ branchName: "feature/b", parentBranch: "feature/b" },
|
|
{ branchName: " ", parentBranch: "main" },
|
|
]);
|
|
|
|
expect(lookup.get("feature/a")).toBe("main");
|
|
expect(lookup.get("feature/b")).toBeNull();
|
|
expect(lookup.has(" ")).toBe(false);
|
|
});
|
|
|
|
it("orders branches by graph depth and handles cycles safely", () => {
|
|
const rows = sortBranchesForOverview([
|
|
{ branchName: "feature/b", parentBranch: "feature/a", updatedAt: 200 },
|
|
{ branchName: "feature/a", parentBranch: "main", updatedAt: 100 },
|
|
{ branchName: "main", parentBranch: null, updatedAt: 50 },
|
|
{ branchName: "cycle-a", parentBranch: "cycle-b", updatedAt: 300 },
|
|
{ branchName: "cycle-b", parentBranch: "cycle-a", updatedAt: 250 },
|
|
]);
|
|
|
|
expect(rows.map((row) => row.branchName)).toEqual(["main", "feature/a", "feature/b", "cycle-a", "cycle-b"]);
|
|
});
|
|
});
|