import { describe, it, expect, vi, beforeEach } from 'vitest'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { OAuthButton } from './OAuthButton'; describe('OAuthButton', () => { const mockOnClick = vi.fn(); beforeEach(() => { vi.clearAllMocks(); }); it('should render Google button with correct label', () => { render(); expect(screen.getByText('Continuer avec Google')).toBeInTheDocument(); }); it('should render GitHub button with correct label', () => { render(); expect(screen.getByText('Continuer avec GitHub')).toBeInTheDocument(); }); it('should call onClick when Google button is clicked', async () => { const user = userEvent.setup(); render(); const button = screen.getByText('Continuer avec Google'); await user.click(button); expect(mockOnClick).toHaveBeenCalledTimes(1); }); it('should call onClick when GitHub button is clicked', async () => { const user = userEvent.setup(); render(); const button = screen.getByText('Continuer avec GitHub'); await user.click(button); expect(mockOnClick).toHaveBeenCalledTimes(1); }); it('should have type="button" to prevent form submission', () => { render(); const button = screen.getByText('Continuer avec Google'); expect(button).toHaveAttribute('type', 'button'); }); it('should use secondary variant', () => { render(); const button = screen.getByText('Continuer avec Google'); // AuthButton with variant="secondary" should have gray classes expect(button.className).toContain('bg-gray'); }); });