test(FN-4380): add no-eager-batch-fetch board regression

Fusion-Task-Id: FN-4380
Fusion-Task-Lineage: f899054c-f015-4ebc-ae7d-1f25c2af41d7
This commit is contained in:
Fusion
2026-05-13 14:26:16 -07:00
committed by gsxdsm
parent dc0d0c7a0a
commit 6fdab539de

View File

@@ -6,6 +6,17 @@ import { COLUMNS } from "@fusion/core";
import type { Task } from "@fusion/core";
const fetchBatchMock = vi.fn();
vi.mock("../../hooks/useBatchBadgeFetch", () => ({
useBatchBadgeFetch: vi.fn(() => ({
fetchBatch: fetchBatchMock,
isLoading: false,
lastFetchTime: null,
getBatchData: vi.fn(),
})),
}));
vi.mock("../../api", () => ({
fetchWorkflowSteps: vi.fn().mockResolvedValue([
{ id: "WS-003", name: "Accessibility Audit", enabled: true },
@@ -30,6 +41,7 @@ const noop = () => {};
const noopAsync = () => Promise.resolve({} as any);
beforeEach(() => {
fetchBatchMock.mockReset();
for (const key of Object.keys(columnRenderCounts)) {
delete columnRenderCounts[key];
}
@@ -72,6 +84,46 @@ describe("Board", () => {
expect(main.id).toBe("board");
});
it("FN-4380: does not eagerly fetch GitHub badge status on board mount", () => {
vi.useFakeTimers();
try {
const tasksWithBadges: Task[] = [
{
id: "FN-PR-1",
title: "Task with PR badge",
description: "Has prInfo",
column: "todo",
dependencies: [],
steps: [],
currentStep: 0,
log: [],
createdAt: "2024-01-01T00:00:00.000Z",
updatedAt: "2024-01-01T00:00:00.000Z",
prInfo: { number: 123, owner: "runfusion", repo: "fusion" } as Task["prInfo"],
},
{
id: "FN-ISSUE-1",
title: "Task with issue badge",
description: "Has issueInfo",
column: "todo",
dependencies: [],
steps: [],
currentStep: 0,
log: [],
createdAt: "2024-01-01T00:00:00.000Z",
updatedAt: "2024-01-01T00:00:00.000Z",
issueInfo: { number: 456, owner: "runfusion", repo: "fusion" } as Task["issueInfo"],
},
];
renderBoard({ tasks: tasksWithBadges });
vi.runAllTimers();
expect(fetchBatchMock).not.toHaveBeenCalled();
} finally {
vi.useRealTimers();
}
});
it("renders all 6 columns", () => {
renderBoard();
for (const col of COLUMNS) {