Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import React from 'react'; import { render, screen, fireEvent } from '@testing-library/react'; import { PrioritySelector } from './PrioritySelector'; describe('PrioritySelector', () => { const mockOnChange = jest.fn(); beforeEach(() => { mockOnChange.mockClear(); }); it('renders selector', () => { render(<PrioritySelector value="MEDIUM" onChange={mockOnChange} />); expect(screen.getByTestId('priority-selector')).toBeInTheDocument(); }); it('displays current value', () => { render(<PrioritySelector value="HIGH" onChange={mockOnChange} />); const selector = screen.getByTestId('priority-selector') as HTMLSelectElement; expect(selector.value).toBe('HIGH'); }); it('renders label when provided', () => { render(<PrioritySelector value="MEDIUM" onChange={mockOnChange} label="Priority" />); expect(screen.getByText('Priority')).toBeInTheDocument(); }); it('calls onChange when selection changes', () => { render(<PrioritySelector value="MEDIUM" onChange={mockOnChange} />); const selector = screen.getByTestId('priority-selector'); fireEvent.change(selector, { target: { value: 'CRITICAL' } }); expect(mockOnChange).toHaveBeenCalledWith('CRITICAL'); }); it('contains all priority options', () => { render(<PrioritySelector value="MEDIUM" onChange={mockOnChange} />); expect(screen.getByText('Low')).toBeInTheDocument(); expect(screen.getByText('Medium')).toBeInTheDocument(); expect(screen.getByText('High')).toBeInTheDocument(); expect(screen.getByText('Critical')).toBeInTheDocument(); }); it('is disabled when disabled prop is true', () => { render(<PrioritySelector value="MEDIUM" onChange={mockOnChange} disabled />); expect(screen.getByTestId('priority-selector')).toBeDisabled(); }); it('applies custom className', () => { const { container } = render( <PrioritySelector value="MEDIUM" onChange={mockOnChange} className="custom-class" /> ); expect(container.firstChild).toHaveClass('custom-class'); }); }); |