package web import ( "os" "path/filepath" "strings" "testing" "github.com/lukaszkasprzak/lectio/internal/liturgy" ) func TestRenderReadings(t *testing.T) { secs := []liturgy.Section{{Heading: "Ewangelia (J 20, 1. 11-18)", PartID: "ewangelia"}} html := string(RenderReadings(secs, []string{"wuj"}, "new")) if !strings.Contains(html, "Ewangelia") || !strings.Contains(html, "class=") { t.Errorf("reading pane missing heading/classes: %q", html[:min(200, len(html))]) } } func TestBuiltinThemes(t *testing.T) { t.Setenv("XDG_CONFIG_HOME", t.TempDir()) // no user themes for _, name := range []string{ "transfiguration", "desert_fathers", "benedictines", "franciscans", "memento_mori", "camedules", "advent", "nativity", "lent", "easter", "pentecost", "ordinary", } { if b, err := themeCSS(name); err != nil || len(b) == 0 { t.Errorf("built-in theme %s not embedded: %v", name, err) } } } func TestUserTheme(t *testing.T) { dir := t.TempDir() t.Setenv("XDG_CONFIG_HOME", dir) td := filepath.Join(dir, "lectio", "themes") os.MkdirAll(td, 0o755) os.WriteFile(filepath.Join(td, "mine.css"), []byte(".heading{color:#f00}"), 0o644) found := false for _, n := range Themes() { if n == "mine" { found = true } } if !found { t.Error("user theme 'mine' not listed by Themes()") } if b, err := themeCSS("mine"); err != nil || len(b) == 0 { t.Errorf("user theme not read: %v", err) } }