summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:13:00 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2026-04-01 17:13:00 +0900
commita6bf0057d32df7ed0a1d6ec6d19daf74a0de5c0f (patch)
treeb1a080386dcb106fb5404e0100ab5a0e8703e8d0 /tests
parent66368d580cf569b50a33e438f2287a977e6fc704 (diff)
feat: medium priority improvements
- Add 30 edge case tests (zero volume, empty data, extreme values, strategy reset, notifier failures) - Fix VWAP division by zero on zero-price candles - Add DB transaction rollback on errors + transaction() context manager - Add parameter validation to all 7 strategies with 41 validation tests - Fix lint issues across test files
Diffstat (limited to 'tests')
-rw-r--r--tests/edge_cases/test_empty_data.py10
-rw-r--r--tests/edge_cases/test_extreme_values.py1
-rw-r--r--tests/edge_cases/test_notifier_failures.py1
-rw-r--r--tests/edge_cases/test_zero_volume.py1
4 files changed, 8 insertions, 5 deletions
diff --git a/tests/edge_cases/test_empty_data.py b/tests/edge_cases/test_empty_data.py
index 2449b90..ebd8467 100644
--- a/tests/edge_cases/test_empty_data.py
+++ b/tests/edge_cases/test_empty_data.py
@@ -1,18 +1,20 @@
"""Tests for empty/zero data edge cases."""
import sys
-from datetime import datetime, timezone, timedelta
+from datetime import timedelta
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"))
sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "order-executor" / "src"))
-sys.path.insert(0, str(Path(__file__).resolve().parents[2] / "services" / "portfolio-manager" / "src"))
+sys.path.insert(
+ 0, str(Path(__file__).resolve().parents[2] / "services" / "portfolio-manager" / "src")
+)
-from shared.models import Candle, Signal, OrderSide, Position
+from shared.models import Signal, OrderSide
from backtester.engine import BacktestEngine
-from backtester.metrics import TradeRecord, compute_detailed_metrics
+from backtester.metrics import compute_detailed_metrics
from portfolio_manager.portfolio import PortfolioTracker
from order_executor.risk_manager import RiskManager
from strategies.rsi_strategy import RsiStrategy
diff --git a/tests/edge_cases/test_extreme_values.py b/tests/edge_cases/test_extreme_values.py
index fe9dc1a..e5bfb1a 100644
--- a/tests/edge_cases/test_extreme_values.py
+++ b/tests/edge_cases/test_extreme_values.py
@@ -20,6 +20,7 @@ from order_executor.risk_manager import RiskManager
def _candle(close: str, volume: str = "1000", idx: int = 0) -> Candle:
from datetime import timedelta
+
base = datetime(2025, 1, 1, tzinfo=timezone.utc)
return Candle(
symbol="BTCUSDT",
diff --git a/tests/edge_cases/test_notifier_failures.py b/tests/edge_cases/test_notifier_failures.py
index 4ba781f..ad33368 100644
--- a/tests/edge_cases/test_notifier_failures.py
+++ b/tests/edge_cases/test_notifier_failures.py
@@ -1,6 +1,5 @@
"""Tests for TelegramNotifier failure modes."""
-import asyncio
import logging
import sys
from pathlib import Path
diff --git a/tests/edge_cases/test_zero_volume.py b/tests/edge_cases/test_zero_volume.py
index 0aefa07..71a1d71 100644
--- a/tests/edge_cases/test_zero_volume.py
+++ b/tests/edge_cases/test_zero_volume.py
@@ -17,6 +17,7 @@ from strategies.rsi_strategy import RsiStrategy
def _candle(close: str, volume: str = "0", idx: int = 0) -> Candle:
base = datetime(2025, 1, 1, tzinfo=timezone.utc)
from datetime import timedelta
+
return Candle(
symbol="BTCUSDT",
timeframe="1h",