import { describe, it, expect } from 'vitest' import { useState } from 'react' import { screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { useHandleAuthError } from '../../hooks/useHandleAuthError' import { renderWithProviders } from '../renderWithProviders' // Composant de test : déclenche le hook avec l'erreur passée en prop. function TestComponent({ error }) { const handleAuthError = useHandleAuthError() const [handled, setHandled] = useState(null) return (
{handled !== null &&

géré : {String(handled)}

}
) } describe('useHandleAuthError', () => { it('déconnecte et redirige vers /connexion sur une erreur 401', async () => { const error = Object.assign(new Error('Session expirée'), { status: 401 }) renderWithProviders(, { route: '/mes-gains', user: { email: 'a@b.fr', role: 'CLIENT' }, routes: { '/connexion':

Page Connexion

}, }) await userEvent.click(screen.getByRole('button', { name: 'déclencher' })) expect(screen.getByText('Page Connexion')).toBeInTheDocument() expect(localStorage.getItem('token')).toBeNull() expect(localStorage.getItem('user')).toBeNull() }) it('ne fait rien et renvoie false pour une autre erreur', async () => { const error = Object.assign(new Error('Erreur serveur'), { status: 500 }) renderWithProviders(, { route: '/mes-gains', user: { email: 'a@b.fr', role: 'CLIENT' }, routes: { '/connexion':

Page Connexion

}, }) await userEvent.click(screen.getByRole('button', { name: 'déclencher' })) expect(screen.getByText('géré : false')).toBeInTheDocument() expect(localStorage.getItem('token')).toBe('fake-token') }) })