package caldata import ( "os" "path/filepath" "testing" ) func TestStack(t *testing.T) { dir := t.TempDir() os.WriteFile(filepath.Join(dir, "poland.ini"), []byte("[layer]\nid = poland\ntype = national\n\n[our-lady-czestochowa]\ndate = 08-26\nrank = solemnity\nclass = bvm\ncolour = white\nname.pl = NMP Częstochowskiej\n"), 0o644) os.WriteFile(filepath.Join(dir, "krakow.ini"), []byte("[layer]\nid = krakow\ntype = diocesan\n\n[st-stanislaus]\ndate = 05-08\nrank = solemnity\nclass = saint\ncolour = red\nname.pl = Św. Stanisława\n"), 0o644) layers, errs := Stack(dir, []string{"poland", "krakow"}) if len(errs) != 0 { t.Fatalf("unexpected errors: %v", errs) } if len(layers) != 3 { t.Fatalf("want 3 layers (universal+2), got %d", len(layers)) } if layers[0].Type != "universal" || layers[1].ID != "poland" || layers[2].ID != "krakow" { t.Errorf("order wrong: %q %q %q", layers[0].Type, layers[1].ID, layers[2].ID) } if _, ok := layers[1].Cels["our-lady-czestochowa"]; !ok { t.Error("poland layer missing its celebration") } } func TestStackMissingLayerSkips(t *testing.T) { dir := t.TempDir() os.WriteFile(filepath.Join(dir, "good.ini"), []byte("[layer]\nid = good\n\n[x]\ndate = 01-02\nrank = memorial\nname.en = X\n"), 0o644) layers, errs := Stack(dir, []string{"good", "missing"}) if len(errs) != 1 { t.Fatalf("want 1 error for the missing layer, got %v", errs) } if len(layers) != 2 { // universal + good; missing skipped t.Fatalf("want 2 layers, got %d", len(layers)) } } func TestLoadLayerDefaultsIDToStem(t *testing.T) { dir := t.TempDir() // no id in the [layer] header -> defaults to the stem os.WriteFile(filepath.Join(dir, "myparish.ini"), []byte("[layer]\ntype = particular\n\n[dedication]\ndate = 06-15\nrank = solemnity\nname.en = Dedication\n"), 0o644) l, err := LoadLayer(filepath.Join(dir, "myparish.ini"), "myparish") if err != nil { t.Fatal(err) } if l.ID != "myparish" { t.Errorf("ID = %q, want myparish (from stem)", l.ID) } }