import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { ActionStatusBadge } from './ActionStatusBadge'; describe('ActionStatusBadge', () => { describe('Rendering states', () => { it('renders PENDING status with warning variant', () => { render(); expect(screen.getByText('PENDING')).toBeDefined(); }); it('renders COMPLETED status with success variant', () => { render(); expect(screen.getByText('COMPLETED')).toBeDefined(); }); it('renders FAILED status with danger variant', () => { render(); expect(screen.getByText('FAILED')).toBeDefined(); }); it('renders IN_PROGRESS status with info variant', () => { render(); expect(screen.getByText('IN PROGRESS')).toBeDefined(); }); }); describe('Visual presentation', () => { it('formats status text by replacing underscores with spaces', () => { render(); expect(screen.getByText('IN PROGRESS')).toBeDefined(); expect(screen.queryByText('IN_PROGRESS')).toBeNull(); }); it('renders with correct size and rounded props', () => { const { container } = render(); // The Badge component should receive size="sm" and rounded="sm" expect(container.firstChild).toBeDefined(); }); }); describe('Edge cases', () => { it('handles all valid status types without errors', () => { const statuses: Array<'PENDING' | 'COMPLETED' | 'FAILED' | 'IN_PROGRESS'> = [ 'PENDING', 'COMPLETED', 'FAILED', 'IN_PROGRESS', ]; statuses.forEach((status) => { const { container } = render(); expect(container.firstChild).toBeDefined(); }); }); }); });