import '@testing-library/jest-dom' import { render, fireEvent, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { AmountInput } from '../index' describe(' fixedDecimalLength', () => { const onValueChangeSpy = jest.fn() beforeEach(() => { jest.clearAllMocks() }) describe('fixedDecimalLength', () => { it('should convert value on blur if fixedDecimalLength specified', async () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('$123.000') // delete .000 await userEvent.type(screen.getByRole('textbox'), '{backspace}{backspace}{backspace}{backspace}') fireEvent.focusOut(screen.getByRole('textbox')) expect(onValueChangeSpy).toHaveBeenLastCalledWith('1.230', undefined, { float: 1.23, formatted: '$1.230', value: '1.230' }) expect(screen.getByRole('textbox')).toHaveValue('$1.230') }) it('should work with decimalScale and decimalSeparator', async () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('$1.00') // delete .00 await userEvent.type(screen.getByRole('textbox'), '{backspace}{backspace}') await userEvent.type(screen.getByRole('textbox'), '23') fireEvent.focusOut(screen.getByRole('textbox')) expect(onValueChangeSpy).toHaveBeenLastCalledWith('1.23', undefined, { float: 1.23, formatted: '$1.23', value: '1.23' }) expect(screen.getByRole('textbox')).toHaveValue('$1.23') }) }) })