"""Tests pour converter.py — wrapper MarkItDown.""" import tempfile from unittest.mock import MagicMock, patch import converter @patch.object(converter, "_converter") def test_convert_returns_markdown_text(mock_converter): """convert() doit retourner le text_content du résultat MarkItDown.""" mock_result = MagicMock() mock_result.text_content = "# Hello World" mock_converter.convert.return_value = mock_result with tempfile.NamedTemporaryFile(suffix=".txt", delete=True) as f: result = converter.convert(f.name) assert result == "# Hello World" mock_converter.convert.assert_called_once() def test_convert_file_not_found(): """convert() doit lever FileNotFoundError si le fichier n'existe pas.""" try: converter.convert("/chemin/inexistant/fichier.xlsx") assert False, "Devrait avoir levé une exception" except FileNotFoundError as e: assert "Fichier introuvable" in str(e) def test_convert_path_is_directory(): """convert() doit lever ValueError si le chemin est un dossier.""" with tempfile.TemporaryDirectory() as tmpdir: try: converter.convert(tmpdir) assert False, "Devrait avoir levé une exception" except ValueError as e: assert "n'est pas un fichier" in str(e) @patch.object(converter, "_converter") def test_convert_raises_original_exception(mock_converter): """convert() doit relayer les exceptions du convertisseur sous-jacent.""" mock_converter.convert.side_effect = RuntimeError("something went wrong") with tempfile.NamedTemporaryFile(suffix=".xlsx", delete=True) as f: try: converter.convert(f.name) assert False, "Devrait avoir levé une exception" except Exception as e: assert "something went wrong" in str(e)