- Implement tests for Pagination, StatusBadge, ConfirmDialog, and MobileInput components. - Add tests for useSubscription, usePaymentConfig, and usePwaInstall hooks. - Create tests for API requests in the api module, including success and error handling. - Add utility function tests for formatting and validating Iranian mobile numbers. - Implement tests for BlogFormPage and BlogsPage to validate form submissions and data fetching. - Add tests for LoginPage to ensure proper validation and state management. - Create tests for authStore and uiStore to validate state management and functionality. - Set up Vitest configuration and testing utilities for consistent testing environment.
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { ReactElement, ReactNode } from 'react';
|
|
import { render, renderHook } from '@testing-library/react';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import { MemoryRouter } from 'react-router-dom';
|
|
|
|
export function makeClient(): QueryClient {
|
|
return new QueryClient({
|
|
defaultOptions: {
|
|
queries: { retry: false },
|
|
mutations: { retry: false },
|
|
},
|
|
});
|
|
}
|
|
|
|
export function Providers({
|
|
children,
|
|
client = makeClient(),
|
|
route = '/admin/dashboard',
|
|
}: {
|
|
children: ReactNode;
|
|
client?: QueryClient;
|
|
route?: string;
|
|
}) {
|
|
return (
|
|
<QueryClientProvider client={client}>
|
|
<MemoryRouter initialEntries={[route]}>{children}</MemoryRouter>
|
|
</QueryClientProvider>
|
|
);
|
|
}
|
|
|
|
export function renderWithProviders(ui: ReactElement, opts?: { route?: string }) {
|
|
const client = makeClient();
|
|
return {
|
|
client,
|
|
...render(ui, {
|
|
wrapper: ({ children }) => (
|
|
<Providers client={client} route={opts?.route}>
|
|
{children}
|
|
</Providers>
|
|
),
|
|
}),
|
|
};
|
|
}
|
|
|
|
export function renderHookWithClient<T>(cb: () => T) {
|
|
const client = makeClient();
|
|
return renderHook(cb, {
|
|
wrapper: ({ children }) => (
|
|
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
|
),
|
|
});
|
|
}
|