43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock, patch
|
|
from src.database import TradeRepository
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_repo():
|
|
with patch("src.database.Client") as mock_client_cls:
|
|
mock_client = MagicMock()
|
|
mock_client_cls.return_value = mock_client
|
|
repo = TradeRepository(token="secret_test", database_id="db_test")
|
|
repo.client = mock_client
|
|
yield repo
|
|
|
|
|
|
def test_save_trade(mock_repo):
|
|
mock_repo.client.pages.create.return_value = {
|
|
"id": "abc123",
|
|
"properties": {},
|
|
}
|
|
result = mock_repo.save_trade(
|
|
symbol="XRPUSDT",
|
|
side="LONG",
|
|
entry_price=0.5,
|
|
quantity=400.0,
|
|
leverage=10,
|
|
signal_data={"rsi": 32, "macd_hist": 0.001},
|
|
)
|
|
assert result["id"] == "abc123"
|
|
|
|
|
|
def test_close_trade(mock_repo):
|
|
mock_repo.client.pages.update.return_value = {
|
|
"id": "abc123",
|
|
"properties": {
|
|
"Status": {"select": {"name": "CLOSED"}},
|
|
},
|
|
}
|
|
result = mock_repo.close_trade(
|
|
trade_id="abc123", exit_price=0.55, pnl=20.0
|
|
)
|
|
assert result["id"] == "abc123"
|