Files
openserp/google/parse_html_test.go

71 lines
1.4 KiB
Go

package google
import (
"bytes"
"os"
"strings"
"testing"
)
func TestParseHTML(t *testing.T) {
t.Parallel()
data, err := os.ReadFile("testdata/search_results.html")
if err != nil {
t.Fatalf("read fixture: %v", err)
}
results, err := ParseHTML(bytes.NewReader(data))
if err != nil {
t.Fatalf("ParseHTML() error = %v", err)
}
if len(results) == 0 {
t.Fatal("expected at least one result")
}
for i, r := range results {
if r.Rank != i+1 {
t.Fatalf("rank sequence broken at index %d: got %d, want %d", i, r.Rank, i+1)
}
if r.URL == "" {
t.Fatalf("result %d: empty URL", i)
}
if r.Title == "" {
t.Fatalf("result %d: empty Title", i)
}
if !strings.HasPrefix(r.URL, "http") {
t.Fatalf("result %d: URL not absolute: %s", i, r.URL)
}
}
}
func TestParseHTMLEmpty(t *testing.T) {
t.Parallel()
results, err := ParseHTML(bytes.NewReader([]byte("")))
if err != nil {
t.Fatalf("ParseHTML() error = %v", err)
}
if len(results) != 0 {
t.Fatalf("expected zero results for empty HTML, got %d", len(results))
}
}
func TestParseHTMLNoResults(t *testing.T) {
t.Parallel()
data, err := os.ReadFile("testdata/search_no_results.html")
if err != nil {
t.Fatalf("read fixture: %v", err)
}
results, err := ParseHTML(bytes.NewReader(data))
if err != nil {
t.Fatalf("ParseHTML() error = %v", err)
}
if len(results) != 0 {
t.Fatalf("expected zero results, got %d", len(results))
}
}