package scraper import "testing" func TestShouldVisit(t *testing.T) { s := New(DefaultConfig()) tests := []struct { name string raw string want bool }{ {name: "valid wiki page", raw: "https://outward.fandom.com/wiki/Alpha", want: true}, {name: "empty url", raw: "", want: false}, {name: "different domain", raw: "https://example.com/wiki/Alpha", want: false}, {name: "non wiki path", raw: "https://outward.fandom.com/about", want: false}, {name: "ignored exact", raw: "https://outward.fandom.com/wiki/Outward_Wiki", want: false}, {name: "ignored prefix", raw: "https://outward.fandom.com/wiki/File:Logo.png", want: false}, {name: "crafting is allowed", raw: "https://outward.fandom.com/wiki/Crafting", want: true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := s.shouldVisit(tt.raw); got != tt.want { t.Fatalf("shouldVisit(%q) = %v, want %v", tt.raw, got, tt.want) } }) } } func TestNormalizeImageURL(t *testing.T) { s := New(DefaultConfig()) got := s.normalizeImageURL("//static.wikia.nocookie.net/outward/images/a/a0/Foo.png/revision/latest/scale-to-width-down/200?cb=1") want := "https://static.wikia.nocookie.net/outward/images/a/a0/Foo.png/revision/latest?cb=1" if got != want { t.Fatalf("normalizeImageURL scaled = %q, want %q", got, want) } if got := s.normalizeImageURL(" "); got != "" { t.Fatalf("normalizeImageURL blank = %q, want empty", got) } } func TestURLAndHeaderHelpers(t *testing.T) { s := New(DefaultConfig()) if got := s.absoluteWikiURL("/wiki/Alpha"); got != "https://outward.fandom.com/wiki/Alpha" { t.Fatalf("absoluteWikiURL wiki path = %q", got) } if got := s.absoluteWikiURL("https://example.com/x"); got != "https://example.com/x" { t.Fatalf("absoluteWikiURL absolute = %q", got) } if got := s.absoluteWikiURL("mailto:test@example.com"); got != "" { t.Fatalf("absoluteWikiURL unsupported = %q, want empty", got) } if got := s.tableHeaderKey(" ", 2); got != "column_3" { t.Fatalf("tableHeaderKey blank = %q, want column_3", got) } }