25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
# tests/data/test_datawriter.py
|
|
import pandas as pd
|
|
from sanguo_data.config import DataConfig
|
|
from sanguo_data.datawriter import write_daily, atomic_write_parquet
|
|
|
|
def test_atomic_write_parquet(tmp_path):
|
|
f = tmp_path / "2026" / "600000.parquet"
|
|
df = pd.DataFrame({"date": ["2026-01-01"], "open": [10.0]})
|
|
atomic_write_parquet(str(f), df)
|
|
assert f.exists()
|
|
assert not list(tmp_path.glob("*.tmp"))
|
|
|
|
def test_write_daily_writes_parquet_and_db(tmp_path, monkeypatch):
|
|
cfg = DataConfig(
|
|
data_paths={"daily_dir": str(tmp_path / "daily"), "vnpy_db": str(tmp_path / "q.db")},
|
|
data_sources={}, validation={}, performance={},
|
|
)
|
|
df = pd.DataFrame({"date": ["2026-01-01"], "open": [10.0], "high": [10.0],
|
|
"low": [10.0], "close": [10.0], "volume": [100]})
|
|
called = {}
|
|
monkeypatch.setattr("sanguo_data.datawriter._save_to_vnpy_db", lambda bars, cfg: called.setdefault("bars", bars))
|
|
write_daily("600000", df, cfg)
|
|
assert (tmp_path / "daily" / "2026" / "600000.parquet").exists()
|
|
assert len(called["bars"]) == 1
|