// @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');
});
});
});