import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from './input-otp'; import { OTPInputContext } from 'input-otp'; import React from 'react'; describe('InputOTP', () => { it('renders children correctly', () => { render( ); expect(screen.getByText('A')).toBeInTheDocument(); }); it('renders correctly with different sizes', () => { const { rerender, container } = render( ); expect(container.querySelector('[data-slot="input-otp-slot"]')).toHaveClass('h-8', 'w-8'); rerender( ); expect(container.querySelector('[data-slot="input-otp-slot"]')).toHaveClass('h-10', 'w-10'); rerender( ); expect(container.querySelector('[data-slot="input-otp-slot"]')).toHaveClass('h-12', 'w-12'); }); it('renders correctly', () => { const { container } = render( ); expect(container.querySelector('[data-slot="input-otp"]')).toBeInTheDocument(); expect(container.querySelectorAll('[data-slot="input-otp-slot"]')).toHaveLength(4); expect(container.querySelector('[data-slot="input-otp-separator"]')).toBeInTheDocument(); }); it('updates value on typing', () => { render( ); const input = screen.getByRole('textbox'); fireEvent.change(input, { target: { value: '1234' } }); expect(input).toHaveValue('1234'); }); });