import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { CreditCardNumberInput } from './CreditCardNumberInput'; describe('credit card number input', () => { it('renders without errors', () => { render(); const input = screen.getByLabelText('Card Number'); expect(input).toBeInTheDocument(); }); it('does not allow non-numeric characters', async () => { render(); const input = screen.getByLabelText('Card Number') as HTMLInputElement; await userEvent.type(input, 'foo1234'); expect(input.value).toBe('1234 ____ ____ ____'); }); it('puts spaces between the numbers', async () => { render(); const input = screen.getByLabelText('Card Number') as HTMLInputElement; await userEvent.type(input, '5510000000000000'); expect(input.value).toBe('5510 0000 0000 0000'); }); it('does not allow more characters than required', async () => { render(); const input = screen.getByLabelText('Card Number') as HTMLInputElement; await userEvent.type(input, '5510000000000000251'); expect(input.value).toBe('5510 0000 0000 0000'); }); });