Files
mmaschedule/scrapers_test.go
T
2025-02-16 15:07:59 -06:00

130 lines
3.2 KiB
Go

package main
import (
"bytes"
_ "embed"
"fmt"
"testing"
"github.com/PuerkitoBio/goquery"
)
//go:embed testdata/ufc-event-list.html
var UFCEventList []byte
//go:embed testdata/ufc-312.html
var UFC312 []byte
//go:embed testdata/ufc-fn-feb-15.html
var UFCFNFeb15 []byte
//go:embed testdata/ufc-fn-feb-22.html
var UFCFNFeb22 []byte
//go:embed testdata/ufc-fn-mar-1.html
var UFCFNMar1 []byte
//go:embed testdata/ufc-313.html
var UFC313 []byte
//go:embed testdata/ufc-fn-mar-15.html
var UFCFNMar15 []byte
//go:embed testdata/ufc-fn-mar-22.html
var UFCFNMar22 []byte
//go:embed testdata/ufc-fn-mar-29.html
var UFCFNMar29 []byte
//go:embed testdata/one-event-list.html
var ONEEventList []byte
//go:embed testdata/one-friday-fights-97.html
var ONEFridayFights97 []byte
//go:embed testdata/one-171.html
var ONE171 []byte
//go:embed testdata/one-fn-29.html
var ONEFN29 []byte
//go:embed testdata/one-172.html
var ONE172 []byte
var HTMLContent map[string][]byte = map[string][]byte{
"https://www.ufc.com/events": UFCEventList,
"https://www.ufc.com/event/ufc-312": UFC312,
"https://www.ufc.com/event/ufc-fight-night-february-15-2025": UFCFNFeb15,
"https://www.ufc.com/event/ufc-fight-night-february-22-2025": UFCFNFeb22,
"https://www.ufc.com/event/ufc-fight-night-march-01-2025": UFCFNMar1,
"https://www.ufc.com/event/ufc-313": UFC313,
"https://www.ufc.com/event/ufc-fight-night-march-15-2025": UFCFNMar15,
"https://www.ufc.com/event/ufc-fight-night-march-22-2025": UFCFNMar22,
"https://www.ufc.com/event/ufc-fight-night-march-29-2025": UFCFNMar29,
"https://www.onefc.com/events/": ONEEventList,
"https://www.onefc.com/events/one-friday-fights-97/": ONEFridayFights97,
"https://www.onefc.com/events/one171/": ONE171,
"https://www.onefc.com/events/onefightnight29/": ONEFN29,
"https://www.onefc.com/events/one172/": ONE172,
}
type DummyClient struct{}
func (c *DummyClient) Get(url string, options ...RequestOption) (*goquery.Selection, error) {
htmlstring, exists := HTMLContent[url]
if !exists {
return nil, fmt.Errorf("Invalid URL: %s", url)
}
document, err := goquery.NewDocumentFromReader(bytes.NewReader(htmlstring))
if err != nil {
return nil, err
}
return document.Find("html").First(), nil
}
func (c *DummyClient) AddHeader(key string, value string) {}
func TestUFC(t *testing.T) {
client := DummyClient{}
events, err := ScrapeUFC(&client)
if err != nil {
t.Errorf("Scraping UFC failed: %s", err)
}
if len(*events) == 0 {
t.Fatal("Scraping UFC failed: Events are empty")
}
if len(*events) < 7 {
t.Fatal("Scraping UFC failed: Did not get all events")
}
//PrintJson(events)
}
func TestONE(t *testing.T) {
client := DummyClient{}
events, err := ScrapeONE(&client)
if err != nil {
t.Errorf("Scraping ONE failed: %s", err)
}
PrintJson(events)
}
func TestJSONString(t *testing.T) {
type User struct {
Name string
}
type Thing struct {
Users []User `json:"user,string"`
Num int `json:"num,string"`
}
u := Thing{
Users: []User{
{Name: "Bob"},
{Name: "John"},
},
}
PrintJson(u)
}