stock-data-api / tests /test_serialization.py
fromozuzhouzzz
fix(api): encoding, financial history, fund-flow & report resilience
c20d7c0
Raw
History Blame Contribute Delete
1.57 kB
"""Tests for serialization utilities."""
import pandas as pd
from app.utils.serialization import _normalize_text, dataframe_to_records, to_jsonable
def test_normalize_text_passthrough_ascii():
assert _normalize_text("hello") == "hello"
def test_normalize_text_chinese_preserved():
assert _normalize_text("主力净流入") == "主力净流入"
def test_normalize_text_bytes_utf8():
result = _normalize_text(b"test")
assert result == "test"
def test_normalize_text_bytes_garbled():
# Garbled bytes should be normalized without raising
result = _normalize_text(b"\xc0\xaf\xc0\xfa")
assert isinstance(result, str)
assert len(result) > 0
def test_to_jsonable_dict_chinese_keys():
data = {"主力净流入": 100, "涨跌幅": -2.5}
result = to_jsonable(data)
assert "主力净流入" in result
assert "涨跌幅" in result
assert result["主力净流入"] == 100
def test_to_jsonable_dict_bytes_keys():
data = {b"key1": "value1"}
result = to_jsonable(data)
assert "key1" in result
assert result["key1"] == "value1"
def test_dataframe_to_records_chinese_columns():
df = pd.DataFrame({"日期": ["2024-01-01"], "收盘价": [10.5], "涨跌幅": [2.1]})
records = dataframe_to_records(df)
assert len(records) == 1
assert "日期" in records[0]
assert "收盘价" in records[0]
assert "涨跌幅" in records[0]
def test_dataframe_to_records_limit():
df = pd.DataFrame({"a": range(100)})
records = dataframe_to_records(df, limit=10)
assert len(records) == 10