72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
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")
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|