""" Tests for document_converter.py """ import pytest import sys from pathlib import Path from unittest.mock import Mock, patch, MagicMock, mock_open sys.path.insert(0, str(Path(__file__).parent.parent)) import document_converter as dc class TestAPIKeyFinder: """Test API key finding logic.""" @patch.dict('os.environ', {'GEMINI_API_KEY': 'test-key-from-env'}) def test_find_api_key_from_env(self): """Test finding API key from environment.""" api_key = dc.find_api_key() assert api_key == 'test-key-from-env' @patch.dict('os.environ', {}, clear=True) @patch('document_converter.load_dotenv', None) def test_find_api_key_no_key(self): """Test when no API key is available.""" api_key = dc.find_api_key() assert api_key is None class TestProjectRoot: """Test project root finding.""" @patch('pathlib.Path.exists') def test_find_project_root_with_git(self, mock_exists): """Test finding project root with .git directory.""" root = dc.find_project_root() assert isinstance(root, Path) class TestMimeType: """Test MIME type detection.""" def test_pdf_mime_type(self): """Test PDF MIME type.""" assert dc.get_mime_type('document.pdf') == 'application/pdf' def test_image_mime_types(self): """Test image MIME types.""" assert dc.get_mime_type('image.jpg') == 'image/jpeg' assert dc.get_mime_type('image.png') == 'image/png' def test_unknown_mime_type(self): """Test unknown file extension.""" assert dc.get_mime_type('file.unknown') == 'application/octet-stream' class TestIntegration: """Integration tests.""" def test_mime_type_integration(self): """Test MIME type detection with various extensions.""" test_cases = [ ('document.pdf', 'application/pdf'), ('image.jpg', 'image/jpeg'), ('unknown.xyz', 'application/octet-stream'), ] for file_path, expected_mime in test_cases: assert dc.get_mime_type(file_path) == expected_mime if __name__ == '__main__': pytest.main([__file__, '-v', '--cov=document_converter', '--cov-report=term-missing'])