"""Integracja: pełny horoskop (pozycje + osie + domy) przez silnik (LOG-01+LOG-05). Waliduje względem astro.com dla horoskopu referencyjnego. """ from app.engine.chart import build_chart def test_chart_angles_match_reference(own_engine, reference_moment): chart = build_chart(own_engine, reference_moment, "whole_sign") assert chart["angles"]["Asc"]["sign"] == "Cancer" assert chart["angles"]["MC"]["sign"] == "Pisces" def test_chart_house_assignments_match_reference(own_engine, reference_moment): chart = build_chart(own_engine, reference_moment, "whole_sign") by = {p["name"]: p for p in chart["positions"]} expected = {"Sun": 11, "Moon": 11, "Mercury": 10, "Venus": 10, "Mars": 5, "Jupiter": 7, "Saturn": 5, "Uranus": 6, "Neptune": 7, "Pluto": 5} for name, house in expected.items(): assert by[name]["house"] == house, f"{name}: dom {by[name]['house']} != {house}" def test_house_systems_available(own_engine, reference_moment): for system in ("whole_sign", "equal", "porphyry"): chart = build_chart(own_engine, reference_moment, system) assert chart["house_system"] == system assert len(chart["cusps"]) == 12