aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/merge_test.go
blob: 168c56f15debace5a825ce225aca527c56a53f48 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package calendar

import "testing"

func raw(fields map[string]string) RawCelebration {
	return RawCelebration{Fields: fields, Variants: map[string]map[string]string{}}
}

func TestMergeLayers(t *testing.T) {
	base := Layer{ID: "universal", Cels: map[string]RawCelebration{
		"assumption": raw(map[string]string{"rank": "solemnity", "colour": "white", "name.en": "Assumption"}),
		"st-x":       raw(map[string]string{"rank": "optional", "date": "01-02"}),
		"drop-me":    raw(map[string]string{"rank": "memorial", "date": "03-03"}),
	}}
	local := Layer{ID: "krakow", Cels: map[string]RawCelebration{
		"st-x":    raw(map[string]string{"rank": "feast"}),                      // elevate; keep date
		"drop-me": raw(map[string]string{"suppress": "true"}),                   // remove
		"st-new":  raw(map[string]string{"rank": "solemnity", "date": "05-08"}), // add
	}}
	got := mergeLayers([]Layer{base, local})

	if got["st-x"].Fields["rank"] != "feast" || got["st-x"].Fields["date"] != "01-02" {
		t.Errorf("st-x merge = %+v", got["st-x"].Fields)
	}
	if _, ok := got["drop-me"]; ok {
		t.Error("drop-me should be suppressed")
	}
	if got["st-new"].Fields["date"] != "05-08" {
		t.Error("st-new should be added")
	}
	if got["assumption"].Fields["name.en"] != "Assumption" {
		t.Error("untouched base entry lost")
	}
}