From a83fa251a0401c9cf2ddb1eca0edb461f511a9e4 Mon Sep 17 00:00:00 2001 From: Daniel Legt Date: Mon, 16 Mar 2026 23:28:25 +0200 Subject: [PATCH] Implemented basic test functionality --- internal/scraper/parse_test.go | 63 ++++++++++++++++++++++++++++++++++ test.sh | 4 +++ 2 files changed, 67 insertions(+) create mode 100644 internal/scraper/parse_test.go create mode 100755 test.sh diff --git a/internal/scraper/parse_test.go b/internal/scraper/parse_test.go new file mode 100644 index 0000000..4247175 --- /dev/null +++ b/internal/scraper/parse_test.go @@ -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) + } +} diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..1fe1766 --- /dev/null +++ b/test.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail + +go test ./...