import { render, screen, fireEvent } from '@testing-library/react';
import { describe, it, expect, vi } from 'vitest';
import { Textarea } from './textarea';
import React from 'react';
describe('Textarea', () => {
it('renders correctly with default props', () => {
render();
const textarea = screen.getByPlaceholderText('Enter description');
expect(textarea).toBeInTheDocument();
expect(textarea).toHaveClass('text-base'); // md size
});
it('renders correctly with different sizes', () => {
const { rerender } = render();
expect(screen.getByPlaceholderText('Small')).toHaveClass('text-sm');
rerender();
expect(screen.getByPlaceholderText('Medium')).toHaveClass('text-base');
rerender();
expect(screen.getByPlaceholderText('Large')).toHaveClass('text-base');
});
it('updates value on change', () => {
const onChange = vi.fn();
render();
const textarea = screen.getByRole('textbox');
fireEvent.change(textarea, { target: { value: 'New text' } });
expect(textarea).toHaveValue('New text');
expect(onChange).toHaveBeenCalled();
});
it('is disabled when disabled prop is true', () => {
render();
const textarea = screen.getByPlaceholderText('Disabled');
expect(textarea).toBeDisabled();
});
});