52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
import json
|
|
import subprocess
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from scripts.jyotish_api_server import BadRequest, JyotishAPIHandler
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def test_cli_prashna_uses_question_moment_swiss_context_only():
|
|
result = subprocess.run([
|
|
sys.executable, "scripts/jyotish_engine.py", "prashna",
|
|
"--datetime", "2026-07-12T12:00:00+08:00", "--question-text", "Test question",
|
|
"--lat", "39.9042", "--lon", "116.4074", "--timezone", "8",
|
|
], cwd=ROOT, text=True, capture_output=True, timeout=30, check=True)
|
|
payload = json.loads(result.stdout)
|
|
|
|
assert payload["status"] == "computed"
|
|
assert payload["chart_source"] == "swiss_ephemeris_backend"
|
|
assert payload["supporting_indicators"]["gulika"]["status"] == "partial"
|
|
assert payload["supporting_indicators"]["sphuta"]["status"] == "partial"
|
|
assert "Kunda" in payload["blocked_layers"]
|
|
|
|
|
|
def test_cli_prashna_blocks_legacy_approximation_modes():
|
|
result = subprocess.run([
|
|
sys.executable, "scripts/jyotish_engine.py", "prashna",
|
|
"--datetime", "2026-07-12T12:00:00+08:00", "--question-text", "Test question",
|
|
"--lat", "39.9042", "--lon", "116.4074", "--timezone", "8", "--mode", "sphutas",
|
|
], cwd=ROOT, text=True, capture_output=True, timeout=30, check=True)
|
|
payload = json.loads(result.stdout)
|
|
|
|
assert payload["status"] == "blocked"
|
|
assert "sphutas" in payload["reason"]
|
|
|
|
|
|
def test_api_prashna_rejects_client_planets_and_computes_context():
|
|
handler = JyotishAPIHandler.__new__(JyotishAPIHandler)
|
|
body = {
|
|
"question_text": "Test question", "question_timestamp": "2026-07-12T12:00:00+08:00",
|
|
"lat": 39.9042, "lon": 116.4074, "timezone": 8,
|
|
"ayanamsa": "lahiri", "node_mode": "mean", "location_convention": "wgs84",
|
|
}
|
|
result = handler._compute_prashna(body)
|
|
assert result["prashna_context"]["chart_source"] == "swiss_ephemeris_backend"
|
|
with pytest.raises(BadRequest, match="forbidden"):
|
|
handler._compute_prashna({**body, "planets": {"Sun": 0}})
|