diff --git a/frontend/src/__mocks__/$app/navigation.ts b/frontend/src/__mocks__/$app/navigation.ts new file mode 100644 index 00000000..53a07bf4 --- /dev/null +++ b/frontend/src/__mocks__/$app/navigation.ts @@ -0,0 +1,20 @@ +// Shared mock for SvelteKit's $app/navigation virtual module. +// Activated by calling `vi.mock('$app/navigation')` (no factory) in a spec. +// Per ADR-012: eliminating per-spec factory bodies removes 36 birpc-race surface +// points; the unified mock keeps every nav export available as a vi.fn(). +// +// IMPORTANT: consuming specs MUST call `vi.clearAllMocks()` (or per-mock +// `mockClear()`) in `afterEach` — otherwise call counts leak between tests. +import { vi } from 'vitest'; + +export const goto = vi.fn(async () => {}); +export const invalidate = vi.fn(async () => {}); +export const invalidateAll = vi.fn(async () => {}); +export const beforeNavigate = vi.fn(); +export const afterNavigate = vi.fn(); +export const preloadCode = vi.fn(async () => {}); +export const preloadData = vi.fn(async () => {}); +export const pushState = vi.fn(); +export const replaceState = vi.fn(); +export const disableScrollHandling = vi.fn(); +export const onNavigate = vi.fn(() => () => {}); diff --git a/frontend/src/lib/document/DocumentRow.svelte.spec.ts b/frontend/src/lib/document/DocumentRow.svelte.spec.ts index 19b3c66a..03bbe84d 100644 --- a/frontend/src/lib/document/DocumentRow.svelte.spec.ts +++ b/frontend/src/lib/document/DocumentRow.svelte.spec.ts @@ -6,7 +6,7 @@ import DocumentRow from './DocumentRow.svelte'; import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte'; import type { components } from '$lib/generated/api'; -vi.mock('$app/navigation', () => ({ goto: vi.fn() })); +vi.mock('$app/navigation'); afterEach(() => { cleanup();