import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, it, expect, vi } from 'vitest';
import { Button } from './Button';
describe('Button', () => {
it('renders children text', () => {
render();
expect(screen.getByRole('button', { name: 'Click me' })).toBeInTheDocument();
});
it('calls onClick handler', async () => {
const user = userEvent.setup();
const onClick = vi.fn();
render();
await user.click(screen.getByRole('button'));
expect(onClick).toHaveBeenCalledOnce();
});
it('is disabled when disabled prop is set', () => {
render();
expect(screen.getByRole('button')).toBeDisabled();
});
it('applies variant styles', () => {
const { rerender } = render();
const btn = screen.getByRole('button');
expect(btn.className).toContain('bg-warm-text-secondary');
rerender();
expect(screen.getByRole('button').className).toContain('border');
});
it('applies size styles', () => {
render();
expect(screen.getByRole('button').className).toContain('h-8');
});
});