# 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