Files
jardin/calendrier_lunaire/test_lunar_calendar.py
2026-02-22 15:05:40 +01:00

66 lines
2.4 KiB
Python

from datetime import date
import pytest
from lunar_calendar import DayInfo, build_calendar
def test_build_calendar_rejects_invalid_range() -> None:
with pytest.raises(ValueError):
build_calendar(date(2026, 1, 10), date(2026, 1, 1))
def test_build_calendar_returns_expected_day_count() -> None:
rows = build_calendar(date(2026, 1, 1), date(2026, 1, 3))
assert len(rows) == 3
assert rows[0].date == "2026-01-01"
assert rows[-1].date == "2026-01-03"
def test_dayinfo_fields_are_well_typed() -> None:
row = build_calendar(date(2026, 1, 1), date(2026, 1, 1))[0]
assert isinstance(row, DayInfo)
assert isinstance(row.date, str)
assert isinstance(row.phase, str)
assert isinstance(row.illumination, float)
assert isinstance(row.croissante_decroissante, str)
assert isinstance(row.montante_descendante, str)
assert isinstance(row.signe, str)
assert isinstance(row.type_jour, str)
assert isinstance(row.soleil_lever, str)
assert isinstance(row.soleil_coucher, str)
assert isinstance(row.duree_jour, str)
assert isinstance(row.lune_lever, str)
assert isinstance(row.lune_coucher, str)
assert isinstance(row.duree_presence_lune, str)
assert isinstance(row.saint_du_jour, str)
assert isinstance(row.saint_de_glace, bool)
assert isinstance(row.perigee, bool)
assert isinstance(row.apogee, bool)
assert isinstance(row.noeud_lunaire, bool)
assert isinstance(row.transitions_type_jour, list)
assert isinstance(row.transitions_montante_descendante, list)
def test_saints_de_glace_are_exposed() -> None:
rows = build_calendar(date(2026, 5, 11), date(2026, 5, 13))
assert rows[0].saint_du_jour == "Saint Mamert"
assert rows[1].saint_du_jour == "Saint Pancrace"
assert rows[2].saint_du_jour == "Saint Servais"
assert all(r.saint_de_glace for r in rows)
def test_rise_set_fields_are_present() -> None:
row = build_calendar(date(2026, 2, 22), date(2026, 2, 22))[0]
assert row.soleil_lever != ""
assert row.soleil_coucher != ""
assert row.duree_jour != ""
assert row.lune_lever != ""
assert row.lune_coucher != ""
def test_transition_items_have_expected_shape() -> None:
row = build_calendar(date(2026, 2, 22), date(2026, 2, 22))[0]
for item in row.transitions_type_jour + row.transitions_montante_descendante:
assert set(item.keys()) == {"heure", "avant", "apres"}