60 lines
1.8 KiB
Go
60 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|