"""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!")