63 lines
1.2 KiB
TypeScript
63 lines
1.2 KiB
TypeScript
|
|
import '@testing-library/jest-dom';
|
||
|
|
|
||
|
|
// Mock Next.js router
|
||
|
|
jest.mock('next/navigation', () => ({
|
||
|
|
useRouter() {
|
||
|
|
return {
|
||
|
|
route: '/',
|
||
|
|
pathname: '/',
|
||
|
|
query: {},
|
||
|
|
asPath: '/',
|
||
|
|
push: jest.fn(),
|
||
|
|
replace: jest.fn(),
|
||
|
|
reload: jest.fn(),
|
||
|
|
back: jest.fn(),
|
||
|
|
prefetch: jest.fn(),
|
||
|
|
beforePopState: jest.fn(),
|
||
|
|
events: {
|
||
|
|
on: jest.fn(),
|
||
|
|
off: jest.fn(),
|
||
|
|
emit: jest.fn(),
|
||
|
|
},
|
||
|
|
isFallback: false,
|
||
|
|
isLocaleDomain: false,
|
||
|
|
isReady: true,
|
||
|
|
isPreview: false,
|
||
|
|
};
|
||
|
|
},
|
||
|
|
useSearchParams() {
|
||
|
|
return {
|
||
|
|
get: jest.fn(),
|
||
|
|
getAll: jest.fn(),
|
||
|
|
has: jest.fn(),
|
||
|
|
entries: jest.fn(),
|
||
|
|
keys: jest.fn(),
|
||
|
|
values: jest.fn(),
|
||
|
|
forEach: jest.fn(),
|
||
|
|
};
|
||
|
|
},
|
||
|
|
usePathname() {
|
||
|
|
return '/';
|
||
|
|
},
|
||
|
|
}));
|
||
|
|
|
||
|
|
// Mock window.matchMedia
|
||
|
|
Object.defineProperty(window, 'matchMedia', {
|
||
|
|
writable: true,
|
||
|
|
value: jest.fn().mockImplementation(query => ({
|
||
|
|
matches: false,
|
||
|
|
media: query,
|
||
|
|
onchange: null,
|
||
|
|
addListener: jest.fn(),
|
||
|
|
removeListener: jest.fn(),
|
||
|
|
addEventListener: jest.fn(),
|
||
|
|
removeEventListener: jest.fn(),
|
||
|
|
dispatchEvent: jest.fn(),
|
||
|
|
})),
|
||
|
|
});
|
||
|
|
|
||
|
|
// Clean up after each test
|
||
|
|
afterEach(() => {
|
||
|
|
jest.clearAllMocks();
|
||
|
|
});
|