RAPTOR v18.4: Исправлена отчетность, активированы выходные
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# pylint: disable=redefined-outer-name,unused-variable
|
||||
import datetime
|
||||
import os
|
||||
import tempfile
|
||||
from datetime import timedelta
|
||||
from pathlib import Path
|
||||
from typing import Dict, Iterable
|
||||
|
||||
import pytest
|
||||
|
||||
from t_tech.invest import CandleInterval
|
||||
from t_tech.invest.caching.market_data_cache.cache import MarketDataCache
|
||||
from t_tech.invest.caching.market_data_cache.cache_settings import (
|
||||
MarketDataCacheSettings,
|
||||
)
|
||||
from t_tech.invest.sandbox.client import SandboxClient
|
||||
from t_tech.invest.utils import now
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def sandbox_service():
|
||||
with SandboxClient(token=os.environ["INVEST_SANDBOX_TOKEN"]) as client:
|
||||
yield client
|
||||
|
||||
|
||||
PROGRAMMERS_DAY = datetime.datetime(
|
||||
2023, 1, 1, tzinfo=datetime.timezone.utc
|
||||
) + timedelta(days=255)
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
os.environ.get("INVEST_SANDBOX_TOKEN") is None,
|
||||
reason="INVEST_SANDBOX_TOKEN should be specified",
|
||||
)
|
||||
@pytest.mark.skip("todo fix")
|
||||
class TestSandboxCachedLoad:
|
||||
@pytest.mark.parametrize(
|
||||
"calls_kwargs",
|
||||
[
|
||||
({"from_": now() - timedelta(days=8)},),
|
||||
(
|
||||
{
|
||||
"from_": datetime.datetime(
|
||||
2023, 9, 1, 0, 0, tzinfo=datetime.timezone.utc
|
||||
),
|
||||
"to": datetime.datetime(
|
||||
2023, 9, 5, 0, 0, tzinfo=datetime.timezone.utc
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"from_": now() - timedelta(days=6),
|
||||
},
|
||||
{
|
||||
"from_": now() - timedelta(days=10),
|
||||
"to": now() - timedelta(days=7),
|
||||
},
|
||||
{
|
||||
"from_": now() - timedelta(days=11),
|
||||
"to": now() - timedelta(days=5),
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=5),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=4),
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=3),
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=6),
|
||||
"to": PROGRAMMERS_DAY,
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=5),
|
||||
"to": PROGRAMMERS_DAY,
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=4),
|
||||
"to": PROGRAMMERS_DAY,
|
||||
},
|
||||
{
|
||||
"from_": PROGRAMMERS_DAY - timedelta(days=3),
|
||||
"to": PROGRAMMERS_DAY,
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_same_from_net_and_cache(
|
||||
self, sandbox_service, calls_kwargs: Iterable[Dict[str, datetime.datetime]]
|
||||
):
|
||||
settings = MarketDataCacheSettings(base_cache_dir=Path(tempfile.gettempdir()))
|
||||
market_data_cache = MarketDataCache(settings=settings, services=sandbox_service)
|
||||
figi = "BBG004730N88"
|
||||
for date_range_kwargs in calls_kwargs:
|
||||
call_kwargs = dict(
|
||||
figi=figi,
|
||||
interval=CandleInterval.CANDLE_INTERVAL_DAY,
|
||||
**date_range_kwargs,
|
||||
)
|
||||
|
||||
candles_from_cache = list(market_data_cache.get_all_candles(**call_kwargs))
|
||||
candles_from_net = list(sandbox_service.get_all_candles(**call_kwargs))
|
||||
assert candles_from_cache
|
||||
assert candles_from_net
|
||||
assert candles_from_cache == candles_from_net, (
|
||||
candles_from_cache,
|
||||
candles_from_net,
|
||||
)
|
||||
Reference in New Issue
Block a user