This commit is contained in:
2026-08-16 23:42:00 +02:00
parent 6e77154228
commit 92f046b542
32 changed files with 1443 additions and 105 deletions
@@ -15,11 +15,17 @@ func TestResolveProductPromptTemplates_categoryOverridesUser(t *testing.T) {
EnhanceUserTemplate: "company user",
CategoryEnhancePrompt: "category user {{description}}",
})
if sys != "sys {{brand_voice}}" {
t.Fatalf("system=%q", sys)
if !strings.Contains(sys, "sys {{brand_voice}}") {
t.Fatalf("system=%q want company system kept", sys)
}
if !strings.HasPrefix(user, "category user {{description}}") {
t.Fatalf("user=%q want category override prefix", user)
if !strings.Contains(sys, `apply it to "name", "description", and "attrs"`) {
t.Fatalf("system=%q want category title+description+attrs overlay", sys)
}
if !strings.Contains(user, "category user {{description}}") {
t.Fatalf("user=%q want category override text", user)
}
if !strings.Contains(user, "applies to name, description, and attrs") {
t.Fatalf("user=%q want title+description+attrs framing", user)
}
if !strings.Contains(user, "{{attrs}}") {
t.Fatalf("user=%q want injected {{attrs}}", user)
@@ -34,8 +40,68 @@ func TestResolveProductPromptTemplates_categoryWithAttrsUnchanged(t *testing.T)
_, user := resolveProductPromptTemplates(ProductInput{
CategoryEnhancePrompt: "Write copy.\nAttrs: {{attrs}}\nName: {{name}}",
})
if user != "Write copy.\nAttrs: {{attrs}}\nName: {{name}}" {
t.Fatalf("user=%q want unchanged when attrs present", user)
if !strings.Contains(user, "Write copy.\nAttrs: {{attrs}}\nName: {{name}}") {
t.Fatalf("user=%q want category text preserved when attrs present", user)
}
if !strings.Contains(user, "applies to name, description, and attrs") {
t.Fatalf("user=%q want title framing on free-form overlay", user)
}
}
func TestResolveProductPromptTemplates_categoryCanonicalSkipsFrame(t *testing.T) {
t.Parallel()
_, user := resolveProductPromptTemplates(ProductInput{
CategoryEnhancePrompt: aiprompts.CategoryEnhanceUserTemplate,
})
if strings.Count(user, "applies to name, description, and attrs") != 0 ||
strings.Count(user, "applies to name and description") != 0 {
t.Fatalf("canonical template must not get double framing: %q", user)
}
if !strings.Contains(user, "Title formula") || !strings.Contains(user, `"name"`) {
t.Fatalf("canonical template should retain name guidance: %q", user)
}
}
func TestResolveProductPromptTemplates_categoryWithTitleFormula(t *testing.T) {
t.Parallel()
title := map[string]any{
"separator": " ",
"elements": []any{
map[string]any{"type": "variable", "value": "brand"},
map[string]any{"type": "variable", "value": "product_model"},
},
}
desc := map[string]any{
"sections": []any{
map[string]any{"type": "p", "instructions": "Factual summary"},
},
}
sys, user := resolveProductPromptTemplates(ProductInput{
EnhanceSystemTemplate: "Retail copywriter.\n- name: short retail title\n- description: 1-2 sentences",
CategoryEnhancePrompt: "Emphasize energy class and Slovenian retail tone.",
TitleTemplate: title,
DescriptionTemplate: desc,
})
if !strings.Contains(user, "Emphasize energy class") {
t.Fatalf("missing category prompt: %s", user)
}
if !strings.Contains(user, "applies to name, description, and attrs") {
t.Fatalf("missing category title framing: %s", user)
}
if !strings.Contains(user, "Title formula") || !strings.Contains(user, "attr [brand]") {
t.Fatalf("missing title formula: %s", user)
}
if !strings.Contains(user, "Description formula") || !strings.Contains(user, "- p: Factual summary") {
t.Fatalf("missing description formula: %s", user)
}
if !strings.Contains(sys, `When the user message includes a "Title formula"`) {
t.Fatalf("missing title system override: %s", sys)
}
if !strings.Contains(sys, "Description formula") {
t.Fatalf("missing description system override: %s", sys)
}
if !strings.Contains(sys, `apply it to "name", "description", and "attrs"`) {
t.Fatalf("missing category system overlay: %s", sys)
}
}