import React from 'react'; import { render, screen } from '@testing-library/react'; import { ThemeProvider } from '@mui/material/styles'; import theme from '../../theme'; import MetadataParser from '../MetadataParser'; const renderWithTheme = (component: React.ReactElement) => { return render( {component} ); }; describe('MetadataParser', () => { const mockImageMetadata = { exif: { make: 'Canon', model: 'EOS R5', focal_length: 85, aperture: 2.8, iso: 800, width: 4096, height: 2048, date_time_original: '2024-01-01T12:00:00Z', }, }; const mockPdfMetadata = { pdf: { title: 'Sample Document', author: 'Test Author', creator: 'Adobe Acrobat', page_count: 5, creation_date: '2024-01-01T12:00:00Z', }, }; it('renders EXIF data for image files', () => { renderWithTheme( ); expect(screen.getByText('Camera')).toBeInTheDocument(); expect(screen.getByText('Canon')).toBeInTheDocument(); expect(screen.getByText('EOS R5')).toBeInTheDocument(); }); it('renders PDF metadata for PDF files', () => { renderWithTheme( ); expect(screen.getByText('Document Info')).toBeInTheDocument(); expect(screen.getByText('Sample Document')).toBeInTheDocument(); expect(screen.getByText('Test Author')).toBeInTheDocument(); }); it('renders compact view correctly', () => { renderWithTheme( ); expect(screen.getByText('Camera')).toBeInTheDocument(); // In compact mode, should show limited items expect(screen.getByText('Canon')).toBeInTheDocument(); }); it('shows message when no metadata available', () => { renderWithTheme( ); expect(screen.getByText('No detailed metadata available for this file type')).toBeInTheDocument(); }); });