import { render, screen } from '@testing-library/react' import { ActionButton, ActionButtonState } from './index' describe('ActionButton', () => { it('renders button with default props', () => { render(Click me) const button = screen.getByRole('button', { name: 'Click me' }) expect(button).toBeInTheDocument() expect(button.classList.contains('action-btn')).toBe(true) expect(button.classList.contains('action-btn-m')).toBe(true) }) it('renders button with xs size', () => { render(Small Button) const button = screen.getByRole('button', { name: 'Small Button' }) expect(button.classList.contains('action-btn-xs')).toBe(true) }) it('renders button with l size', () => { render(Large Button) const button = screen.getByRole('button', { name: 'Large Button' }) expect(button.classList.contains('action-btn-l')).toBe(true) }) it('renders button with xl size', () => { render(Extra Large Button) const button = screen.getByRole('button', { name: 'Extra Large Button' }) expect(button.classList.contains('action-btn-xl')).toBe(true) }) it('applies correct state classes', () => { const { rerender } = render( Destructive, ) let button = screen.getByRole('button', { name: 'Destructive' }) expect(button.classList.contains('action-btn-destructive')).toBe(true) rerender(Active) button = screen.getByRole('button', { name: 'Active' }) expect(button.classList.contains('action-btn-active')).toBe(true) rerender(Disabled) button = screen.getByRole('button', { name: 'Disabled' }) expect(button.classList.contains('action-btn-disabled')).toBe(true) rerender(Hover) button = screen.getByRole('button', { name: 'Hover' }) expect(button.classList.contains('action-btn-hover')).toBe(true) }) it('applies custom className', () => { render(Custom Class) const button = screen.getByRole('button', { name: 'Custom Class' }) expect(button.classList.contains('custom-class')).toBe(true) }) it('applies custom style', () => { render( Custom Style , ) const button = screen.getByRole('button', { name: 'Custom Style' }) expect(button).toHaveStyle({ color: 'rgb(255, 0, 0)', backgroundColor: 'rgb(0, 0, 255)', }) }) it('forwards additional button props', () => { render(Disabled Button) const button = screen.getByRole('button', { name: 'Disabled Button' }) expect(button).toBeDisabled() expect(button).toHaveAttribute('data-testid', 'test-button') }) })