Implemented basic test functionality #1
63
internal/scraper/parse_test.go
Normal file
63
internal/scraper/parse_test.go
Normal file
@@ -0,0 +1,63 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user