import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { Chip } from '../../src/components/Chip'; describe('Chip', () => { it('renders default span with solid classes', () => { render(Default); const chip = screen.getByText('Default'); expect(chip.tagName).toBe('SPAN'); expect(chip.className).toContain('chip-solid'); }); it('supports outlined variant with valid tone', () => { render( Custom , ); const chip = screen.getByText('Custom'); expect(chip.tagName).toBe('DIV'); expect(chip.className).toContain('chip-outlined'); expect(chip).toHaveStyle({ borderColor: 'rgb(67, 56, 202)', color: 'rgb(67, 56, 202)', }); }); it('supports direct tone tokens without shades for solid variant', () => { render(Solid); expect(screen.getByText('Solid')).toHaveStyle({ borderColor: 'rgb(255, 255, 255)', backgroundColor: 'rgb(255, 255, 255)', color: 'rgb(255, 255, 255)', }); }); it('ignores invalid/empty tones and keeps className', () => { const { rerender } = render( Invalid , ); const invalid = screen.getByText('Invalid'); expect(invalid).toHaveClass('chip-custom'); expect(invalid.getAttribute('style')).toBeNull(); rerender(Blank); expect(screen.getByText('Blank').getAttribute('style')).toBeNull(); }); it('ignores unresolved direct palettes and unknown shades', () => { const { rerender } = render(Palette token); expect(screen.getByText('Palette token').getAttribute('style')).toBeNull(); rerender(Unknown shade); expect(screen.getByText('Unknown shade').getAttribute('style')).toBeNull(); }); });