"""Tests for scripts/convert-to-cooklang.""" import importlib.machinery import importlib.util import os import tempfile # Load the script as a module (no .py extension, so use SourceFileLoader) SCRIPT_PATH = os.path.join( os.path.dirname(__file__), "..", "scripts", "convert-to-cooklang" ) _loader = importlib.machinery.SourceFileLoader("convert_to_cooklang", SCRIPT_PATH) _spec = importlib.util.spec_from_loader( "convert_to_cooklang", _loader, origin=SCRIPT_PATH ) mod = importlib.util.module_from_spec(_spec) _loader.exec_module(mod) def test_load_config_valid(): """Test loading a valid config file.""" with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f: f.write("anthropic:\n api_key: sk-test-123\n") config_path = f.name try: config = mod.load_config(config_path) assert config["api_key"] == "sk-test-123" finally: os.unlink(config_path) def test_load_config_missing_api_key(): """Test that missing api_key exits with error.""" with tempfile.NamedTemporaryFile(mode="w", suffix=".yaml", delete=False) as f: f.write("anthropic:\n model: foo\n") config_path = f.name try: try: mod.load_config(config_path) assert False, "Expected sys.exit" except SystemExit as e: assert e.code == 1 finally: os.unlink(config_path) def test_build_text_content(): """Test building a text content block.""" result = mod.build_text_content("Hello") assert result == [{"type": "text", "text": "Hello"}] def test_build_file_content_pdf(): """Test building file content for a PDF.""" with tempfile.NamedTemporaryFile(suffix=".pdf", delete=False) as f: f.write(b"%PDF- test") filepath = f.name try: result = mod.build_file_content(filepath) assert result[0]["type"] == "document" assert result[0]["source"]["media_type"] == "application/pdf" finally: os.unlink(filepath) def test_build_file_content_jpeg(): """Test building file content for a JPEG image.""" with tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) as f: f.write(b"\xff\xd8\xff\xe0 test jpeg") filepath = f.name try: result = mod.build_file_content(filepath) assert result[0]["type"] == "image" assert result[0]["source"]["media_type"] == "image/jpeg" finally: os.unlink(filepath) def test_unsupported_file_type(): """Test that unsupported file types are rejected.""" with tempfile.NamedTemporaryFile(suffix=".tiff", delete=False) as f: f.write(b"test") filepath = f.name try: try: mod.build_file_content(filepath) assert False, "Expected sys.exit for unsupported type" except SystemExit as e: assert e.code == 1 finally: os.unlink(filepath)