summaryrefslogtreecommitdiff
path: root/internal/tradlit/parse_test.go
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 10:32:28 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-24 10:32:28 +0200
commitc9f3bf46f0de09edb796e35f3dcff349febf75c9 (patch)
treec1a0b98b484e4da557c1ab205dfff0d92ce8ac36 /internal/tradlit/parse_test.go
parenta865374755480a4aef2a6156afccdf08a91422ea (diff)
downloadlectio-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.go53
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")
+ }
+}