Files
siloqy/prod/tests/test_pink_hazelcast_feed.py

54 lines
1.6 KiB
Python
Raw Normal View History

from __future__ import annotations
import asyncio
import json
from datetime import datetime
import pytest
from prod.clean_arch.adapters.hazelcast_feed import HazelcastDataFeed
class _FakeMap:
def __init__(self, payload: str) -> None:
self.payload = payload
def get(self, key: str):
if key == "latest_eigen_scan":
return self.payload
return None
def size(self) -> int:
return 1
def test_single_result_scan_schema_is_accepted() -> None:
payload = json.dumps(
{
"scan_number": 2576,
"timestamp": 1779805956.9522693,
"target_asset": "BTCUSDT",
"result": {
"asset": "BTCUSDT",
"price": 77599.64,
"eigenvalue_tracking": {"lambda_max": 24.6, "lambda_max_velocity": -0.0053},
"multi_window_results": {
"50": {"tracking_data": {"lambda_max_velocity": -0.19346329413310556}},
"750": {"tracking_data": {"lambda_max_velocity": -0.0001833266579540457}},
},
"confidence": 0.79,
},
}
)
feed = HazelcastDataFeed({"hazelcast": {"cluster": "dolphin", "host": "localhost:5701"}})
feed.features_map = _FakeMap(payload)
snapshot = asyncio.run(feed.get_latest_snapshot("BTCUSDT"))
assert snapshot is not None
assert snapshot.symbol == "BTCUSDT"
assert snapshot.price == 77599.64
assert snapshot.velocity_divergence == pytest.approx(-0.19327996747515153)
assert snapshot.irp_alignment == 0.79
assert snapshot.scan_number == 2576