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