import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { StatusChip, type PropertyStatus } from '../status-chip'; const statuses: PropertyStatus[] = ['active', 'pending', 'sold', 'rented', 'rejected', 'draft']; const labels: Record = { active: 'Đang bán', pending: 'Chờ duyệt', sold: 'Đã bán', rented: 'Đã thuê', rejected: 'Từ chối', draft: 'Bản nháp', }; describe('StatusChip', () => { statuses.forEach((status) => { it(`renders label for status "${status}"`, () => { render(); expect(screen.getByText(labels[status])).toBeInTheDocument(); }); }); it('shows dot indicator by default', () => { const { container } = render(); // dot is a span with aria-hidden expect(container.querySelector('[aria-hidden]')).toBeInTheDocument(); }); it('hides dot when hideDot=true', () => { const { container } = render(); expect(container.querySelector('[aria-hidden]')).toBeNull(); }); it('merges custom className', () => { render(); expect(screen.getByTestId('sc')).toHaveClass('extra'); }); it('applies active color classes', () => { render(); expect(screen.getByTestId('sc')).toHaveClass('bg-signal-up-bg'); }); it('applies rejected color classes', () => { render(); expect(screen.getByTestId('sc')).toHaveClass('bg-destructive/10'); }); });