package aiprompts import ( "regexp" "testing" "github.com/descrybe/descrybe-v2/apps/api/internal/company" ) var languageFmt = regexp.MustCompile(`^[a-z]{2}$`) func TestProductEnhanceUpsertLanguages_neverStar(t *testing.T) { t.Parallel() cases := []struct { name string contentLangs []string primary string want []string }{ { name: "primary_only", contentLangs: nil, primary: "sl", want: []string{"sl"}, }, { name: "primary_plus_content", contentLangs: []string{"sl", "en", "de"}, primary: "sl", want: []string{"sl", "en", "de"}, }, { name: "drops_star_and_invalid", contentLangs: []string{"*", "sl", "xx", "", "EN"}, primary: "*", want: []string{"en", "sl"}, }, { name: "dedupes_primary_in_content", contentLangs: []string{"sl", "sl", "en"}, primary: "sl", want: []string{"sl", "en"}, }, { name: "empty_falls_back_default", contentLangs: []string{"*", ""}, primary: "", want: []string{company.DefaultLanguage}, }, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { t.Parallel() got := productEnhanceUpsertLanguages(tc.contentLangs, tc.primary) if len(got) != len(tc.want) { t.Fatalf("len=%d want %d (%v)", len(got), len(tc.want), got) } for i := range got { if got[i] != tc.want[i] { t.Fatalf("got %v want %v", got, tc.want) } if !languageFmt.MatchString(got[i]) { t.Fatalf("language %q fails ai_prompt_templates_language_fmt", got[i]) } if got[i] == company.LangPromptAny { t.Fatalf("must not upsert LangPromptAny") } } }) } }