From a2b1f73794a9a36fa1624c6346104a1c5e82b3ee Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 9 Jun 2026 20:29:11 -0700 Subject: [PATCH] FN-6152: reset dashboard route test mocks between cases Tighten dashboard route tests by resetting shared request and mock state between cases. - add default request headers and per-test chat SSE mock cleanup to prevent state leakage - restore mocked globals after GitHub review-refresh and settings route tests - clear secrets sync remote-fetch mock history before each test run Files changed: packages/dashboard/src/__tests__/chat-routes.test.ts | 10 ++++++++++ packages/dashboard/src/__tests__/routes-github.test.ts | 4 ++++ packages/dashboard/src/__tests__/routes-secrets-sync.test.ts | 1 + packages/dashboard/src/__tests__/routes-settings.test.ts | 4 ++++ 4 files changed, 19 insertions(+) Fusion-Task-Id: FN-6152 Fusion-Task-Lineage: c7db7cf2-ea2e-4c76-9fc5-5679cc708fe3 --- packages/dashboard/src/__tests__/chat-routes.test.ts | 10 ++++++++++ packages/dashboard/src/__tests__/routes-github.test.ts | 4 ++++ .../src/__tests__/routes-secrets-sync.test.ts | 1 + .../dashboard/src/__tests__/routes-settings.test.ts | 4 ++++ 4 files changed, 19 insertions(+) diff --git a/packages/dashboard/src/__tests__/chat-routes.test.ts b/packages/dashboard/src/__tests__/chat-routes.test.ts index 14ea8c8dea..b8268dc74a 100644 --- a/packages/dashboard/src/__tests__/chat-routes.test.ts +++ b/packages/dashboard/src/__tests__/chat-routes.test.ts @@ -11,6 +11,7 @@ function createSSERequest(): Request { const emitter = new EventEmitter(); emitter.setMaxListeners(50); (emitter as any).query = {}; // required: routes read req.query.projectId + (emitter as any).headers = {}; // required: routes read req.headers["last-event-id"] return emitter as unknown as Request; } @@ -1204,6 +1205,15 @@ describe("Chat API Routes", () => { }); describe("SSE stream lifecycle", () => { + beforeEach(() => { + mockSendMessage.mockResolvedValue(undefined); + mockChatStreamManager.reset(); + mockChatStreamManager.getBufferedEvents.mockClear(); + mockChatStreamManager.subscribe.mockClear(); + mockChatStreamManager.broadcast.mockClear(); + mockChatStreamManager.cleanupSession.mockClear(); + }); + /** * Helper to invoke the chat SSE route handler directly. * Tests the SSE route behavior by calling the handler with mock req/res. diff --git a/packages/dashboard/src/__tests__/routes-github.test.ts b/packages/dashboard/src/__tests__/routes-github.test.ts index 49c0db9635..3d1958923a 100644 --- a/packages/dashboard/src/__tests__/routes-github.test.ts +++ b/packages/dashboard/src/__tests__/routes-github.test.ts @@ -2409,6 +2409,10 @@ describe("POST /tasks/:id/review/refresh", () => { store = createMockStore(); }); + afterEach(() => { + vi.restoreAllMocks(); + }); + function buildApp() { const app = express(); app.use(express.json()); diff --git a/packages/dashboard/src/__tests__/routes-secrets-sync.test.ts b/packages/dashboard/src/__tests__/routes-secrets-sync.test.ts index 6dc41bdabe..c97443928c 100644 --- a/packages/dashboard/src/__tests__/routes-secrets-sync.test.ts +++ b/packages/dashboard/src/__tests__/routes-secrets-sync.test.ts @@ -50,6 +50,7 @@ describe("routes secrets sync", () => { beforeEach(async () => { vi.restoreAllMocks(); + mockedFetchFromRemoteNode.mockClear(); fixture = await createFixture("fn-secrets-sync-"); secrets = fixture.secretsStore; diff --git a/packages/dashboard/src/__tests__/routes-settings.test.ts b/packages/dashboard/src/__tests__/routes-settings.test.ts index 2d4c4a1df8..b964ece831 100644 --- a/packages/dashboard/src/__tests__/routes-settings.test.ts +++ b/packages/dashboard/src/__tests__/routes-settings.test.ts @@ -1141,6 +1141,10 @@ describe("PUT /settings/global", () => { store = createMockStore(); }); + afterEach(() => { + vi.restoreAllMocks(); + }); + function buildApp() { const app = express(); app.use(express.json());