mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 13:02:59 +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:
@@ -29,7 +29,13 @@ def mock_config_manager():
|
||||
}
|
||||
mock.get_config_path.return_value = 'config/config.json'
|
||||
mock.get_secrets_path.return_value = 'config/config_secrets.json'
|
||||
mock.get_raw_file_content.return_value = {'weather': {'api_key': 'test'}}
|
||||
mock_config = {
|
||||
'display': {'brightness': 50},
|
||||
'plugins': {},
|
||||
'timezone': 'UTC'
|
||||
}
|
||||
mock.load_config.return_value = mock_config
|
||||
mock.get_raw_file_content.return_value = mock_config
|
||||
mock.save_config_atomic.return_value = MagicMock(
|
||||
status=MagicMock(value='success'),
|
||||
message=None
|
||||
@@ -385,17 +391,21 @@ class TestPluginsAPI:
|
||||
|
||||
def test_get_plugin_config(self, client, mock_config_manager):
|
||||
"""Test getting plugin configuration."""
|
||||
# Plugin configs live at top-level keys (not under 'plugins')
|
||||
mock_config_manager.load_config.return_value = {
|
||||
'plugins': {
|
||||
'weather': {
|
||||
'enabled': True,
|
||||
'api_key': 'test_key'
|
||||
}
|
||||
'weather': {
|
||||
'enabled': True,
|
||||
'api_key': 'test_key'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Ensure schema manager returns serializable values
|
||||
from web_interface.blueprints.api_v3 import api_v3
|
||||
api_v3.schema_manager.generate_default_config.return_value = {'enabled': False}
|
||||
api_v3.schema_manager.merge_with_defaults.side_effect = lambda config, defaults: {**defaults, **config}
|
||||
|
||||
response = client.get('/api/v3/plugins/config?plugin_id=weather')
|
||||
|
||||
|
||||
assert response.status_code == 200
|
||||
data = json.loads(response.data)
|
||||
assert 'enabled' in data or 'config' in data or 'data' in data
|
||||
|
||||
Reference in New Issue
Block a user