import React from 'react'; import { render, screen } from '@testing-library/react'; import { ThemeProvider } from '@mui/material/styles'; import theme from '../../theme'; import ProcessingTimeline from '../ProcessingTimeline'; const renderWithTheme = (component: React.ReactElement) => { return render( {component} ); }; describe('ProcessingTimeline', () => { const mockProps = { documentId: 'doc-123', fileName: 'test-document.pdf', createdAt: '2024-01-01T12:00:00Z', updatedAt: '2024-01-01T12:30:00Z', userId: 'user-123', ocrStatus: 'completed', ocrCompletedAt: '2024-01-01T12:15:00Z', ocrRetryCount: 0, }; it('renders processing timeline', () => { renderWithTheme( ); expect(screen.getByText('Processing Timeline')).toBeInTheDocument(); expect(screen.getByText('Document Uploaded')).toBeInTheDocument(); expect(screen.getByText('OCR Processing Completed')).toBeInTheDocument(); }); it('shows retry information when retries exist', () => { renderWithTheme( ); expect(screen.getByText('2 retries')).toBeInTheDocument(); expect(screen.getByText('Detailed Retry History')).toBeInTheDocument(); }); it('renders compact view correctly', () => { renderWithTheme( ); expect(screen.getByText('Processing Timeline')).toBeInTheDocument(); expect(screen.getByText('View Full Timeline')).toBeInTheDocument(); }); it('handles OCR error status', () => { renderWithTheme( ); expect(screen.getByText('OCR Processing Failed')).toBeInTheDocument(); }); it('shows pending OCR status', () => { renderWithTheme( ); expect(screen.getByText('OCR Processing Started')).toBeInTheDocument(); }); it('displays event count', () => { renderWithTheme( ); // Should show at least 2 events (upload + OCR completion) expect(screen.getByText(/\d+ events/)).toBeInTheDocument(); }); });