fix(domy): przepnij build_chart na cusps_for — inaczej nowe systemy dają 500
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m30s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m28s
Testy / Testy warstwy bazodanowej (ochrona baz) (push) Successful in 9m28s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 20s
Testy / Kontrola składni wszystkich warstw (push) Successful in 9s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m30s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m28s
Testy / Testy warstwy bazodanowej (ochrona baz) (push) Successful in 9m28s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 20s
Testy / Kontrola składni wszystkich warstw (push) Successful in 9s
Rozszerzenie houses.SYSTEMS do ośmiu pozycji odblokowało w chart.py filtr `house_system in H.SYSTEMS`, ale liczenie zostało na H.cusps(), które zna wyłącznie trzy systemy dzielące ekliptykę i dla pozostałych rzuca ValueError. Wybranie campanusa przechodziło więc walidację i dopiero potem wywalało 500. Test parametryzowany po H.SYSTEMS zamyka tę klasę błędu na przyszłość: każdy system ogłoszony na liście musi przejść przez build_chart, więc dopisanie nazwy bez przepięcia liczenia od razu zapali się na czerwono. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
|
||||
Waliduje względem astro.com dla horoskopu referencyjnego.
|
||||
"""
|
||||
import pytest
|
||||
|
||||
from app.engine import houses as H
|
||||
from app.engine.chart import build_chart
|
||||
|
||||
|
||||
@@ -66,3 +69,24 @@ def test_unknown_extra_system_is_ignored(own_engine, reference_moment):
|
||||
chart = build_chart(own_engine, reference_moment, "whole_sign",
|
||||
house_systems=["placidus", "equal"])
|
||||
assert [h["system"] for h in chart["house_systems"]] == ["whole_sign", "equal"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("system", H.SYSTEMS)
|
||||
def test_every_advertised_system_builds_a_chart(own_engine, reference_moment, system):
|
||||
"""Każdy system z houses.SYSTEMS musi przejść przez build_chart. Pilnuje,
|
||||
żeby rozszerzenie SYSTEMS bez przepięcia chart.py nie dało 500 przy wyborze
|
||||
systemu, który jest na liście, ale nie w użytej funkcji."""
|
||||
chart = build_chart(own_engine, reference_moment, system)
|
||||
assert chart["house_system"] == system
|
||||
assert len(chart["cusps"]) == 12
|
||||
assert all(1 <= p["house"] <= 12 for p in chart["positions"])
|
||||
|
||||
|
||||
def test_multiple_systems_side_by_side_cover_all(own_engine, reference_moment):
|
||||
chart = build_chart(own_engine, reference_moment, H.WHOLE_SIGN,
|
||||
house_systems=list(H.SYSTEMS))
|
||||
blocks = chart["house_systems"]
|
||||
assert blocks[0]["system"] == H.WHOLE_SIGN # prymarny zawsze pierwszy
|
||||
assert {b["system"] for b in blocks} == set(H.SYSTEMS)
|
||||
for p in chart["positions"]:
|
||||
assert set(p["houses"]) == set(H.SYSTEMS)
|
||||
|
||||
Reference in New Issue
Block a user