571fe5bc7c
- Create backend xUnit test project with Moq and FluentAssertions - Add test utilities: TestDataFactory, MockHttpContext, TestUserClaims - Create AuthControllerTests with comprehensive auth scenarios - Install Jest and React Testing Library for frontend - Configure jest.config.ts and jest.setup.ts with Next.js support - Add test scripts to package.json
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();
|
|
});
|