test(mocks): wire DocumentRow spec to shared __mocks__/$app/navigation
All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m33s
CI / OCR Service Tests (pull_request) Successful in 20s
CI / Backend Unit Tests (pull_request) Successful in 3m35s
CI / fail2ban Regex (pull_request) Successful in 43s
CI / Semgrep Security Scan (pull_request) Successful in 20s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m0s
All checks were successful
CI / Unit & Component Tests (pull_request) Successful in 3m33s
CI / OCR Service Tests (pull_request) Successful in 20s
CI / Backend Unit Tests (pull_request) Successful in 3m35s
CI / fail2ban Regex (pull_request) Successful in 43s
CI / Semgrep Security Scan (pull_request) Successful in 20s
CI / Compose Bucket Idempotency (pull_request) Successful in 1m0s
Smallest possible first step of issue #560. Adds a shared __mocks__/$app/navigation.ts exporting every nav function as vi.fn(), and switches one consumer (DocumentRow.svelte.spec.ts) from a per-spec factory to vi.mock('\$app/navigation') (no factory) to verify Vitest's __mocks__/ redirect resolves for SvelteKit virtual modules in browser-mode tests. CI is the gate: if the migrated spec passes alongside the 35 unchanged factory call sites, the same redirect pattern is applied across the remaining $app/navigation, $app/state, $app/forms and paraglide factories. Per ADR-012, eliminating factory mocks shrinks the birpc teardown-race surface; this commit is the first concrete cut. Refs #560. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
20
frontend/src/__mocks__/$app/navigation.ts
Normal file
20
frontend/src/__mocks__/$app/navigation.ts
Normal file
@@ -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(() => () => {});
|
||||||
@@ -6,7 +6,7 @@ import DocumentRow from './DocumentRow.svelte';
|
|||||||
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
|
|
||||||
vi.mock('$app/navigation', () => ({ goto: vi.fn() }));
|
vi.mock('$app/navigation');
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|||||||
Reference in New Issue
Block a user