test
This commit is contained in:
29
frontend/src/test/renderWithProviders.jsx
Normal file
29
frontend/src/test/renderWithProviders.jsx
Normal file
@@ -0,0 +1,29 @@
|
||||
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>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user