import React from 'react'; import { render, screen } from '@testing-library/react'; import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, } from '../../../src/renderer/components/ui/Card'; describe('Card', () => { it('renders with children', () => { render( Card content ); expect(screen.getByText('Card content')).toBeInTheDocument(); }); it('applies default styles', () => { render(Content); const card = screen.getByTestId('card'); expect(card).toHaveClass('rounded-2xl', 'border', 'shadow-lg'); }); it('supports custom className', () => { render( Content ); const card = screen.getByTestId('card'); expect(card).toHaveClass('custom-class'); expect(card).toHaveClass('rounded-2xl'); }); it('renders with complete structure', () => { render( Card Title Card description Card content Card footer ); expect(screen.getByText('Card Title')).toBeInTheDocument(); expect(screen.getByText('Card description')).toBeInTheDocument(); expect(screen.getByText('Card content')).toBeInTheDocument(); expect(screen.getByText('Card footer')).toBeInTheDocument(); }); }); describe('CardHeader', () => { it('renders with children', () => { render( Title ); expect(screen.getByText('Title')).toBeInTheDocument(); }); it('applies default styles', () => { render(Header); const header = screen.getByTestId('header'); expect(header).toHaveClass('grid', 'items-start', 'gap-1.5', 'px-6'); }); }); describe('CardTitle', () => { it('renders as div element', () => { render(Title); const title = screen.getByText('Title'); expect(title.tagName).toBe('DIV'); }); it('applies default styles', () => { render(Title); const title = screen.getByText('Title'); expect(title).toHaveClass('leading-none', 'font-semibold'); }); it('supports custom className', () => { render(Title); const title = screen.getByText('Title'); expect(title).toHaveClass('custom-class'); }); }); describe('CardDescription', () => { it('renders as div element', () => { render(Description); const description = screen.getByText('Description'); expect(description.tagName).toBe('DIV'); }); it('applies default styles', () => { render(Description); const description = screen.getByText('Description'); expect(description).toHaveClass('text-sm', 'text-muted-foreground'); }); }); describe('CardContent', () => { it('renders with children', () => { render(Content); expect(screen.getByText('Content')).toBeInTheDocument(); }); it('applies default styles', () => { render(Content); const content = screen.getByTestId('content'); expect(content).toHaveClass('px-6'); }); }); describe('CardFooter', () => { it('renders with children', () => { render(Footer); expect(screen.getByText('Footer')).toBeInTheDocument(); }); it('applies default styles', () => { render(Footer); const footer = screen.getByTestId('footer'); expect(footer).toHaveClass('flex', 'items-center', 'px-6'); }); it('supports custom className', () => { render( Footer ); const footer = screen.getByTestId('footer'); expect(footer).toHaveClass('justify-end'); }); });