feat(FN-3625): test TaskCard drag override and graph drag opt-out wiring

Adds test coverage for TaskCard drag override behavior and DependencyGraph drag opt-out wiring, with a minor README clarification in the graph plugin.

Fusion-Task-Id: FN-3625
This commit is contained in:
Fusion
2026-05-07 03:20:39 -07:00
committed by gsxdsm
parent 89719e892d
commit 80ee9c25fc
2 changed files with 24 additions and 2 deletions

View File

@@ -59,6 +59,12 @@ describe("TaskCard", () => {
expect(screen.getByText("FN-001")).toBeDefined();
});
it("keeps native card dragging enabled by default", () => {
const { container } = render(<TaskCard task={makeTask()} onOpenDetail={noop} addToast={noop} />);
const card = container.querySelector(".card") as HTMLElement;
expect(card.getAttribute("draggable")).toBe("true");
});
it("disables native card dragging when disableDrag is true", () => {
const { container } = render(<TaskCard task={makeTask()} onOpenDetail={noop} addToast={noop} disableDrag={true} />);
const card = container.querySelector(".card") as HTMLElement;
@@ -1385,6 +1391,17 @@ describe("TaskCard provider icons on agent row", () => {
});
describe("TaskCard memo comparator provenance behavior", () => {
it("returns false when disableDrag changes", () => {
const task = makeTask();
expect(
__test_areTaskCardPropsEqual(
{ task, onOpenDetail: noop, addToast: noop, disableDrag: false } as any,
{ task, onOpenDetail: noop, addToast: noop, disableDrag: true } as any,
),
).toBe(false);
});
it("returns false when sourceMetadata.agentName changes", () => {
const previousTask = makeTask({ sourceType: "automation", sourceMetadata: { agentName: "Agent One" } });
const nextTask = makeTask({ sourceType: "automation", sourceMetadata: { agentName: "Agent Two" } });

View File

@@ -6,8 +6,8 @@ import { DependencyGraph } from "../DependencyGraph";
const fitToGraph = vi.fn();
vi.mock("@fusion/dashboard/app/components/TaskCard", () => ({
TaskCard: ({ task, onOpenDetail }: { task: Task; onOpenDetail: () => void }) => (
<button data-testid={`task-${task.id}`} onClick={() => onOpenDetail(task)}>{task.id}</button>
TaskCard: ({ task, onOpenDetail, disableDrag }: { task: Task; onOpenDetail: (task: Task) => void; disableDrag?: boolean }) => (
<button data-testid={`task-${task.id}`} draggable={!disableDrag} onClick={() => onOpenDetail(task)}>{task.id}</button>
),
}));
@@ -73,6 +73,11 @@ describe("DependencyGraph", () => {
expect(screen.queryByTestId("graph-task-node-C")).toBeNull();
});
it("renders embedded cards with native dragging disabled", () => {
render(<DependencyGraph tasks={[createTask("A", "in-progress")]} onOpenTaskDetail={vi.fn()} />);
expect(screen.getByTestId("task-A").getAttribute("draggable")).toBe("false");
});
it("clicking a card triggers onOpenDetail", () => {
const onOpenDetail = vi.fn();
render(<DependencyGraph tasks={[createTask("A", "in-progress")]} onOpenDetail={onOpenDetail} />);