summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-02 15:54:55 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-02 15:54:55 +0900
commitbf4afbc0a3cc4e847ef01840365fd6a6ae9c142f (patch)
treec8634b3b21534f550e2d255d98c4a068a1b567d0 /tests
parentec8b6fea5a4a710df4b2ae18f3f399d165c8ffd4 (diff)
style: auto-fix lint violations from enhanced ruff rules
Diffstat (limited to 'tests')
-rw-r--r--tests/edge_cases/test_empty_data.py5
-rw-r--r--tests/edge_cases/test_extreme_values.py13
-rw-r--r--tests/edge_cases/test_strategy_reset.py29
-rw-r--r--tests/edge_cases/test_zero_volume.py11
-rw-r--r--tests/integration/test_backtest_end_to_end.py7
-rw-r--r--tests/integration/test_order_execution_flow.py5
-rw-r--r--tests/integration/test_portfolio_tracking_flow.py3
-rw-r--r--tests/integration/test_strategy_signal_flow.py11
8 files changed, 46 insertions, 38 deletions
diff --git a/tests/edge_cases/test_empty_data.py b/tests/edge_cases/test_empty_data.py
index bfefc95..876a640 100644
--- a/tests/edge_cases/test_empty_data.py
+++ b/tests/edge_cases/test_empty_data.py
@@ -12,13 +12,14 @@ sys.path.insert(
0, str(Path(__file__).resolve().parents[2] / "services" / "portfolio-manager" / "src")
)
-from shared.models import Signal, OrderSide
from backtester.engine import BacktestEngine
from backtester.metrics import compute_detailed_metrics
-from portfolio_manager.portfolio import PortfolioTracker
from order_executor.risk_manager import RiskManager
+from portfolio_manager.portfolio import PortfolioTracker
from strategies.rsi_strategy import RsiStrategy
+from shared.models import OrderSide, Signal
+
class TestBacktestEngineEmptyCandles:
"""BacktestEngine.run([]) should return valid result with 0 trades."""
diff --git a/tests/edge_cases/test_extreme_values.py b/tests/edge_cases/test_extreme_values.py
index b375d5e..8ec3b77 100644
--- a/tests/edge_cases/test_extreme_values.py
+++ b/tests/edge_cases/test_extreme_values.py
@@ -1,7 +1,7 @@
"""Tests for extreme value edge cases."""
import sys
-from datetime import datetime, timezone
+from datetime import UTC, datetime
from decimal import Decimal
from pathlib import Path
@@ -9,19 +9,20 @@ sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "strat
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "backtester" / "src"))
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "order-executor" / "src"))
-from shared.models import Candle, Signal, OrderSide
-from strategies.rsi_strategy import RsiStrategy
-from strategies.vwap_strategy import VwapStrategy
-from strategies.bollinger_strategy import BollingerStrategy
from backtester.engine import BacktestEngine
from backtester.simulator import OrderSimulator
from order_executor.risk_manager import RiskManager
+from strategies.bollinger_strategy import BollingerStrategy
+from strategies.rsi_strategy import RsiStrategy
+from strategies.vwap_strategy import VwapStrategy
+
+from shared.models import Candle, OrderSide, Signal
def _candle(close: str, volume: str = "1000", idx: int = 0) -> Candle:
from datetime import timedelta
- base = datetime(2025, 1, 1, tzinfo=timezone.utc)
+ base = datetime(2025, 1, 1, tzinfo=UTC)
return Candle(
symbol="AAPL",
timeframe="1h",
diff --git a/tests/edge_cases/test_strategy_reset.py b/tests/edge_cases/test_strategy_reset.py
index 6e9b956..13ed4da 100644
--- a/tests/edge_cases/test_strategy_reset.py
+++ b/tests/edge_cases/test_strategy_reset.py
@@ -1,21 +1,22 @@
"""Tests that strategy reset() properly clears internal state."""
import sys
-from datetime import datetime, timezone
+from datetime import UTC, datetime
from decimal import Decimal
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "strategy-engine"))
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "backtester" / "src"))
-from shared.models import Candle
-from strategies.rsi_strategy import RsiStrategy
-from strategies.grid_strategy import GridStrategy
-from strategies.macd_strategy import MacdStrategy
from strategies.bollinger_strategy import BollingerStrategy
from strategies.ema_crossover_strategy import EmaCrossoverStrategy
-from strategies.vwap_strategy import VwapStrategy
+from strategies.grid_strategy import GridStrategy
+from strategies.macd_strategy import MacdStrategy
+from strategies.rsi_strategy import RsiStrategy
from strategies.volume_profile_strategy import VolumeProfileStrategy
+from strategies.vwap_strategy import VwapStrategy
+
+from shared.models import Candle
def _make_candles(count: int, base_price: float = 100.0) -> list[Candle]:
@@ -28,7 +29,7 @@ def _make_candles(count: int, base_price: float = 100.0) -> list[Candle]:
Candle(
symbol="AAPL",
timeframe="1h",
- open_time=datetime(2025, 1, 1, i % 24, tzinfo=timezone.utc),
+ open_time=datetime(2025, 1, 1, i % 24, tzinfo=UTC),
open=Decimal(str(price)),
high=Decimal(str(price + 1)),
low=Decimal(str(price - 1)),
@@ -57,7 +58,7 @@ class TestRsiReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -71,7 +72,7 @@ class TestGridReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -84,7 +85,7 @@ class TestMacdReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -97,7 +98,7 @@ class TestBollingerReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -110,7 +111,7 @@ class TestEmaCrossoverReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -123,7 +124,7 @@ class TestVwapReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
@@ -136,6 +137,6 @@ class TestVolumeProfileReset:
strategy.reset()
signals2 = _collect_signals(strategy, candles)
assert len(signals1) == len(signals2)
- for s1, s2 in zip(signals1, signals2):
+ for s1, s2 in zip(signals1, signals2, strict=True):
assert s1.side == s2.side
assert s1.price == s2.price
diff --git a/tests/edge_cases/test_zero_volume.py b/tests/edge_cases/test_zero_volume.py
index ba2c133..df247cc 100644
--- a/tests/edge_cases/test_zero_volume.py
+++ b/tests/edge_cases/test_zero_volume.py
@@ -1,21 +1,22 @@
"""Tests for strategies handling zero-volume candles gracefully."""
import sys
-from datetime import datetime, timezone
+from datetime import UTC, datetime
from decimal import Decimal
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "strategy-engine"))
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "backtester" / "src"))
-from shared.models import Candle
-from strategies.vwap_strategy import VwapStrategy
-from strategies.volume_profile_strategy import VolumeProfileStrategy
from strategies.rsi_strategy import RsiStrategy
+from strategies.volume_profile_strategy import VolumeProfileStrategy
+from strategies.vwap_strategy import VwapStrategy
+
+from shared.models import Candle
def _candle(close: str, volume: str = "0", idx: int = 0) -> Candle:
- base = datetime(2025, 1, 1, tzinfo=timezone.utc)
+ base = datetime(2025, 1, 1, tzinfo=UTC)
from datetime import timedelta
return Candle(
diff --git a/tests/integration/test_backtest_end_to_end.py b/tests/integration/test_backtest_end_to_end.py
index 4cc0b12..fbc0a24 100644
--- a/tests/integration/test_backtest_end_to_end.py
+++ b/tests/integration/test_backtest_end_to_end.py
@@ -9,19 +9,20 @@ sys.path.insert(
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "strategy-engine"))
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "backtester" / "src"))
+from datetime import UTC, datetime, timedelta
from decimal import Decimal
-from datetime import datetime, timedelta, timezone
-from shared.models import Candle
from backtester.engine import BacktestEngine
+from shared.models import Candle
+
def _generate_candles(prices: list[float], symbol="AAPL") -> list[Candle]:
return [
Candle(
symbol=symbol,
timeframe="1h",
- open_time=datetime(2025, 1, 1, tzinfo=timezone.utc) + timedelta(hours=i),
+ open_time=datetime(2025, 1, 1, tzinfo=UTC) + timedelta(hours=i),
open=Decimal(str(p)),
high=Decimal(str(p + 100)),
low=Decimal(str(p - 100)),
diff --git a/tests/integration/test_order_execution_flow.py b/tests/integration/test_order_execution_flow.py
index dcbc498..2beb388 100644
--- a/tests/integration/test_order_execution_flow.py
+++ b/tests/integration/test_order_execution_flow.py
@@ -5,14 +5,15 @@ from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "order-executor" / "src"))
-import pytest
from decimal import Decimal
from unittest.mock import AsyncMock
-from shared.models import Signal, OrderSide, OrderStatus
+import pytest
from order_executor.executor import OrderExecutor
from order_executor.risk_manager import RiskManager
+from shared.models import OrderSide, OrderStatus, Signal
+
@pytest.mark.asyncio
async def test_signal_to_order_flow():
diff --git a/tests/integration/test_portfolio_tracking_flow.py b/tests/integration/test_portfolio_tracking_flow.py
index b20275a..d91a265 100644
--- a/tests/integration/test_portfolio_tracking_flow.py
+++ b/tests/integration/test_portfolio_tracking_flow.py
@@ -9,9 +9,10 @@ sys.path.insert(
from decimal import Decimal
-from shared.models import Order, OrderSide, OrderType, OrderStatus
from portfolio_manager.portfolio import PortfolioTracker
+from shared.models import Order, OrderSide, OrderStatus, OrderType
+
def test_portfolio_tracks_buy_sell_cycle():
"""Buy then sell should update position and reset on full sell."""
diff --git a/tests/integration/test_strategy_signal_flow.py b/tests/integration/test_strategy_signal_flow.py
index 6b048fb..3f7ec35 100644
--- a/tests/integration/test_strategy_signal_flow.py
+++ b/tests/integration/test_strategy_signal_flow.py
@@ -8,15 +8,16 @@ sys.path.insert(
)
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "strategy-engine"))
-import pytest
+from datetime import UTC, datetime
from decimal import Decimal
-from datetime import datetime, timezone
from unittest.mock import AsyncMock
-from shared.models import Candle
-from shared.events import CandleEvent
+import pytest
from strategy_engine.engine import StrategyEngine
+from shared.events import CandleEvent
+from shared.models import Candle
+
@pytest.fixture
def candles():
@@ -28,7 +29,7 @@ def candles():
Candle(
symbol="AAPL",
timeframe="1m",
- open_time=datetime(2025, 1, 1, i, 0, tzinfo=timezone.utc),
+ open_time=datetime(2025, 1, 1, i, 0, tzinfo=UTC),
open=price,
high=price + 1,
low=price - 1,