From 7837e1ab3ad0b42e990e11459afe42902cc951b0 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Fri, 30 Jan 2026 19:00:43 +0000 Subject: [PATCH] Add test suite (68 tests) --- tests/conftest.py | 110 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 tests/conftest.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..ff57570 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,110 @@ +"""Pytest configuration and fixtures for CodeXchange CLI tests.""" + +import pytest +from unittest.mock import MagicMock, patch + +from codexchange.models import Language, ConversionRequest, ConversionResult +from codexchange.config import ConfigSettings + + +@pytest.fixture +def sample_python_code(): + """Sample Python code for testing.""" + return '''def hello_world(): + """Print a greeting message.""" + print("Hello, World!") + +# This is a comment +def add(a, b): + """Add two numbers.""" + return a + b +''' + + +@pytest.fixture +def sample_javascript_code(): + """Sample JavaScript code for testing.""" + return '''function helloWorld() { + // Print a greeting message + console.log("Hello, World!"); +} + +// This is a comment +function add(a, b) { + return a + b; +} +''' + + +@pytest.fixture +def sample_typescript_code(): + """Sample TypeScript code for testing.""" + return '''function helloWorld(): void { + // Print a greeting message + console.log("Hello, World!"); +} + +// This is a comment +function add(a: number, b: number): number { + return a + b; +} +''' + + +@pytest.fixture +def mock_ollama_service(): + """Mock Ollama service for testing.""" + mock_service = MagicMock() + mock_service.test_connection.return_value = True + mock_service.list_models.return_value = [] + mock_service.generate.return_value = "converted code" + return mock_service + + +@pytest.fixture +def mock_config(): + """Mock configuration for testing.""" + return ConfigSettings( + ollama_host="http://localhost:11434", + default_model="codellama", + timeout=300, + verbose=False + ) + + +@pytest.fixture +def conversion_request(sample_python_code): + """Sample conversion request for testing.""" + return ConversionRequest( + source_code=sample_python_code, + source_language=Language.PYTHON, + target_language=Language.JAVASCRIPT, + model="codellama" + ) + + +@pytest.fixture +def successful_conversion_result(sample_python_code): + """Sample successful conversion result for testing.""" + return ConversionResult( + success=True, + converted_code="// Converted from Python\nconsole.log('Hello');", + original_code=sample_python_code, + source_language=Language.PYTHON, + target_language=Language.JAVASCRIPT, + model="codellama", + syntax_verified=True + ) + + +@pytest.fixture +def failed_conversion_result(sample_python_code): + """Sample failed conversion result for testing.""" + return ConversionResult( + success=False, + original_code=sample_python_code, + source_language=Language.PYTHON, + target_language=Language.JAVASCRIPT, + model="codellama", + error_message="Connection failed" + )