mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-11 05:13:01 +00:00
fix(test): repair test infrastructure and mock fixtures (#281)
* fix(test): repair test infrastructure and mock fixtures - Add test/__init__.py for proper test collection - Fix ConfigManager instantiation to use config_path parameter - Route schedule config through config_service mock - Update mock to match get_raw_file_content endpoint change Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(test): correct get_main_config assertion per CodeRabbit review The endpoint calls load_config(), not get_raw_file_content('main'). Also set up load_config mock return value in the fixture so the test's data assertions pass correctly. Co-Authored-By: 5ymb01 <noreply@github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(test): correct plugin config test mock structure and schema returns - Plugin configs live at top-level keys, not under 'plugins' subkey - Mock schema_manager.generate_default_config to return a dict - Mock schema_manager.merge_with_defaults to merge dicts (not MagicMock) - Fixes test_get_plugin_config returning 500 due to non-serializable MagicMock Co-Authored-By: 5ymb01 <noreply@github.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(test): use patch.object for config_service.get_config in schedule tests config_service.get_config is a real method, not a mock — can't set return_value on it directly. Use patch.object context manager instead. Co-Authored-By: 5ymb01 <noreply@github.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: 5ymb01 <5ymb01@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: 5ymb01 <noreply@github.com>
This commit is contained in:
@@ -23,6 +23,7 @@ if str(project_root) not in sys.path:
|
||||
sys.path.insert(0, str(project_root))
|
||||
|
||||
from src.config_manager import ConfigManager
|
||||
from src.exceptions import ConfigError
|
||||
from src.plugin_system.schema_manager import SchemaManager
|
||||
|
||||
|
||||
@@ -30,35 +31,31 @@ class TestInvalidJson:
|
||||
"""Test handling of invalid JSON in config files."""
|
||||
|
||||
def test_invalid_json_syntax(self, tmp_path):
|
||||
"""Config with invalid JSON syntax should be handled gracefully."""
|
||||
"""Config with invalid JSON syntax should raise ConfigError."""
|
||||
config_file = tmp_path / "config.json"
|
||||
config_file.write_text("{ invalid json }")
|
||||
|
||||
with patch.object(ConfigManager, '_get_config_path', return_value=str(config_file)):
|
||||
config_manager = ConfigManager(config_dir=str(tmp_path))
|
||||
# Should not raise, should return empty or default config
|
||||
config = config_manager.load_config()
|
||||
assert isinstance(config, dict)
|
||||
config_manager = ConfigManager(config_path=str(config_file))
|
||||
with pytest.raises(ConfigError):
|
||||
config_manager.load_config()
|
||||
|
||||
def test_truncated_json(self, tmp_path):
|
||||
"""Config with truncated JSON should be handled gracefully."""
|
||||
"""Config with truncated JSON should raise ConfigError."""
|
||||
config_file = tmp_path / "config.json"
|
||||
config_file.write_text('{"plugin": {"enabled": true') # Missing closing braces
|
||||
|
||||
with patch.object(ConfigManager, '_get_config_path', return_value=str(config_file)):
|
||||
config_manager = ConfigManager(config_dir=str(tmp_path))
|
||||
config = config_manager.load_config()
|
||||
assert isinstance(config, dict)
|
||||
config_manager = ConfigManager(config_path=str(config_file))
|
||||
with pytest.raises(ConfigError):
|
||||
config_manager.load_config()
|
||||
|
||||
def test_empty_config_file(self, tmp_path):
|
||||
"""Empty config file should be handled gracefully."""
|
||||
"""Empty config file should raise ConfigError."""
|
||||
config_file = tmp_path / "config.json"
|
||||
config_file.write_text("")
|
||||
|
||||
with patch.object(ConfigManager, '_get_config_path', return_value=str(config_file)):
|
||||
config_manager = ConfigManager(config_dir=str(tmp_path))
|
||||
config = config_manager.load_config()
|
||||
assert isinstance(config, dict)
|
||||
config_manager = ConfigManager(config_path=str(config_file))
|
||||
with pytest.raises(ConfigError):
|
||||
config_manager.load_config()
|
||||
|
||||
|
||||
class TestTypeValidation:
|
||||
|
||||
Reference in New Issue
Block a user