import '@testing-library/jest-dom'
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { AmountInput } from '../index'
describe(' maxLength', () => {
const onValueChangeSpy = jest.fn()
beforeEach(() => {
jest.clearAllMocks()
})
it('should not allow more values than max length', () => {
render(
)
expect(screen.getByRole('textbox')).toHaveValue('£123')
userEvent.type(screen.getByRole('textbox'), '4')
expect(onValueChangeSpy).not.toBeCalled()
expect(screen.getByRole('textbox')).toHaveValue('£123')
})
it('should apply max length rule to negative value', () => {
render(
)
expect(screen.getByRole('textbox')).toHaveValue('-£123')
userEvent.type(screen.getByRole('textbox'), '4')
expect(onValueChangeSpy).not.toBeCalled()
expect(screen.getByRole('textbox')).toHaveValue('-£123')
userEvent.type(screen.getByRole('textbox'), '{backspace}5')
expect(onValueChangeSpy).toHaveBeenLastCalledWith('-125', undefined, {
float: -125,
formatted: '-£125',
value: '-125',
})
expect(screen.getByRole('textbox')).toHaveValue('-£125')
})
})