package processing import ( "testing" ) func TestEnrichMapped_gtinFromEANAndTitleFromName(t *testing.T) { got := EnrichMapped(map[string]any{ "EAN": "3830085913912", "name": "Bosch Fridge", }) if got["gtin"] != "3830085913912" { t.Fatalf("gtin=%v", got["gtin"]) } if got["title"] != "Bosch Fridge" { t.Fatalf("title=%v", got["title"]) } } func TestEnrichMapped_dropsZeroDimensions(t *testing.T) { got := EnrichMapped(map[string]any{ "netWidth": "0", "netHeight": "0.0", "netDepth": 0, "width": "595", "title": "X", }) if _, ok := got["netWidth"]; ok { t.Fatalf("netWidth should be dropped: %#v", got) } if _, ok := got["netHeight"]; ok { t.Fatalf("netHeight should be dropped") } if _, ok := got["netDepth"]; ok { t.Fatalf("netDepth should be dropped") } if got["width"] != "595" { t.Fatalf("width kept=%v", got["width"]) } } func TestEnrichMapped_parseNetMass(t *testing.T) { got := EnrichMapped(map[string]any{"netMass": "12,5 kg"}) if got["net_mass"] != 12.5 { t.Fatalf("net_mass=%v", got["net_mass"]) } if got["net_mass_unit"] != "kg" { t.Fatalf("unit=%v", got["net_mass_unit"]) } if got["weight"] != "12.5 kg" { t.Fatalf("weight=%v", got["weight"]) } } func TestEnrichMapped_stockStatusToAvailability(t *testing.T) { cases := map[string]string{ "In Stock": AvailabilityInStock, "na zalogi": AvailabilityInStock, "Out of stock": AvailabilityOutOfStock, "pre-order": AvailabilityPreorder, "backorder": AvailabilityBackorder, "limited": AvailabilityLimited, } for in, want := range cases { got := EnrichMapped(map[string]any{"stockStatus": in}) if got["availability"] != want { t.Fatalf("%q -> %v want %s", in, got["availability"], want) } } } func TestEnrichMapped_stripEmptyCDATAAndHTML(t *testing.T) { got := EnrichMapped(map[string]any{ "specifications": "", "description": "


", "notes": "Real specs

]]>", "EPRELID": "", "mainImage": " ", }) if _, ok := got["specifications"]; ok { t.Fatalf("empty CDATA specs should be removed") } if _, ok := got["description"]; ok { t.Fatalf("empty HTML description should be removed") } if _, ok := got["EPRELID"]; ok { t.Fatalf("empty EPRELID should not be invented/kept") } if _, ok := got["mainImage"]; ok { t.Fatalf("blank mainImage should be removed") } if got["notes"] == "" { t.Fatalf("non-empty CDATA HTML should remain") } } func TestEnrichMapped_preservesRawInput(t *testing.T) { src := map[string]any{"netWidth": "0", "EAN": "1"} _ = EnrichMapped(src) if src["netWidth"] != "0" { t.Fatalf("source mutated: %#v", src) } } func TestMapStockStatus_unknown(t *testing.T) { if MapStockStatus("maybe later") != "" { t.Fatal("expected empty for unknown") } }