dc99f1604e
CI / lint-test-build (push) Successful in 54s
- Cleaned up multiline statements and removed unnecessary line breaks in various files. - Ensured consistent formatting in function definitions and calls across the codebase. - Updated docstrings and comments for clarity where applicable. - Removed trailing newlines in module docstrings. - Enhanced logging statements for better clarity in maintenance tasks.
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
"""End-to-end test for configuration management system."""
|
|
|
|
from unittest.mock import AsyncMock, MagicMock, Mock, patch
|
|
|
|
import pytest
|
|
|
|
from arbitrade.config.service import ConfigurationService
|
|
from arbitrade.config.settings import Settings
|
|
from arbitrade.storage.repositories import AuditRepository
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async 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 = AsyncMock(return_value=mock_created_setting)
|
|
mock_repo_instance.get_setting = AsyncMock(return_value=None)
|
|
mock_repo_instance.get_latest_updated_at = AsyncMock(return_value=None)
|
|
mock_repo_instance.list_settings = AsyncMock(return_value=[])
|
|
|
|
# Set a setting
|
|
await 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!")
|