test(HAI-025): complete Step 2 — add column-based agent-active test cases
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import { describe, it, expect } from "vitest";
|
import { describe, it, expect } from "vitest";
|
||||||
|
import type { Column } from "@hai/core";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for the agent-active class logic in TaskCard.
|
* Tests for the agent-active class logic in TaskCard.
|
||||||
@@ -10,9 +11,9 @@ import { describe, it, expect } from "vitest";
|
|||||||
const ACTIVE_STATUSES = new Set(["planning", "researching", "executing", "finalizing", "merging", "specifying"]);
|
const ACTIVE_STATUSES = new Set(["planning", "researching", "executing", "finalizing", "merging", "specifying"]);
|
||||||
|
|
||||||
/** Mirrors the cardClass computation from TaskCard.tsx */
|
/** Mirrors the cardClass computation from TaskCard.tsx */
|
||||||
function computeCardClass(opts: { dragging?: boolean; queued?: boolean; status?: string }): string {
|
function computeCardClass(opts: { dragging?: boolean; queued?: boolean; status?: string; column?: Column }): string {
|
||||||
const { dragging = false, queued = false, status } = opts;
|
const { dragging = false, queued = false, status, column = "todo" } = opts;
|
||||||
const isAgentActive = !queued && ACTIVE_STATUSES.has(status as string);
|
const isAgentActive = !queued && (column === "in-progress" || ACTIVE_STATUSES.has(status as string));
|
||||||
return `card${dragging ? " dragging" : ""}${queued ? " queued" : ""}${isAgentActive ? " agent-active" : ""}`;
|
return `card${dragging ? " dragging" : ""}${queued ? " queued" : ""}${isAgentActive ? " agent-active" : ""}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,12 +30,12 @@ describe("TaskCard agent-active class", () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does NOT apply agent-active when status is undefined", () => {
|
it("does NOT apply agent-active when status is undefined and column is not in-progress", () => {
|
||||||
const cls = computeCardClass({});
|
const cls = computeCardClass({});
|
||||||
expect(cls).not.toContain("agent-active");
|
expect(cls).not.toContain("agent-active");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does NOT apply agent-active for non-active status (idle)", () => {
|
it("does NOT apply agent-active for non-active status (idle) outside in-progress", () => {
|
||||||
const cls = computeCardClass({ status: "idle" });
|
const cls = computeCardClass({ status: "idle" });
|
||||||
expect(cls).not.toContain("agent-active");
|
expect(cls).not.toContain("agent-active");
|
||||||
});
|
});
|
||||||
@@ -60,4 +61,32 @@ describe("TaskCard agent-active class", () => {
|
|||||||
expect(computeCardClass({})).toBe("card");
|
expect(computeCardClass({})).toBe("card");
|
||||||
expect(computeCardClass({ status: "executing" })).toMatch(/^card /);
|
expect(computeCardClass({ status: "executing" })).toMatch(/^card /);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Column-based agent-active tests
|
||||||
|
|
||||||
|
it("applies agent-active for in-progress column with no status", () => {
|
||||||
|
const cls = computeCardClass({ column: "in-progress" });
|
||||||
|
expect(cls).toContain("agent-active");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("applies agent-active for in-progress column with an active status", () => {
|
||||||
|
const cls = computeCardClass({ column: "in-progress", status: "executing" });
|
||||||
|
expect(cls).toContain("agent-active");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does NOT apply agent-active for todo column with no status", () => {
|
||||||
|
const cls = computeCardClass({ column: "todo" });
|
||||||
|
expect(cls).not.toContain("agent-active");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("applies agent-active for in-review column with active status (merging)", () => {
|
||||||
|
const cls = computeCardClass({ column: "in-review", status: "merging" });
|
||||||
|
expect(cls).toContain("agent-active");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does NOT apply agent-active for queued card in in-progress column", () => {
|
||||||
|
const cls = computeCardClass({ column: "in-progress", queued: true });
|
||||||
|
expect(cls).not.toContain("agent-active");
|
||||||
|
expect(cls).toContain("queued");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user