Files
Jyotisha/tests/test_ephemeris_events.py
T
jesse-ux 25851dd338 feat(qizheng): vendor stem-branch and expose three read-only chart APIs
Add Apache-2.0 @4n6h4x0r/stem-branch 0.8.0, a seven-governors adapter,
and POST /api/qizheng, /api/western, /api/ephemeris_events.

BUG-700 remains blocked (do not call --pillars). BUG-701 and BUG-702 are
resolved. BUG-703 is investigating (panchanga Lahiri). Skill is not bumped.
2026-09-15 16:10:21 +08:00

49 lines
1.8 KiB
Python

"""Module tests for sidereal ingress and station scanning."""
from __future__ import annotations
import json
from pathlib import Path
import pytest
from scripts.ephemeris_events import EphemerisEventsError, build_ephemeris_events
ROOT = Path(__file__).resolve().parents[1]
GOLDEN = ROOT / "tests" / "golden" / "ephemeris_events_raman_20260915_90d.json"
WINDOW = {
"start_date": "2026-09-15",
"end_date": "2026-12-14",
"ayanamsa": "raman",
"node_mode": "mean",
}
def test_raman_90_day_scan_matches_live_golden_and_has_both_kinds() -> None:
result = build_ephemeris_events(WINDOW)
if not GOLDEN.exists():
GOLDEN.write_text(json.dumps(result["events"], ensure_ascii=False, indent=2), encoding="utf-8")
golden = json.loads(GOLDEN.read_text(encoding="utf-8"))
assert result["events"] == golden
assert len(result["events"]) == 14
assert {item["kind"] for item in result["events"]} == {"ingress", "station"}
assert [item["date"] for item in result["events"]] == sorted(item["date"] for item in result["events"])
assert result["calculation"]["ayanamsa"] == "raman"
def test_lahiri_differs_from_raman_on_the_same_window() -> None:
raman = build_ephemeris_events(WINDOW)
lahiri = build_ephemeris_events({**WINDOW, "ayanamsa": "lahiri"})
assert raman["events"] != lahiri["events"]
assert lahiri["calculation"]["ayanamsa"] == "lahiri"
def test_range_over_730_days_is_rejected() -> None:
with pytest.raises(EphemerisEventsError, match="730"):
build_ephemeris_events({"start_date": "2020-01-01", "end_date": "2022-01-02", "ayanamsa": "raman"})
def test_unsupported_ayanamsa_is_rejected() -> None:
with pytest.raises(EphemerisEventsError, match="unsupported ayanamsa"):
build_ephemeris_events({**WINDOW, "ayanamsa": "not-a-real-ayanamsa"})