/** * Tests for FeatureGridBlock component */ import { render, screen } from '@testing-library/react'; import { FeatureGridBlock } from '../FeatureGridBlock'; describe('FeatureGridBlock', () => { const mockFeatures = [ { title: 'Feature 1', description: 'Description 1' }, { title: 'Feature 2', description: 'Description 2' }, { title: 'Feature 3' }, ]; it('renders heading when provided', () => { render(); expect(screen.getByText('Features')).toBeInTheDocument(); }); it('renders all features', () => { render(); expect(screen.getByText('Feature 1')).toBeInTheDocument(); expect(screen.getByText('Feature 2')).toBeInTheDocument(); expect(screen.getByText('Feature 3')).toBeInTheDocument(); }); it('renders feature descriptions when provided', () => { render(); expect(screen.getByText('Description 1')).toBeInTheDocument(); expect(screen.getByText('Description 2')).toBeInTheDocument(); }); it('renders feature icons when provided', () => { const featuresWithIcons = [ { title: 'Feature 1', icon: '🚀' }, { title: 'Feature 2', icon: '⭐' }, ]; render(); expect(screen.getByText('🚀')).toBeInTheDocument(); expect(screen.getByText('⭐')).toBeInTheDocument(); }); it('uses default columns value of 3', () => { const { container } = render(); const grid = container.querySelector('.shared-grid--3'); expect(grid).toBeInTheDocument(); }); it('applies correct columns class', () => { const { container } = render(); const grid = container.querySelector('.shared-grid--2'); expect(grid).toBeInTheDocument(); }); it('handles empty features array', () => { render(); expect(screen.queryByRole('article')).not.toBeInTheDocument(); }); });