united-tattoo/vitest.setup.ts

107 lines
2.2 KiB
TypeScript

import '@testing-library/jest-dom'
import { vi } from 'vitest'
// Mock Next.js router
vi.mock('next/router', () => ({
useRouter: () => ({
push: vi.fn(),
pathname: '/',
query: {},
asPath: '/',
}),
}))
// Mock Next.js navigation
vi.mock('next/navigation', () => ({
useRouter: () => ({
push: vi.fn(),
replace: vi.fn(),
back: vi.fn(),
forward: vi.fn(),
refresh: vi.fn(),
prefetch: vi.fn(),
}),
usePathname: () => '/',
useSearchParams: () => new URLSearchParams(),
}))
// Mock NextAuth
vi.mock('next-auth/react', () => ({
useSession: () => ({
data: {
user: {
id: 'test-user-id',
name: 'Test User',
email: 'test@example.com',
role: 'SHOP_ADMIN',
},
},
status: 'authenticated',
}),
signIn: vi.fn(),
signOut: vi.fn(),
getSession: vi.fn(),
}))
// Mock React Query
vi.mock('@tanstack/react-query', () => ({
useQuery: vi.fn(() => ({
data: null,
isLoading: false,
error: null,
})),
useMutation: vi.fn(() => ({
mutate: vi.fn(),
mutateAsync: vi.fn(),
isPending: false,
isError: false,
error: null,
})),
useQueryClient: vi.fn(() => ({
invalidateQueries: vi.fn(),
setQueryData: vi.fn(),
getQueryData: vi.fn(),
})),
QueryClient: vi.fn(),
QueryClientProvider: ({ children }: { children: React.ReactNode }) => children,
}))
// Mock fetch globally
global.fetch = vi.fn()
// Mock crypto.randomUUID
Object.defineProperty(global, 'crypto', {
value: {
randomUUID: () => 'test-uuid-' + Math.random().toString(36).substr(2, 9),
},
})
// Mock window.matchMedia
Object.defineProperty(window, 'matchMedia', {
writable: true,
value: vi.fn().mockImplementation(query => ({
matches: false,
media: query,
onchange: null,
addListener: vi.fn(), // deprecated
removeListener: vi.fn(), // deprecated
addEventListener: vi.fn(),
removeEventListener: vi.fn(),
dispatchEvent: vi.fn(),
})),
})
// Mock IntersectionObserver
global.IntersectionObserver = vi.fn().mockImplementation(() => ({
observe: vi.fn(),
unobserve: vi.fn(),
disconnect: vi.fn(),
}))
// Mock ResizeObserver
global.ResizeObserver = vi.fn().mockImplementation(() => ({
observe: vi.fn(),
unobserve: vi.fn(),
disconnect: vi.fn(),
}))