from datetime import datetime from hub_volume_rank_lib import ( cache_needs_refresh, format_volume_quote, merge_exchange_rank, rank_date_label, ) def test_rank_date_label_after_reset(): # 2026-06-08 09:00 北京时间 → 昨日交易日 2026-06-07 dt = datetime(2026, 6, 8, 9, 0, 0) assert rank_date_label(now=dt, reset_hour=8) == "2026-06-07" def test_rank_date_label_before_reset(): # 2026-06-08 07:00 → 当前交易日仍算 2026-06-07,昨日为 2026-06-06 dt = datetime(2026, 6, 8, 7, 0, 0) assert rank_date_label(now=dt, reset_hour=8) == "2026-06-06" def test_format_volume_quote(): assert format_volume_quote(1_500_000_000) == "1.50B" assert format_volume_quote(2_300_000) == "2.30M" assert format_volume_quote(4500) == "4.50K" def test_cache_needs_refresh_and_merge(): cache = {"rank_date": "2026-06-05", "exchanges": {}} assert cache_needs_refresh(cache, expected_rank_date="2026-06-07") is True merged = merge_exchange_rank( cache, "binance", { "ok": True, "rank_date": "2026-06-07", "items": [{"rank": 1, "symbol": "BTC/USDT", "volume_quote": 1.0}], "total_symbols": 100, }, ) assert merged["exchanges"]["binance"]["items"][0]["symbol"] == "BTC/USDT" assert merged["rank_date"] == "2026-06-07"