import { render, screen } from '@testing-library/react';
import { describe, expect, it } from 'vitest';
import { Select } from './Select';
describe('Select', () => {
it('renders item labels in the trigger instead of raw values', () => {
render(
,
);
expect(screen.getByRole('combobox')).toHaveTextContent('Designer');
expect(screen.getByRole('combobox')).not.toHaveTextContent('designer');
});
it('supports children as item labels', () => {
render(
,
);
expect(screen.getByRole('combobox')).toHaveTextContent('Light');
});
it('keeps the hover border treatment while open', () => {
render(
,
);
expect(screen.getByRole('combobox')).toHaveAttribute('data-popup-open');
expect(screen.getByRole('combobox')).toHaveClass(
'data-popup-open:border-ring/50',
);
});
it('labels the trigger with Select.Label', () => {
render(
,
);
expect(screen.getByRole('combobox', { name: 'Role' })).toBeInTheDocument();
expect(screen.getByText('Role')).toHaveAttribute(
'data-slot',
'select-label',
);
});
it('renders group labels separately from Select.Label', () => {
render(
,
);
expect(screen.getByText('Appearance')).toHaveAttribute(
'data-slot',
'select-group-label',
);
expect(screen.getByRole('combobox')).toHaveTextContent('Light');
});
});