import { describe, it, expect } from 'vitest' import { screen } from '@testing-library/react' import ProtectedRoute from '../../components/ProtectedRoute' import { renderWithProviders } from '../renderWithProviders' describe('ProtectedRoute', () => { it("redirige vers /connexion si l'utilisateur n'est pas connecté", () => { renderWithProviders(

Contenu protégé

, { route: '/mes-gains', routes: { '/connexion':

Page Connexion

}, } ) expect(screen.getByText('Page Connexion')).toBeInTheDocument() expect(screen.queryByText('Contenu protégé')).not.toBeInTheDocument() }) it("affiche le contenu si l'utilisateur est connecté", () => { renderWithProviders(

Contenu protégé

, { route: '/mes-gains', user: { id: 1, email: 'client@example.com', role: 'CLIENT' }, } ) expect(screen.getByText('Contenu protégé')).toBeInTheDocument() }) it('affiche le contenu si le rôle est autorisé', () => { renderWithProviders(

Espace admin

, { route: '/admin', user: { id: 2, email: 'admin@example.com', role: 'ADMIN' }, } ) expect(screen.getByText('Espace admin')).toBeInTheDocument() }) it("redirige un client vers son espace s'il tente d'accéder à l'admin", () => { renderWithProviders(

Espace admin

, { route: '/admin', user: { id: 1, email: 'client@example.com', role: 'CLIENT' }, routes: { '/mes-gains':

Page Mes Gains

}, } ) expect(screen.getByText('Page Mes Gains')).toBeInTheDocument() expect(screen.queryByText('Espace admin')).not.toBeInTheDocument() }) it("redirige un employé vers son espace s'il tente d'accéder à l'admin", () => { renderWithProviders(

Espace admin

, { route: '/admin', user: { id: 3, email: 'employe@example.com', role: 'EMPLOYEE' }, routes: { '/employe':

Page Employé

}, } ) expect(screen.getByText('Page Employé')).toBeInTheDocument() }) })