import { describe, it, expect, vi } from 'vitest';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { Button } from './button';
describe('Test Button Component', () => {
it('renders the button with children text', () => {
render();
expect(screen.getByText('Click Me')).toBeInTheDocument();
});
it('calls onClick when clicked', async () => {
const handleClick = vi.fn();
render();
const user = userEvent.setup();
await user.click(screen.getByText('Click Me'));
expect(handleClick).toHaveBeenCalledTimes(1);
});
it('applies the correct variant class', () => {
render();
const button = screen.getByText('Delete');
expect(button).toHaveClass('bg-danger-500');
expect(button).toHaveClass('hover:bg-danger-600');
expect(button).toHaveClass('text-white');
});
it("disables the button when 'disabled' prop is set", async () => {
const handleClick = vi.fn();
render(
);
const user = userEvent.setup();
const button = screen.getByText('Disabled');
expect(button).toBeDisabled();
await user.click(button);
expect(handleClick).not.toHaveBeenCalled();
});
});