diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 10:32:28 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-07-24 10:32:28 +0200 |
| commit | c9f3bf46f0de09edb796e35f3dcff349febf75c9 (patch) | |
| tree | c1a0b98b484e4da557c1ab205dfff0d92ce8ac36 /internal/tradlit/parse_test.go | |
| parent | a865374755480a4aef2a6156afccdf08a91422ea (diff) | |
| download | lectio-c9f3bf46f0de09edb796e35f3dcff349febf75c9.tar.gz lectio-c9f3bf46f0de09edb796e35f3dcff349febf75c9.zip | |
dayinfo: show feast/day name + colour (modern niedziela + traditional missalemeum) in cli/tui/web; v0.5.0
Diffstat (limited to 'internal/tradlit/parse_test.go')
| -rw-r--r-- | internal/tradlit/parse_test.go | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/internal/tradlit/parse_test.go b/internal/tradlit/parse_test.go index a7344cd..58cc66f 100644 --- a/internal/tradlit/parse_test.go +++ b/internal/tradlit/parse_test.go @@ -2,7 +2,10 @@ package tradlit import ( "os" + "strings" "testing" + + "github.com/lukaszkasprzak/lectio/internal/liturgy" ) func TestParse(t *testing.T) { @@ -10,7 +13,7 @@ func TestParse(t *testing.T) { if err != nil { t.Fatal(err) } - secs, err := Parse(body) + secs, _, err := Parse(body) if err != nil { t.Fatal(err) } @@ -33,3 +36,51 @@ func TestParse(t *testing.T) { t.Errorf("missing parts: gospel=%v epistle=%v", gospel, epistle) } } + +// TestParseDayInfo checks the traditional (missalemeum) day-info +// extraction against the fixture's "info" object: Name from info.title, +// Season from info.tempora, Colour from info.colors[0] ("w" -> "white"). +func TestParseDayInfo(t *testing.T) { + body, err := os.ReadFile("testdata/2026-07-22.json") + if err != nil { + t.Fatal(err) + } + _, info, err := Parse(body) + if err != nil { + t.Fatal(err) + } + if info.Name != "St. Mary Magdalene" { + t.Errorf("Name = %q, want %q", info.Name, "St. Mary Magdalene") + } + if !strings.Contains(info.Season, "Pentecost") { + t.Errorf("Season = %q, want it to contain %q", info.Season, "Pentecost") + } + if info.Colour != "white" { + t.Errorf("Colour = %q, want %q", info.Colour, "white") + } +} + +// TestParseDayInfoMissingInfo checks that a response with no (or empty) +// info object yields a zero DayInfo rather than an error. +func TestParseDayInfoMissingInfo(t *testing.T) { + _, info, err := Parse([]byte(`[{"sections":[]}]`)) + if err != nil { + t.Fatal(err) + } + if info != (liturgy.DayInfo{}) { + t.Errorf("info = %+v, want zero value for a response with no info object", info) + } +} + +// TestParseDayInfoUnknownColourCode checks an unrecognised colour code maps +// to "" rather than passing the raw code through. +func TestParseDayInfoUnknownColourCode(t *testing.T) { + body := []byte(`[{"info":{"title":"Test","tempora":"","colors":["z"]},"sections":[]}]`) + _, info, err := Parse(body) + if err != nil { + t.Fatal(err) + } + if info.Colour != "" { + t.Errorf("Colour = %q, want empty for unknown code %q", info.Colour, "z") + } +} |
