package eprel import "testing" func TestExtractFromAttrs_flatKeys(t *testing.T) { got := ExtractFromAttrs(map[string]any{ "eprel_id": "1632113", "eprel_label": "https://eprel.ec.europa.eu/api/product/1632113/labels?format=png", "eprel_pdf_url": "https://eprel.ec.europa.eu/fiches/x.pdf", "eprel_energy_class": "A", "brand": "Samsung", }) m, ok := got.(map[string]any) if !ok { t.Fatalf("type=%T", got) } if m["id"] != "1632113" || m["label"] == nil || m["pdf"] == nil || m["energy_class"] != "A" { t.Fatalf("got=%v", m) } if _, leak := m["eprel_id"]; leak { t.Fatalf("alias leaked: %v", m) } } func TestExtractFromAttrs_nestedAliasesNormalized(t *testing.T) { got := ExtractFromAttrs(map[string]any{ "eprel": map[string]any{ "eprel_id": "2208111", "eprel_label": "https://eprel.ec.europa.eu/api/product/2208111/labels?format=png", "eprel_pdf": "https://eprel.ec.europa.eu/fiches/y.pdf", "eprel_energy_class": "E", "source": "eprel_api", }, }) m, ok := got.(map[string]any) if !ok { t.Fatalf("type=%T", got) } if m["id"] != "2208111" { t.Fatalf("id=%v", m["id"]) } if m["label"] == nil || m["pdf"] == nil { t.Fatalf("missing label/pdf: %v", m) } if m["energy_class"] != "E" { t.Fatalf("energy_class=%v", m["energy_class"]) } if _, ok := m["eprel_id"]; ok { t.Fatalf("eprel_id alias must be folded: %v", m) } if _, ok := m["source"]; ok { t.Fatalf("non-canonical keys must be dropped: %v", m) } } func TestExtractFromAttrs_nestedPartialFilledFromFlat(t *testing.T) { got := ExtractFromAttrs(map[string]any{ "eprel": map[string]any{ "id": "1632113", "label": "https://eprel.ec.europa.eu/api/product/1632113/labels?format=png", }, "eprel_pdf": "https://eprel.ec.europa.eu/fiches/z.pdf", "eprel_energy_class": "A", }) m, ok := got.(map[string]any) if !ok { t.Fatalf("type=%T", got) } if m["id"] != "1632113" || m["pdf"] == nil || m["energy_class"] != "A" { t.Fatalf("got=%v", m) } } func TestNormalizeShape_empty(t *testing.T) { if NormalizeShape(nil) != nil { t.Fatal("nil") } if NormalizeShape(map[string]any{}) != nil { t.Fatal("empty") } if NormalizeShape(map[string]any{"eprel_id": ""}) != nil { t.Fatal("blank") } }