Files
arbitrade/tests/unit/test_config_e2e.py
T
2026-06-04 19:53:32 +02:00

57 lines
1.9 KiB
Python

"""End-to-end test for configuration management system."""
from unittest.mock import Mock, patch
from arbitrade.config.service import ConfigurationService
from arbitrade.config.settings import Settings
from arbitrade.storage.db import DuckDBStore
from arbitrade.storage.repositories import AuditRepository
def test_end_to_end_config_workflow():
"""Test complete configuration workflow."""
# Create mocks
settings = Mock(spec=Settings)
store = Mock(spec=DuckDBStore)
audit_repo = Mock(spec=AuditRepository)
# Create service
service = ConfigurationService(settings, store, audit_repo)
# Test initial state
assert service.get_config_version() == 0
assert service.get_last_updated_at() is None
# Test setting a value
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance
# Mock the setting creation
mock_created_setting = Mock()
mock_created_setting.updated_at = "2023-01-01T00:00:00"
mock_repo_instance.create_setting.return_value = mock_created_setting
# Set a setting
service.set_setting("test_key", "test_value", "test_user")
# Verify version incremented
assert service.get_config_version() == 1
# Verify setting was retrieved
result = service.get_setting("test_key", "default")
assert result == "test_value"
# Verify hot-reload detection works
mock_repo_instance.get_latest_updated_at.return_value = "2023-01-01T00:00:00"
assert service.is_config_outdated() is True
# Verify reload works
assert service.reload_if_changed() is True
assert service.get_config_version() == 2
if __name__ == "__main__":
test_end_to_end_config_workflow()
print("End-to-end test passed!")