import '@testing-library/jest-dom' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { AmountInput } from '../index' const id = 'validationCustom01' describe(' intlConfig', () => { it('should use intl config settings (en-US, USD)', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('$123,456,789') }) it('should use intl config settings (en-IN, INR)', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('₹5,00,000') }) it('should use intl config settings (ja-JP, JPY)', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('¥123456') userEvent.type(screen.getByRole('textbox'), '{backspace}{backspace}{backspace}') expect(screen.getByRole('textbox')).toHaveValue('¥123') userEvent.type(screen.getByRole('textbox'), '.99') expect(screen.getByRole('textbox')).toHaveValue('¥12,399') }) it('should override locale currency symbol if prefix passed in', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('£100') }) it('should override locale group separator if groupSeparator passed in', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('$123/456/789.99') }) it('should override locale decimal separator if decimalSeparator passed in', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('$123,456-789') }) describe('onValueChange', () => { const onValueChangeSpy = jest.fn() beforeEach(() => { jest.clearAllMocks() }) it('should handle onValueChange with intl config settings (en-IN, INR)', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('') userEvent.type(screen.getByRole('textbox'), '₹12,34,567') expect(onValueChangeSpy).toHaveBeenLastCalledWith('1234567', undefined, { float: 1234567, formatted: '₹12,34,567', value: '1234567' }) expect(screen.getByRole('textbox')).toHaveValue('₹12,34,567') }) it('should handle onValueChange with negative value and prefix', () => { render( ) expect(screen.getByRole('textbox')).toHaveValue('') userEvent.type(screen.getByRole('textbox'), '-1200') expect(screen.getByRole('textbox')).toHaveValue('€\xa0-1.200') }) }) })