import React from 'react'; import { render, screen } from '@testing-library/react'; import { StatusBadge, SensorStatusBadge } from '../StatusBadge'; describe('StatusBadge', () => { it('renders children text', () => { render(Active); expect(screen.getByText('Active')).toBeInTheDocument(); }); it('applies default variant styles', () => { render(Default); const badge = screen.getByText('Default'); expect(badge).toHaveClass('bg-gray-100'); expect(badge).toHaveClass('text-gray-700'); }); it('applies success variant styles', () => { render(Success); const badge = screen.getByText('Success'); expect(badge).toHaveClass('bg-green-100'); expect(badge).toHaveClass('text-green-700'); }); it('applies warning variant styles', () => { render(Warning); const badge = screen.getByText('Warning'); expect(badge).toHaveClass('bg-yellow-100'); expect(badge).toHaveClass('text-yellow-700'); }); it('applies error variant styles', () => { render(Error); const badge = screen.getByText('Error'); expect(badge).toHaveClass('bg-red-100'); expect(badge).toHaveClass('text-red-700'); }); it('applies info variant styles', () => { render(Info); const badge = screen.getByText('Info'); expect(badge).toHaveClass('bg-blue-100'); expect(badge).toHaveClass('text-blue-700'); }); it('renders dot indicator when dot prop is true', () => { const { container } = render(With Dot); const dot = container.querySelector('.w-1\\.5.h-1\\.5.rounded-full'); expect(dot).toBeInTheDocument(); }); it('does not render dot indicator by default', () => { const { container } = render(Without Dot); const dot = container.querySelector('.w-1\\.5.h-1\\.5.rounded-full'); expect(dot).not.toBeInTheDocument(); }); it('applies custom className', () => { render(Custom); const badge = screen.getByText('Custom'); expect(badge).toHaveClass('custom-class'); }); it('applies online variant styles', () => { render(Online); const badge = screen.getByText('Online'); expect(badge).toHaveClass('bg-green-100'); expect(badge).toHaveClass('text-green-700'); }); it('applies offline variant styles', () => { render(Offline); const badge = screen.getByText('Offline'); expect(badge).toHaveClass('bg-gray-100'); expect(badge).toHaveClass('text-gray-500'); }); }); describe('SensorStatusBadge', () => { it('renders Online text for online status', () => { render(); expect(screen.getByText('Online')).toBeInTheDocument(); }); it('renders Offline text for offline status', () => { render(); expect(screen.getByText('Offline')).toBeInTheDocument(); }); it('renders Warning text for warning status', () => { render(); expect(screen.getByText('Warning')).toBeInTheDocument(); }); it('renders Error text for error status', () => { render(); expect(screen.getByText('Error')).toBeInTheDocument(); }); it('includes dot indicator', () => { const { container } = render(); const dot = container.querySelector('.w-1\\.5.h-1\\.5.rounded-full'); expect(dot).toBeInTheDocument(); }); it('applies custom className', () => { render(); const badge = screen.getByText('Online'); expect(badge).toHaveClass('custom-sensor-class'); }); });