"""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