30 lines
1.2 KiB
JavaScript
30 lines
1.2 KiB
JavaScript
import { render } from '@testing-library/react'
|
|
import { MemoryRouter, Routes, Route } from 'react-router-dom'
|
|
import { AuthProvider } from '../context/AuthContext'
|
|
|
|
// Rend un composant avec les mêmes providers que l'appli (AuthContext + Router).
|
|
// - `route` : URL initiale (peut être un objet { pathname, state })
|
|
// - `user` : utilisateur pré-connecté (écrit dans localStorage avant le rendu,
|
|
// comme le ferait une vraie session)
|
|
// - `routes`: routes supplémentaires pour vérifier les redirections,
|
|
// ex: { '/mes-gains': <p>Page Mes Gains</p> }
|
|
export function renderWithProviders(ui, { route = '/', user = null, routes = {} } = {}) {
|
|
if (user) {
|
|
localStorage.setItem('user', JSON.stringify(user))
|
|
localStorage.setItem('token', 'fake-token')
|
|
}
|
|
|
|
return render(
|
|
<AuthProvider>
|
|
<MemoryRouter initialEntries={[route]}>
|
|
<Routes>
|
|
<Route path={typeof route === 'string' ? route : route.pathname} element={ui} />
|
|
{Object.entries(routes).map(([path, element]) => (
|
|
<Route key={path} path={path} element={element} />
|
|
))}
|
|
</Routes>
|
|
</MemoryRouter>
|
|
</AuthProvider>
|
|
)
|
|
}
|