veza/apps/web/src/components/ui/textarea.test.tsx
senke 37981c2c17 chore(refactor/sumi-migration): commit pending changes — tests, stream server, dist_verification
- apps/web: test updates (Vitest/setup), playbackAnalyticsService, TrackGrid, serviceErrorHandler
- veza-common: logging, metrics, traits, validation, random
- veza-stream-server: audio pipeline, codecs, cache, monitoring, routes
- apps/web/dist_verification: refresh build assets (content-hashed filenames)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 19:39:18 +01:00

56 lines
1.7 KiB
TypeScript

import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { Textarea } from './textarea';
describe('Textarea Component', () => {
it('renders textarea', () => {
render(<Textarea placeholder="Enter text" />);
const textarea = screen.getByPlaceholderText('Enter text');
expect(textarea).toBeInTheDocument();
expect(textarea).toHaveClass('bg-muted');
});
it('renders with label', () => {
render(<Textarea label="Description" />);
const label = screen.getByText('Description');
expect(label).toBeInTheDocument();
// The label is not associated via htmlFor/id, use getByRole instead
const textarea = screen.getByRole('textbox');
expect(textarea).toBeInTheDocument();
});
it('displays error message', () => {
render(<Textarea error="This field is required" />);
const error = screen.getByText('This field is required');
expect(error).toBeInTheDocument();
expect(error).toHaveClass('text-destructive');
const textarea = screen.getByRole('textbox');
expect(textarea).toHaveClass('border-destructive');
});
it('applies custom className', () => {
render(<Textarea className="custom-textarea" />);
const textarea = screen.getByRole('textbox');
expect(textarea).toHaveClass('custom-textarea');
});
it('handles disabled state', () => {
render(<Textarea disabled />);
const textarea = screen.getByRole('textbox');
expect(textarea).toBeDisabled();
});
it('handles value prop', () => {
render(<Textarea value="Test value" readOnly />);
const textarea = screen.getByRole('textbox');
expect(textarea).toHaveValue('Test value');
});
});