| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- """
- Tests for ConfigManager - no GUI required.
- """
- import pytest
- import tempfile
- import json
- from pathlib import Path
- from src.config.manager import ConfigManager, ConfigChangeTracker
- from src.config.defaults import (
- DEFAULT_CONFIG,
- CONFIG_SCHEMA,
- get_config_item,
- get_category_items,
- validate_config_value,
- ConfigType,
- )
- class TestConfigManager:
- """Test ConfigManager functionality."""
- def test_initialization_with_default_path(self):
- """Test manager initializes with default config."""
- manager = ConfigManager()
- # Should have loaded defaults
- assert manager.get("translation.model_name") == "facebook/m2m100_418M"
- assert manager.get("translation.device") == "auto"
- assert manager.get("interface.theme") == "light"
- def test_get_existing_key(self):
- """Test getting an existing configuration key."""
- manager = ConfigManager()
- value = manager.get("translation.batch_size")
- assert value == 8
- def test_set_valid_value(self):
- """Test setting a valid configuration value."""
- with tempfile.TemporaryDirectory() as tmpdir:
- config_path = Path(tmpdir) / "config.json"
- manager = ConfigManager(config_path)
- success, error = manager.set("translation.batch_size", 16, validate=True)
- assert success is True
- assert error is None
- assert manager.get("translation.batch_size") == 16
- def test_set_invalid_value_below_min(self):
- """Test setting a value below minimum."""
- manager = ConfigManager()
- success, error = manager.set("translation.batch_size", 0, validate=True)
- assert success is False
- assert "must be >=" in error.lower()
- def test_get_all(self):
- """Test getting all configuration values."""
- manager = ConfigManager()
- all_config = manager.get_all()
- assert isinstance(all_config, dict)
- assert "translation.model_name" in all_config
- assert "interface.theme" in all_config
- class TestConfigDefaults:
- """Test default configuration and schema."""
- def test_default_config_completeness(self):
- """Test default config has all expected values."""
- assert "translation.model_name" in DEFAULT_CONFIG
- assert "translation.device" in DEFAULT_CONFIG
- assert "interface.theme" in DEFAULT_CONFIG
- assert "interface.language" in DEFAULT_CONFIG
- def test_schema_has_categories(self):
- """Test schema has all expected categories."""
- category_keys = [cat.key for cat in CONFIG_SCHEMA]
- assert "translation" in category_keys
- assert "interface" in category_keys
- assert "paths" in category_keys
- assert "advanced" in category_keys
- def test_get_config_item(self):
- """Test getting a config item from schema."""
- item = get_config_item("translation.batch_size")
- assert item is not None
- assert item.key == "translation.batch_size"
- assert item.title == "Batch Size"
|