56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
import React from 'react';
|
|
import { render, screen } from '@testing-library/react';
|
|
import App from './App';
|
|
|
|
jest.mock('axios', () => ({
|
|
__esModule: true,
|
|
default: {
|
|
get: jest.fn(() => Promise.resolve({ data: {} })),
|
|
interceptors: {
|
|
request: { use: jest.fn() },
|
|
response: { use: jest.fn() }
|
|
}
|
|
},
|
|
get: jest.fn(() => Promise.resolve({ data: {} }))
|
|
}), { virtual: true });
|
|
|
|
// Mock the AuthContext
|
|
jest.mock('./contexts/AuthContext', () => ({
|
|
useAuth: () => ({
|
|
user: null,
|
|
loading: false,
|
|
login: jest.fn(),
|
|
register: jest.fn(),
|
|
logout: jest.fn(),
|
|
fetchUser: jest.fn()
|
|
}),
|
|
AuthProvider: ({ children }) => children
|
|
}));
|
|
|
|
// Mock react-router-dom
|
|
jest.mock('react-router-dom', () => ({
|
|
BrowserRouter: ({ children }) => <div>{children}</div>,
|
|
Routes: ({ children }) => <div>{children}</div>,
|
|
Route: ({ children }) => <div>{children}</div>,
|
|
Navigate: ({ to }) => <div data-testid="navigate">{to}</div>,
|
|
Outlet: () => <div data-testid="outlet">Outlet</div>
|
|
}));
|
|
|
|
// Mock react-query
|
|
jest.mock('react-query', () => ({
|
|
QueryClient: jest.fn(() => ({})),
|
|
QueryClientProvider: ({ children }) => <div>{children}</div>
|
|
}));
|
|
|
|
// Mock react-hot-toast
|
|
jest.mock('react-hot-toast', () => ({
|
|
Toaster: () => <div data-testid="toaster">Toaster</div>
|
|
}));
|
|
|
|
describe('App', () => {
|
|
it('renders without crashing', () => {
|
|
render(<App />);
|
|
expect(screen.getByTestId('toaster')).toBeInTheDocument();
|
|
});
|
|
});
|