import type { ChangeEvent } from 'react' import { fireEvent, render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import Input from '../index' describe('Input', () => { it('disables the input and hides its clear action', () => { render() expect(screen.getByRole('textbox')).toBeDisabled() expect(screen.queryByRole('button', { name: 'common.operation.clear' })).not.toBeInTheDocument() }) it('clears an editable value', async () => { const user = userEvent.setup() const onClear = vi.fn() render() await user.click(screen.getByRole('button', { name: 'common.operation.clear' })) expect(onClear).toHaveBeenCalledOnce() }) it('normalizes leading zeros while changing an initial numeric zero', () => { let changedValue = '' const onChange = vi.fn((event: ChangeEvent) => { changedValue = event.target.value }) render() fireEvent.change(screen.getByRole('spinbutton'), { target: { value: '00042' } }) expect(onChange).toHaveBeenCalledOnce() expect(changedValue).toBe('42') }) it('normalizes leading zeros before forwarding blur', () => { const onChange = vi.fn() const onBlur = vi.fn() render() fireEvent.blur(screen.getByRole('spinbutton')) expect(onChange.mock.calls[0]![0].target.value).toBe('12') expect(onBlur.mock.calls[0]![0].target.value).toBe('12') }) })