59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
"""End-to-end test for configuration management system."""
|
|
|
|
from unittest.mock import MagicMock, Mock, patch
|
|
|
|
from arbitrade.config.service import ConfigurationService
|
|
from arbitrade.config.settings import Settings
|
|
from arbitrade.storage.repositories import AuditRepository
|
|
|
|
|
|
def test_end_to_end_config_workflow():
|
|
"""Test complete configuration workflow."""
|
|
# Create mocks
|
|
settings = Mock(spec=Settings)
|
|
cursor = Mock()
|
|
cursor.fetchone.return_value = None
|
|
cursor.fetchall.return_value = []
|
|
cursor.execute.return_value = cursor
|
|
cntx = MagicMock()
|
|
cntx.__enter__.return_value = cursor
|
|
store = Mock()
|
|
store.connect.return_value = cntx
|
|
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.storage.repositories.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
|
|
mock_repo_instance.get_setting.return_value = None
|
|
mock_repo_instance.get_latest_updated_at.return_value = None
|
|
mock_repo_instance.list_settings.return_value = []
|
|
|
|
# Set a setting
|
|
service.set_setting("test_key", "test_value", "test_user")
|
|
|
|
# Verify setting was retrieved
|
|
result = service.get_setting("test_key", "default")
|
|
assert result == "test_value"
|
|
|
|
# Verify version incremented
|
|
assert service.get_config_version() == 1
|
|
assert service.get_last_updated_at() is not None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_end_to_end_config_workflow()
|
|
print("End-to-end test passed!")
|