Add test suite for all modules
This commit is contained in:
122
local_code_assistant/tests/test_config.py
Normal file
122
local_code_assistant/tests/test_config.py
Normal file
@@ -0,0 +1,122 @@
|
||||
"""Tests for Local Code Assistant configuration."""
|
||||
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from local_code_assistant.services.config import ConfigService
|
||||
|
||||
|
||||
class TestConfigService:
|
||||
"""Tests for the configuration service."""
|
||||
|
||||
def test_default_ollama_base_url(self):
|
||||
"""Test default Ollama base URL."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_base_url == "http://localhost:11434"
|
||||
|
||||
def test_default_ollama_model(self):
|
||||
"""Test default Ollama model."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_model == "codellama"
|
||||
|
||||
def test_default_ollama_timeout(self):
|
||||
"""Test default Ollama timeout."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_timeout == 8000
|
||||
|
||||
def test_env_override_ollama_url(self):
|
||||
"""Test environment variable override for Ollama URL."""
|
||||
env = {'OLLAMA_BASE_URL': 'http://custom:9000'}
|
||||
with patch.dict('os.environ', env, clear=False):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_base_url == 'http://custom:9000'
|
||||
|
||||
def test_env_override_ollama_model(self):
|
||||
"""Test environment variable override for model."""
|
||||
env = {'OLLAMA_MODEL': 'custom-model'}
|
||||
with patch.dict('os.environ', env, clear=False):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_model == 'custom-model'
|
||||
|
||||
def test_env_override_timeout(self):
|
||||
"""Test environment variable override for timeout."""
|
||||
env = {'OLLAMA_TIMEOUT': '120'}
|
||||
with patch.dict('os.environ', env, clear=False):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.ollama_timeout == 120
|
||||
|
||||
def test_streaming_default(self):
|
||||
"""Test default streaming setting."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.streaming is True
|
||||
|
||||
def test_default_language(self):
|
||||
"""Test default programming language."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.default_language == "python"
|
||||
|
||||
def test_temperature_default(self):
|
||||
"""Test default temperature."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.temperature == 0.2
|
||||
|
||||
def test_max_tokens_default(self):
|
||||
"""Test default max tokens."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.max_tokens == 4000
|
||||
|
||||
def test_syntax_highlighting_default(self):
|
||||
"""Test default syntax highlighting."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.syntax_highlighting is True
|
||||
|
||||
def test_clipboard_enabled_default(self):
|
||||
"""Test default clipboard setting."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
assert config.clipboard_enabled is True
|
||||
|
||||
def test_set_ollama_base_url(self):
|
||||
"""Test setting Ollama base URL."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
config.ollama_base_url = "http://new:9000"
|
||||
assert config.ollama_base_url == "http://new:9000"
|
||||
|
||||
def test_set_ollama_model(self):
|
||||
"""Test setting Ollama model."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
config.ollama_model = "new-model"
|
||||
assert config.ollama_model == "new-model"
|
||||
|
||||
def test_get_nested_config(self):
|
||||
"""Test getting nested configuration values."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
value = config.get("ollama.base_url")
|
||||
assert value == "http://localhost:11434"
|
||||
|
||||
def test_get_missing_config(self):
|
||||
"""Test getting missing configuration with default."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
value = config.get("nonexistent.key", "default")
|
||||
assert value == "default"
|
||||
|
||||
def test_set_nested_config(self):
|
||||
"""Test setting nested configuration values."""
|
||||
with patch('os.getenv', return_value=None):
|
||||
config = ConfigService("/nonexistent")
|
||||
config.set("new.setting", "value")
|
||||
value = config.get("new.setting")
|
||||
assert value == "value"
|
||||
Reference in New Issue
Block a user