import React from 'react'
import { render, screen, fireEvent } from '@testing-library/react'
import '@testing-library/jest-dom'
import { Input } from './index'
// Mock the styles import
jest.mock('./styles.scss', () => ({}))
describe('@joi/core/Input', () => {
it('renders correctly', () => {
render()
expect(screen.getByPlaceholderText('Test input')).toBeInTheDocument()
})
it('applies custom className', () => {
render()
expect(screen.getByRole('textbox')).toHaveClass('custom-class')
})
it('aligns text to the right when textAlign prop is set', () => {
render()
expect(screen.getByRole('textbox')).toHaveClass('text-right')
})
it('renders prefix icon when provided', () => {
render(Prefix} />)
expect(screen.getByTestId('prefix-icon')).toBeInTheDocument()
})
it('renders suffix icon when provided', () => {
render(Suffix} />)
expect(screen.getByTestId('suffix-icon')).toBeInTheDocument()
})
it('renders clear icon when clearable is true', () => {
render()
expect(screen.getByTestId('cross-2-icon')).toBeInTheDocument()
})
it('calls onClick when input is clicked', () => {
const onClick = jest.fn()
render()
fireEvent.click(screen.getByRole('textbox'))
expect(onClick).toHaveBeenCalledTimes(1)
})
it('calls onClear when clear icon is clicked', () => {
const onClear = jest.fn()
render()
fireEvent.click(screen.getByTestId('cross-2-icon'))
expect(onClear).toHaveBeenCalledTimes(1)
})
})