package breeds import ( "strings" "testing" ) func TestCatalogAndPinyin(t *testing.T) { rows, err := Defaults() if err != nil { t.Fatal(err) } if len(rows) != 350 { t.Fatalf("catalog count %d", len(rows)) } names, sources := map[string]bool{}, map[string]bool{} for _, row := range rows { if names[row.Name] || row.SourceKey == nil || sources[*row.SourceKey] || row.Pinyin == "" || row.Initial == "" { t.Fatalf("invalid catalog row: %s", row.Name) } names[row.Name] = true sources[*row.SourceKey] = true } for name, want := range map[string]string{"柯基": "K", "重庆犬": "C", "长毛吉娃娃": "C", "中华田园犬": "Z", "Border Collie": "B"} { full, short, initial := SortFields(name) if initial != want || full == "" || short == "" { t.Fatalf("%s: %s/%s/%s", name, full, short, initial) } } } func TestOfficialSources(t *testing.T) { rows, err := Enrichments() if err != nil { t.Fatal(err) } counts := map[string]int{} for _, row := range rows { seen := map[string]bool{} for _, ref := range row.References { if seen[ref.Provider] || len(ref.Facts) == 0 || ref.URL == "" || ref.RetrievedAt == "" { t.Fatalf("invalid reference for %s", row.Name) } seen[ref.Provider] = true counts[ref.Provider]++ if ref.Provider == "fci" && "cku:"+ref.ExternalID != strings.TrimRight(row.SourceKey, "ABCDEFGHIJKLMNOPQRSTUVWXYZ") { t.Fatalf("wrong FCI mapping %s/%s", row.SourceKey, ref.ExternalID) } } for key, provider := range row.FieldSources { if provider != "editorial" && !seen[provider] { t.Fatalf("%s %s has missing source %s", row.Name, key, provider) } } } if len(rows) != 350 || counts["fci"] != 347 || counts["akc"] < 160 || counts["rkc"] != 8 { t.Fatalf("incomplete import: %v", counts) } }