import { render, screen } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { VirtualizedList } from './virtualized-list'; // Mock @tanstack/react-virtual vi.mock('@tanstack/react-virtual', () => ({ useVirtualizer: () => ({ getVirtualItems: () => [ { index: 0, key: 0, start: 0, end: 50, size: 50 }, { index: 1, key: 1, start: 50, end: 100, size: 50 }, ], getTotalSize: () => 150, measureElement: () => {}, }), })); describe('VirtualizedList Component', () => { const mockItems = [ { id: '1', name: 'Item 1' }, { id: '2', name: 'Item 2' }, { id: '3', name: 'Item 3' }, ]; it('renders virtualized list', () => { render(
{item.name}
} />, ); expect(screen.getByText('Item 1')).toBeInTheDocument(); expect(screen.getByText('Item 2')).toBeInTheDocument(); }); it('applies custom className', () => { const { container } = render(
{item.name}
} className="custom-class" />, ); expect(container.firstChild).toHaveClass('custom-class'); }); it('calls onScroll when scrolling', () => { const mockOnScroll = vi.fn(); render(
{item.name}
} onScroll={mockOnScroll} />, ); // Scroll event would trigger onScroll // This is a basic test - actual scroll testing would require more setup expect(mockOnScroll).toBeDefined(); }); it('calls onItemsRendered when items are rendered', () => { const mockOnItemsRendered = vi.fn(); render(
{item.name}
} onItemsRendered={mockOnItemsRendered} />, ); // onItemsRendered would be called during rendering expect(mockOnItemsRendered).toBeDefined(); }); });