import { render, screen } from '@testing-library/react' import { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } from '../card' describe('Card Components', () => { describe('Card', () => { it('renders correctly with default props', () => { render(Card content) const card = screen.getByTestId('card') expect(card).toBeInTheDocument() expect(card).toHaveClass('rounded-lg') expect(card).toHaveClass('border') expect(card).toHaveClass('bg-card') }) it('applies custom className', () => { render(Content) expect(screen.getByTestId('card')).toHaveClass('custom-card') }) it('forwards ref correctly', () => { const ref = jest.fn() render(Content) expect(ref).toHaveBeenCalled() }) }) describe('CardHeader', () => { it('renders correctly', () => { render(Header content) const header = screen.getByTestId('header') expect(header).toBeInTheDocument() expect(header).toHaveClass('flex') expect(header).toHaveClass('flex-col') expect(header).toHaveClass('space-y-1.5') }) }) describe('CardTitle', () => { it('renders correctly', () => { render(Card Title) const title = screen.getByTestId('title') expect(title).toBeInTheDocument() expect(title).toHaveClass('text-lg') expect(title).toHaveClass('font-semibold') expect(title).toHaveClass('leading-none') expect(title).toHaveClass('tracking-tight') }) }) describe('CardDescription', () => { it('renders correctly', () => { render(Card description) const description = screen.getByTestId('description') expect(description).toBeInTheDocument() expect(description).toHaveClass('text-sm') expect(description).toHaveClass('text-muted-foreground') }) }) describe('CardContent', () => { it('renders correctly', () => { render(Card Content) const content = screen.getByTestId('content') expect(content).toBeInTheDocument() expect(content).toHaveClass('pt-0') }) }) describe('CardFooter', () => { it('renders correctly', () => { render(Card Footer) const footer = screen.getByTestId('footer') expect(footer).toBeInTheDocument() expect(footer).toHaveClass('flex') expect(footer).toHaveClass('items-center') expect(footer).toHaveClass('pt-4') }) }) describe('Complete Card Structure', () => { it('renders full card structure correctly', () => { render( Test Title Test Description

Test content

) expect(screen.getByTestId('full-card')).toBeInTheDocument() expect(screen.getByText('Test Title')).toBeInTheDocument() expect(screen.getByText('Test Description')).toBeInTheDocument() expect(screen.getByText('Test content')).toBeInTheDocument() expect(screen.getByRole('button', { name: 'Action' })).toBeInTheDocument() }) }) })