// @vitest-environment jsdom import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import '@testing-library/jest-dom'; import { Badge } from '../../badge'; describe('Badge', () => { describe('Rendering', () => { it('renders with children', () => { render(Test Badge); expect(screen.getByText('Test Badge')).toBeInTheDocument(); }); it('renders with default variant', () => { render(Default); const badge = screen.getByTestId('badge'); expect(badge).toBeInTheDocument(); }); }); describe('Variants', () => { it('renders default variant', () => { render( Default ); const badge = screen.getByTestId('badge'); expect(badge).toHaveClass('bg-primary'); }); it('renders secondary variant', () => { render( Secondary ); const badge = screen.getByTestId('badge'); expect(badge).toHaveClass('bg-secondary'); }); it('renders destructive variant', () => { render( Destructive ); const badge = screen.getByTestId('badge'); expect(badge).toHaveClass('bg-destructive'); }); it('renders outline variant', () => { render( Outline ); const badge = screen.getByTestId('badge'); expect(badge).toHaveClass('text-foreground'); }); }); describe('Children', () => { it('renders text children', () => { render(Badge Text); expect(screen.getByText('Badge Text')).toBeInTheDocument(); }); it('renders complex children', () => { render( Icon Label ); expect(screen.getByText('Icon')).toBeInTheDocument(); expect(screen.getByText('Label')).toBeInTheDocument(); }); }); describe('Custom className', () => { it('merges custom className with variant classes', () => { render( Badge ); const badge = screen.getByTestId('badge'); expect(badge).toHaveClass('custom-class'); }); }); });