Files
arbitrade/tests/unit/test_config_e2e.py
T

58 lines
1.9 KiB
Python

"""End-to-end test for configuration management system."""
import pytest
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!")