import React from 'react' import { renderWithProviders, screen } from '@/__tests__/utils/test-helpers' import Items from './items' jest.mock('lucide-react', () => ({ Zap: () => , Shield: () => , Globe: () => , Smartphone: () => , })) describe('Items Component', () => { it('should render items section with heading', () => { renderWithProviders() expect(screen.getByText('Why Choose Portfolio Host?')).toBeInTheDocument() }) it('should display section description', () => { renderWithProviders() expect(screen.getByText(/everything you need to share your work/i)).toBeInTheDocument() }) it('should display all default items', () => { renderWithProviders() expect(screen.getByText('Lightning Fast')).toBeInTheDocument() expect(screen.getByText('Secure & Reliable')).toBeInTheDocument() expect(screen.getByText('Custom Domains')).toBeInTheDocument() expect(screen.getByText('Mobile Optimized')).toBeInTheDocument() }) it('should display item descriptions', () => { renderWithProviders() expect(screen.getByText(/deploy your portfolio instantly/i)).toBeInTheDocument() expect(screen.getByText(/enterprise-grade security/i)).toBeInTheDocument() }) it('should accept custom items', () => { const customItems = [ { id: 'custom', title: 'Custom Feature', description: 'This is a custom feature', icon: 'zap' as const, }, ] renderWithProviders() expect(screen.getByText('Custom Feature')).toBeInTheDocument() expect(screen.getByText('This is a custom feature')).toBeInTheDocument() }) it('should have responsive grid layout', () => { const { container } = renderWithProviders() const grid = container.querySelector('.grid') expect(grid).toHaveClass('grid-cols-1', 'md:grid-cols-2', 'lg:grid-cols-4') }) it('should display icons for each item', () => { renderWithProviders() const icons = screen.getAllByTestId(/-(icon|zap-icon|shield-icon|globe-icon|smartphone-icon)/) expect(icons.length).toBeGreaterThan(0) }) it('should have hover effect on items', () => { const { container } = renderWithProviders() const items = container.querySelectorAll('[class*="hover:shadow"]') expect(items.length).toBeGreaterThan(0) }) })