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();
});
});