|
- package onboarding
-
- import (
- "testing"
-
- "qctextbuilder/internal/qcclient"
- )
-
- func TestDetectFieldKind(t *testing.T) {
- tests := []struct {
- name string
- path string
- sample string
- want string
- }{
- {
- name: "exact image token",
- path: "hero.image",
- sample: "#IMAGE#",
- want: "image",
- },
- {
- name: "image placeholder bracketed",
- path: "gallery.galleryImage_m4178_15",
- sample: "[image image image image]",
- want: "image",
- },
- {
- name: "image path hint even with text sample",
- path: "section.thumbnailUrl",
- sample: "headline",
- want: "image",
- },
- {
- name: "empty sample is unknown",
- path: "hero.title",
- sample: "",
- want: "unknown",
- },
- {
- name: "plain text field",
- path: "hero.title",
- sample: "This is a headline",
- want: "text",
- },
- }
-
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got := detectFieldKind(tt.path, tt.sample)
- if got != tt.want {
- t.Fatalf("detectFieldKind() = %q, want %q", got, tt.want)
- }
- })
- }
- }
-
- func TestFlattenDiscovery_DisablesImageLikeFields(t *testing.T) {
- data := qcclient.GenerateContentData{
- "gallery": {
- "galleryImage_m4178_15": "[image image image image]",
- },
- "hero": {
- "title": "Welcome",
- },
- }
-
- fields := flattenDiscovery(99, "manifest-1", data)
- if len(fields) != 2 {
- t.Fatalf("flattenDiscovery() field count = %d, want 2", len(fields))
- }
-
- byPath := map[string]string{}
- enabled := map[string]bool{}
- for _, f := range fields {
- byPath[f.Path] = f.FieldKind
- enabled[f.Path] = f.IsEnabled
- }
-
- imagePath := "gallery.galleryImage_m4178_15"
- if byPath[imagePath] != "image" {
- t.Fatalf("field %s kind = %q, want image", imagePath, byPath[imagePath])
- }
- if enabled[imagePath] {
- t.Fatalf("field %s should be disabled by default", imagePath)
- }
-
- textPath := "hero.title"
- if byPath[textPath] != "text" {
- t.Fatalf("field %s kind = %q, want text", textPath, byPath[textPath])
- }
- if !enabled[textPath] {
- t.Fatalf("field %s should be enabled by default", textPath)
- }
- }
|