canina/frontend/application/vitest.setup.ts
2026-08-26 00:12:33 +03:30

57 lines
1.2 KiB
TypeScript

import '@testing-library/jest-dom';
import { vi } from 'vitest';
class MockIntersectionObserver {
observe = vi.fn();
disconnect = vi.fn();
unobserve = vi.fn();
}
Object.defineProperty(window, 'IntersectionObserver', {
writable: true,
configurable: true,
value: MockIntersectionObserver,
});
const localStorageMock = (() => {
let store: Record<string, string> = {};
return {
getItem: (key: string) => store[key] || null,
setItem: (key: string, value: string) => {
store[key] = value.toString();
},
removeItem: (key: string) => {
delete store[key];
},
clear: () => {
store = {};
},
};
})();
Object.defineProperty(window, 'localStorage', {
value: localStorageMock,
writable: true,
});
Object.defineProperty(window, 'sessionStorage', {
value: localStorageMock,
writable: true,
});
if (typeof globalThis !== 'undefined') {
(globalThis as any).localStorage = localStorageMock;
(globalThis as any).sessionStorage = localStorageMock;
}
vi.mock('next/navigation', () => ({
useRouter: () => ({
push: vi.fn(),
replace: vi.fn(),
prefetch: vi.fn(),
back: vi.fn(),
}),
usePathname: () => '/',
useSearchParams: () => new URLSearchParams(),
}));