This commit is contained in:
2026-08-16 17:16:47 +02:00
parent 532d439c41
commit d161b28a10
5 changed files with 170 additions and 21 deletions
+56 -1
View File
@@ -29,7 +29,8 @@ func TestCategoryUniqueIDFromAny(t *testing.T) {
{map[string]any{"category_unique_id": 48}, "48"},
{map[string]any{"#text": "120"}, "120"},
{[]any{map[string]any{"unique_id": "7"}}, "7"},
{map[string]any{"name": "OnlyName"}, ""},
// Nested name-only is a candidate token (resolved to unique_id later).
{map[string]any{"name": "OnlyName"}, "OnlyName"},
}
for i, tc := range cases {
if got := categoryUniqueIDFromAny(tc.in); got != tc.want {
@@ -139,6 +140,60 @@ func TestFilterCategoryIfInvalid(t *testing.T) {
}
}
func TestCoerceCategoryToCompanyUniqueID_nameToUID(t *testing.T) {
t.Parallel()
names := map[string]string{"50": "Štedilniki", "28": "TV mounts"}
valid := map[string]struct{}{"50": {}, "28": {}}
out := StepResult{Category: "Štedilniki"}
coerceCategoryToCompanyUniqueID(&out, names, valid)
if out.Category != "50" {
t.Fatalf("name coerce: Category=%q want 50", out.Category)
}
filterCategoryIfInvalid(&out, valid)
if out.Category != "50" {
t.Fatalf("after filter: Category=%q want 50", out.Category)
}
// Case-insensitive name match.
out = StepResult{Category: "tv mounts"}
coerceCategoryToCompanyUniqueID(&out, names, valid)
if out.Category != "28" {
t.Fatalf("case-insensitive coerce: Category=%q want 28", out.Category)
}
// Already a unique_id — unchanged.
out = StepResult{Category: "50"}
coerceCategoryToCompanyUniqueID(&out, names, valid)
if out.Category != "50" {
t.Fatalf("uid passthrough: Category=%q", out.Category)
}
// Unknown token — left for filter to clear.
out = StepResult{Category: "not-a-category"}
coerceCategoryToCompanyUniqueID(&out, names, valid)
if out.Category != "not-a-category" {
t.Fatalf("unknown should stay until filter: %q", out.Category)
}
filterCategoryIfInvalid(&out, valid)
if out.Category != "" {
t.Fatalf("unknown should clear: %q", out.Category)
}
}
func TestCategoryUniqueIDFromAny_nestedNameOnly(t *testing.T) {
t.Parallel()
got := categoryUniqueIDFromAny(map[string]any{"name": "Štedilniki"})
if got != "Štedilniki" {
t.Fatalf("got %q want Štedilniki", got)
}
// unique_id still wins over name.
got = categoryUniqueIDFromAny(map[string]any{"unique_id": "50", "name": "Štedilniki"})
if got != "50" {
t.Fatalf("got %q want 50", got)
}
}
func TestLoadV1ProcessJobItems_resolvesCategoryName(t *testing.T) {
dsn := os.Getenv("DATABASE_URL")
if dsn == "" {