import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { Badge } from './badge';
import React from 'react';
describe('Badge', () => {
it('renders correctly with default props', () => {
render(Default);
const badge = screen.getByText('Default');
expect(badge).toBeInTheDocument();
expect(badge).toHaveClass('bg-primary');
});
it('renders correctly with different variants', () => {
const { rerender } = render(Secondary);
expect(screen.getByText('Secondary')).toHaveClass('bg-secondary');
rerender(Destructive);
expect(screen.getByText('Destructive')).toHaveClass('bg-destructive');
rerender(Outline);
expect(screen.getByText('Outline')).toHaveClass('text-foreground');
});
it('renders as a child component when asChild is true', () => {
render(
Link Badge
);
const link = screen.getByRole('link', { name: /link badge/i });
expect(link).toBeInTheDocument();
expect(link).toHaveClass('bg-primary');
});
it('applies custom className', () => {
render(Custom);
expect(screen.getByText('Custom')).toHaveClass('custom-badge');
});
it('allows long text to wrap instead of forcing a single line', () => {
render(A very long badge label that should wrap);
const badge = screen.getByText(/a very long badge label/i);
expect(badge).not.toHaveClass('whitespace-nowrap');
expect(badge).toHaveClass('break-words');
});
});