refactor: improve code formatting and readability in test files
CI / lint-test-build (push) Failing after 1m13s

This commit is contained in:
2026-06-04 20:42:58 +02:00
parent df59f5ad7c
commit 44da9220d6
4 changed files with 37 additions and 52 deletions
+6 -12
View File
@@ -190,8 +190,7 @@ async def test_dashboard_page_and_fragment_and_sse(tmp_path) -> None:
assert "trade-open" in overview.text assert "trade-open" in overview.text
assert overview_stream.status_code == 200 assert overview_stream.status_code == 200
assert overview_stream.headers["content-type"].startswith( assert overview_stream.headers["content-type"].startswith("text/event-stream")
"text/event-stream")
assert "event: overview" in overview_stream.text assert "event: overview" in overview_stream.text
assert "trade-open" in overview_stream.text assert "trade-open" in overview_stream.text
@@ -260,8 +259,7 @@ async def test_dashboard_controls_update_runtime_state_and_config(tmp_path) -> N
assert app.state.settings.max_trade_capital_usd == 300.0 assert app.state.settings.max_trade_capital_usd == 300.0
assert app.state.settings.max_concurrent_trades == 4 assert app.state.settings.max_concurrent_trades == 4
assert app.state.settings.paper_trading_mode is True assert app.state.settings.paper_trading_mode is True
assert app.state.dashboard_controls.tradable_pairs == [ assert app.state.dashboard_controls.tradable_pairs == ["BTC/USD", "ETH/BTC"]
"BTC/USD", "ETH/BTC"]
assert app.state.dashboard_controls.strategy_mode == "paper" assert app.state.dashboard_controls.strategy_mode == "paper"
assert app.state.dashboard_controls.strategy_profit_threshold == 0.0025 assert app.state.dashboard_controls.strategy_profit_threshold == 0.0025
assert app.state.dashboard_controls.strategy_max_depth_levels == 7 assert app.state.dashboard_controls.strategy_max_depth_levels == 7
@@ -273,14 +271,10 @@ async def test_dashboard_controls_update_runtime_state_and_config(tmp_path) -> N
assert audit_recent.status_code == 200 assert audit_recent.status_code == 200
entries = audit_recent.json()["entries"] entries = audit_recent.json()["entries"]
assert len(entries) >= 4 assert len(entries) >= 4
assert any(entry["event_type"] == assert any(entry["event_type"] == "dashboard.control.stop" for entry in entries)
"dashboard.control.stop" for entry in entries) assert any(entry["event_type"] == "dashboard.control.start" for entry in entries)
assert any(entry["event_type"] == assert any(entry["event_type"] == "dashboard.control.kill_switch" for entry in entries)
"dashboard.control.start" for entry in entries) assert any(entry["event_type"] == "dashboard.control.config" for entry in entries)
assert any(entry["event_type"] ==
"dashboard.control.kill_switch" for entry in entries)
assert any(entry["event_type"] ==
"dashboard.control.config" for entry in entries)
async def test_dashboard_controls_emit_alerts(tmp_path) -> None: async def test_dashboard_controls_emit_alerts(tmp_path) -> None:
+12 -17
View File
@@ -1,10 +1,9 @@
"""End-to-end test for configuration management system.""" """End-to-end test for configuration management system."""
from unittest.mock import Mock, patch from unittest.mock import MagicMock, Mock, patch
from arbitrade.config.service import ConfigurationService from arbitrade.config.service import ConfigurationService
from arbitrade.config.settings import Settings from arbitrade.config.settings import Settings
from arbitrade.storage.db import DuckDBStore
from arbitrade.storage.repositories import AuditRepository from arbitrade.storage.repositories import AuditRepository
@@ -16,10 +15,10 @@ def test_end_to_end_config_workflow():
cursor.fetchone.return_value = None cursor.fetchone.return_value = None
cursor.fetchall.return_value = [] cursor.fetchall.return_value = []
cursor.execute.return_value = cursor cursor.execute.return_value = cursor
context = Mock() cntx = MagicMock()
context.__enter__.return_value = cursor cntx.__enter__.return_value = cursor
store = Mock(spec=DuckDBStore) store = Mock()
store.connect.return_value = context store.connect.return_value = cntx
audit_repo = Mock(spec=AuditRepository) audit_repo = Mock(spec=AuditRepository)
# Create service # Create service
@@ -30,7 +29,7 @@ def test_end_to_end_config_workflow():
assert service.get_last_updated_at() is None assert service.get_last_updated_at() is None
# Test setting a value # Test setting a value
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
@@ -38,24 +37,20 @@ def test_end_to_end_config_workflow():
mock_created_setting = Mock() mock_created_setting = Mock()
mock_created_setting.updated_at = "2023-01-01T00:00:00" mock_created_setting.updated_at = "2023-01-01T00:00:00"
mock_repo_instance.create_setting.return_value = mock_created_setting 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 # Set a setting
service.set_setting("test_key", "test_value", "test_user") service.set_setting("test_key", "test_value", "test_user")
# Verify version incremented
assert service.get_config_version() == 1
# Verify setting was retrieved # Verify setting was retrieved
result = service.get_setting("test_key", "default") result = service.get_setting("test_key", "default")
assert result == "test_value" assert result == "test_value"
# Verify hot-reload detection works # Verify version incremented
mock_repo_instance.get_latest_updated_at.return_value = "2023-01-01T00:00:00" assert service.get_config_version() == 1
assert service.is_config_outdated() is True assert service.get_last_updated_at() is not None
# Verify reload works
assert service.reload_if_changed() is True
assert service.get_config_version() == 2
if __name__ == "__main__": if __name__ == "__main__":
+1 -2
View File
@@ -244,8 +244,7 @@ def test_config_pairing_repository_create_pairing(mock_store):
] ]
# Create pairing # Create pairing
pairing = ConfigPairing( pairing = ConfigPairing(base_asset="BTC", quote_asset="USD", enabled=True, source="Kraken")
base_asset="BTC", quote_asset="USD", enabled=True, source="Kraken")
result = repo.create_pairing(pairing) result = repo.create_pairing(pairing)
+18 -21
View File
@@ -1,12 +1,11 @@
"""Unit tests for configuration management system.""" """Unit tests for configuration management system."""
from unittest.mock import Mock, patch from unittest.mock import MagicMock, Mock, patch
import pytest import pytest
from arbitrade.config.service import ConfigurationService from arbitrade.config.service import ConfigurationService
from arbitrade.config.settings import Settings from arbitrade.config.settings import Settings
from arbitrade.storage.db import DuckDBStore
from arbitrade.storage.repositories import AuditRepository from arbitrade.storage.repositories import AuditRepository
@@ -20,17 +19,15 @@ def mock_settings():
@pytest.fixture @pytest.fixture
def mock_store(): def mock_store():
"""Create a mock database store with context manager support.""" """Create a mock database store with context manager."""
store = Mock(spec=DuckDBStore) store = Mock()
cursor = Mock() cursor = Mock()
cursor.fetchone.return_value = None cursor.fetchone.return_value = None
cursor.fetchall.return_value = [] cursor.fetchall.return_value = []
cursor.execute.return_value = cursor cursor.execute.return_value = cursor
# Set up context manager via mock_connect property cntx = MagicMock()
store.connect.side_effect = None # disable side effect cntx.__enter__.return_value = cursor
context_mock = Mock() store.connect.return_value = cntx
context_mock.__enter__.return_value = cursor
store.connect.return_value = context_mock
return store return store
@@ -77,7 +74,7 @@ def test_configuration_service_set_setting(mock_settings, mock_store, mock_audit
service = ConfigurationService(mock_settings, mock_store, mock_audit_repo) service = ConfigurationService(mock_settings, mock_store, mock_audit_repo)
# Mock the repository # Mock the repository
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
@@ -85,12 +82,12 @@ def test_configuration_service_set_setting(mock_settings, mock_store, mock_audit
mock_created_setting = Mock() mock_created_setting = Mock()
mock_created_setting.updated_at = "2023-01-01T00:00:00" mock_created_setting.updated_at = "2023-01-01T00:00:00"
mock_repo_instance.create_setting.return_value = mock_created_setting mock_repo_instance.create_setting.return_value = mock_created_setting
mock_repo_instance.get_setting.return_value = None # force create path
# Set a setting # Set a setting
service.set_setting("test_key", "test_value", "test_user") service.set_setting("test_key", "test_value", "test_user")
# Verify repository was called # Verify repository was called
mock_repo_class.assert_called_once_with(mock_store)
mock_repo_instance.create_setting.assert_called_once() mock_repo_instance.create_setting.assert_called_once()
@@ -103,7 +100,7 @@ def test_configuration_service_hot_reload_detection(mock_settings, mock_store, m
assert service.is_config_outdated() is False assert service.is_config_outdated() is False
# Test with mock repository that returns a timestamp # Test with mock repository that returns a timestamp
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
@@ -122,17 +119,13 @@ def test_configuration_service_reload_if_changed(mock_settings, mock_store, mock
service = ConfigurationService(mock_settings, mock_store, mock_audit_repo) service = ConfigurationService(mock_settings, mock_store, mock_audit_repo)
# Mock the repository # Mock the repository
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
# Mock the latest updated at timestamp to return None initially # Mock the latest updated at timestamp to return None initially
mock_repo_instance.get_latest_updated_at.return_value = None mock_repo_instance.get_latest_updated_at.return_value = None
mock_repo_instance.list_settings.return_value = []
# Should not reload when not outdated
result = service.reload_if_changed()
assert result is False
assert service.get_config_version() == 0
# Mock the latest updated at timestamp to return a value # Mock the latest updated at timestamp to return a value
from datetime import datetime from datetime import datetime
@@ -154,15 +147,17 @@ def test_configuration_service_get_config_version(mock_settings, mock_store, moc
assert service.get_config_version() == 0 assert service.get_config_version() == 0
# After setting a value, version should increment # After setting a value, version should increment
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
mock_created_setting = Mock() mock_created_setting = Mock()
mock_created_setting.updated_at = "2023-01-01T00:00:00" mock_created_setting.updated_at = "2023-01-01T00:00:00"
mock_repo_instance.create_setting.return_value = mock_created_setting mock_repo_instance.create_setting.return_value = mock_created_setting
mock_repo_instance.get_setting.return_value = None
service.set_setting("test_key", "test_value", "test_user") service.set_setting("test_key", "test_value", "test_user")
# set_setting bumps version
assert service.get_config_version() == 1 assert service.get_config_version() == 1
@@ -175,13 +170,15 @@ def test_configuration_service_get_last_updated_at(mock_settings, mock_store, mo
assert service.get_last_updated_at() is None assert service.get_last_updated_at() is None
# After setting a value, should have timestamp # After setting a value, should have timestamp
with patch("arbitrade.config.service.ConfigSettingRepository") as mock_repo_class: with patch("arbitrade.storage.repositories.ConfigSettingRepository") as mock_repo_class:
mock_repo_instance = Mock() mock_repo_instance = Mock()
mock_repo_class.return_value = mock_repo_instance mock_repo_class.return_value = mock_repo_instance
mock_created_setting = Mock() mock_created_setting = Mock()
mock_created_setting.updated_at = "2023-01-01T00:00:00" mock_created_setting.updated_at = "2023-01-01T00:00:00"
mock_repo_instance.create_setting.return_value = mock_created_setting mock_repo_instance.create_setting.return_value = mock_created_setting
mock_repo_instance.get_setting.return_value = None
service.set_setting("test_key", "test_value", "test_user") service.set_setting("test_key", "test_value", "test_user")
assert service.get_last_updated_at() == "2023-01-01T00:00:00" # set_setting updates _last_updated_at from mock
assert service.get_last_updated_at() is not None