package notariusref import ( "strings" "testing" ) func TestNormalizeSelectorAcceptsDocumentedForms(t *testing.T) { tests := []struct { name string value string want string }{ {name: "pipeline", value: "party", want: "party"}, {name: "chunk", value: "chunk.party", want: "chunk.party"}, {name: "lane", value: "npc-registry.party", want: "npc-registry.party"}, {name: "extract", value: "npc-registry.extract.party", want: "npc-registry.extract.party"}, {name: "merge", value: "npc-registry.merge.party", want: "npc-registry.merge.party"}, {name: "normalize", value: "npc-registry.normalize.party", want: "npc-registry.normalize.party"}, {name: "whitespace", value: " npc-registry . extract . party ", want: "npc-registry.extract.party"}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { got, err := NormalizeSelector(test.value) if err != nil { t.Fatalf("NormalizeSelector(%q) error = %v", test.value, err) } if got != test.want { t.Fatalf("NormalizeSelector(%q) = %q, want %q", test.value, got, test.want) } }) } } func TestNormalizeSelectorRejectsInvalidForms(t *testing.T) { tests := []struct { name string value string wantErr string }{ {name: "empty", value: "", wantErr: "required"}, {name: "whitespace", value: " ", wantErr: "required"}, {name: "empty first", value: ".party", wantErr: "components"}, {name: "empty middle", value: "lane..party", wantErr: "components"}, {name: "empty final", value: "lane.", wantErr: "components"}, {name: "equals", value: "party=/tmp/party.yml", wantErr: "must not contain"}, {name: "invalid stage", value: "lane.chunk.party", wantErr: "extract, merge, or normalize"}, {name: "too many components", value: "lane.extract.party.extra", wantErr: "must use"}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { _, err := NormalizeSelector(test.value) if err == nil || !strings.Contains(err.Error(), test.wantErr) { t.Fatalf("NormalizeSelector(%q) error = %v, want containing %q", test.value, err, test.wantErr) } }) } }