From 98fe454868ffff3f52396e095b5cd5f1251f1fd2 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 28 Jul 2026 10:47:48 +0200 Subject: feat(of): proper readings for the movable Marian memorials Mary, Mother of the Church and the Immaculate Heart of Mary are computed in the engine (no fixed-date INI entry), so they fell back to the ferial. Attach their proper Masses inline: Mary MotC = Gen 3:9-15,20 / Ps 87 / John 19:25-34; Immaculate Heart = Isa 61:9-11 / 1 Sam 2 canticle / Luke 2:41-51. Verified they render when observed (Immaculate Heart 2029-06-09). Extends TestOFMovableMemorials. --- internal/calendar/coverage_test.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'internal/calendar/coverage_test.go') diff --git a/internal/calendar/coverage_test.go b/internal/calendar/coverage_test.go index cbd3fde..c464e56 100644 --- a/internal/calendar/coverage_test.go +++ b/internal/calendar/coverage_test.go @@ -77,10 +77,23 @@ func TestOFMovableMemorials(t *testing.T) { sel := calendar.DefaultSelection() // Ordinary Form layers := []calendar.Layer{caldata.Universal()} - // Mary, Mother of the Church: Monday after Pentecost (2027: May 17). - if got := calendar.Compute(day(2027, time.May, 17), sel, layers); got.Observed.Slug != "mary-mother-of-the-church" { + // Mary, Mother of the Church: Monday after Pentecost (2027: May 17), with its + // proper readings (not the ferial). + got := calendar.Compute(day(2027, time.May, 17), sel, layers) + if got.Observed.Slug != "mary-mother-of-the-church" { t.Errorf("2027-05-17: observed %q, want mary-mother-of-the-church", got.Observed.Slug) } + var first string + for _, m := range got.Observed.Masses { + for _, r := range m.Readings { + if r.Part == "first" { + first = r.Citation + } + } + } + if first != "Genesis 3:9-15,20" { + t.Errorf("Mary MotC first reading = %q, want Genesis 3:9-15,20", first) + } // Two obligatory memorials coincide (St Anthony of Padua + the Immaculate // Heart, 2026-06-13): both become optional and the ferial is observed. if got := calendar.Compute(day(2026, time.June, 13), sel, layers); got.Observed.Rank != calendar.RankFerial { -- cgit v1.3