import { describe, it, expect } from 'vitest'; import { render, screen } from '@testing-library/react'; import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from '../card'; describe('Card', () => { it('renders card with children', () => { render(Card content); expect(screen.getByText('Card content')).toBeInTheDocument(); }); it('applies custom className', () => { render(Test); expect(screen.getByText('Test')).toHaveClass('custom'); }); it('renders full card structure', () => { render( Title Description Content Footer ); expect(screen.getByText('Title')).toBeInTheDocument(); expect(screen.getByText('Description')).toBeInTheDocument(); expect(screen.getByText('Content')).toBeInTheDocument(); expect(screen.getByText('Footer')).toBeInTheDocument(); }); it('CardHeader renders with correct class', () => { render(Header); expect(screen.getByTestId('header')).toHaveClass( 'flex', 'flex-col', 'space-y-1.5' ); }); it('CardTitle renders as heading', () => { render(My Title); const title = screen.getByText('My Title'); expect(title).toBeInTheDocument(); }); it('CardDescription renders with muted styling', () => { render(Description text); expect(screen.getByText('Description text')).toBeInTheDocument(); }); it('CardContent renders with correct padding', () => { render(Content); expect(screen.getByTestId('content')).toHaveClass('pt-0'); }); it('CardFooter renders with flex layout', () => { render(Footer); expect(screen.getByTestId('footer')).toHaveClass('flex', 'items-center'); }); });