test: add test for backtest/wallets endpoint

pull/13019/head
Matthias 1 year ago
parent 1f15d28eeb
commit 51cf051fce

@ -7,8 +7,10 @@ import logging
import time
from copy import deepcopy
from datetime import UTC, datetime, timedelta
from io import BytesIO
from pathlib import Path
from unittest.mock import ANY, MagicMock, PropertyMock, patch
from zipfile import ZipFile
import pandas as pd
import pytest
@ -3275,7 +3277,7 @@ def test_api_patch_backtest_history_entry(botclient, tmp_path: Path):
assert fileres[CURRENT_TEST_STRATEGY]["notes"] == "FooBar"
def test_api_patch_backtest_market_change(botclient, tmp_path: Path):
def test_api_backtest_market_change(botclient, tmp_path: Path):
ftbot, client = botclient
# Create a temporary directory and file
@ -3313,6 +3315,55 @@ def test_api_patch_backtest_market_change(botclient, tmp_path: Path):
]
def test_api_backtest_wallets(botclient, tmp_path: Path):
ftbot, client = botclient
# Create a temporary directory and file
bt_results_base = tmp_path / "backtest_results"
bt_results_base.mkdir()
zip_file = bt_results_base / "backtest_15.zip"
with ZipFile(zip_file, "w") as zipf:
wallet_df = pd.DataFrame(
{
"date": [
"2018-01-01T00:00:00Z",
"2018-01-01T00:00:00Z",
"2018-01-01T00:05:00Z",
"2018-01-01T00:05:00Z",
],
"currency": ["ETH", "BTC", "ETH", "BTC"],
"price": [2000, 60_000, 2001, 60_001],
"balance": [0.5, 0.25, 0.5, 0.25],
}
)
wallet_df["date"] = pd.to_datetime(wallet_df["date"])
wallet_buf = BytesIO()
wallet_df.reset_index().to_feather(wallet_buf, compression_level=9, compression="lz4")
wallet_buf.seek(0)
zipf.writestr("backtest_15_SampleStrategy_wallet.feather", wallet_buf.read())
# Wrong basedirectory
rc = client_get(client, f"{BASE_URI}/backtest/history/randomFile.json/SampleStrategy/wallet")
assert_response(rc, 503)
ftbot.config["user_data_dir"] = tmp_path
ftbot.config["runmode"] = RunMode.WEBSERVER
# Nonexisting file
rc = client_get(client, f"{BASE_URI}/backtest/history/randomFile.json/SampleStrategy/wallet")
assert_response(rc, 404)
rc = client_get(client, f"{BASE_URI}/backtest/history/backtest_15/SampleStrategy/wallet")
assert_response(rc, 200)
result = rc.json()
assert result["length"] == 2
assert result["columns"] == ["date", "__date_ts", "total"]
assert result["data"] == [
["2018-01-01T00:00:00Z", 1514764800000, 16000.0],
["2018-01-01T00:05:00Z", 1514765100000, 16000.75],
]
def test_health(botclient):
_ftbot, client = botclient

Loading…
Cancel
Save