import { describe, it, expect, vi, beforeEach } from 'vitest'
import { screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import Connexion from '../../pages/Connexion'
import { renderWithProviders } from '../renderWithProviders'
import { loginApi } from '../../services/auth'
// On mocke le service d'API : les tests de composant ne font pas de vraies requêtes HTTP.
vi.mock('../../services/auth', () => ({
loginApi: vi.fn(),
}))
describe('Connexion', () => {
beforeEach(() => {
vi.clearAllMocks()
})
it('affiche le formulaire de connexion', () => {
renderWithProviders(
Page Mes Gains
}, }) await userEvent.type(screen.getByLabelText(/adresse email/i), 'client@example.com') await userEvent.type(screen.getByLabelText(/^mot de passe/i), 'MotDePasse123!') await userEvent.click(screen.getByRole('button', { name: /se connecter/i })) expect(await screen.findByText('Page Mes Gains')).toBeInTheDocument() expect(localStorage.getItem('token')).toBe('jwt-token') }) it("connecte un admin et redirige vers /admin", async () => { loginApi.mockResolvedValue({ token: 'jwt-token', user: { id: 2, email: 'admin@example.com', role: 'ADMIN' }, }) renderWithProviders(Page Admin
}, }) await userEvent.type(screen.getByLabelText(/adresse email/i), 'admin@example.com') await userEvent.type(screen.getByLabelText(/^mot de passe/i), 'MotDePasse123!') await userEvent.click(screen.getByRole('button', { name: /se connecter/i })) expect(await screen.findByText('Page Admin')).toBeInTheDocument() }) })