import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { renderWithProviders } from '@/test/utils'; import { AvailabilityStatusBadge } from './AvailabilityStatusBadge'; describe('AvailabilityStatusBadge', () => { it('renders Available status with green styling', () => { renderWithProviders(); const label = screen.getByTestId('availability-status-label'); expect(label).toHaveTextContent('Available'); const badge = screen.getByTestId('availability-badge'); expect(badge.querySelector('.bg-green-100')).toBeTruthy(); }); it('renders Maintenance status with amber styling', () => { renderWithProviders(); const label = screen.getByTestId('availability-status-label'); expect(label).toHaveTextContent('Maintenance'); const badge = screen.getByTestId('availability-badge'); expect(badge.querySelector('.bg-amber-100')).toBeTruthy(); }); it('renders Unavailable status with red styling', () => { renderWithProviders(); const label = screen.getByTestId('availability-status-label'); expect(label).toHaveTextContent('Unavailable'); const badge = screen.getByTestId('availability-badge'); expect(badge.querySelector('.bg-red-100')).toBeTruthy(); }); it('shows message subtitle when message is non-empty', () => { renderWithProviders( , ); expect(screen.getByTestId('availability-message')).toHaveTextContent( 'Scheduled downtime until 18:00', ); }); it('hides message element when message is empty string', () => { renderWithProviders(); expect(screen.queryByTestId('availability-message')).toBeNull(); }); it('hides message element when message prop is omitted', () => { renderWithProviders(); expect(screen.queryByTestId('availability-message')).toBeNull(); }); it('shows stale indicator when stale={true}', () => { renderWithProviders(); expect(screen.getByTestId('availability-stale-indicator')).toBeInTheDocument(); }); it('hides stale indicator when stale is omitted (default false)', () => { renderWithProviders(); expect(screen.queryByTestId('availability-stale-indicator')).toBeNull(); }); });