49 lines
1.0 KiB
Go
49 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
var feedSourceTests = []struct {
|
|
filename string
|
|
title string
|
|
itemText string
|
|
}{
|
|
{
|
|
filename: "/xkcd.xml",
|
|
title: "xkcd.com",
|
|
itemText: "Occam",
|
|
},
|
|
}
|
|
|
|
func TestFeedSource(t *testing.T) {
|
|
server := httptest.NewServer(http.FileServer(http.Dir("testdata")))
|
|
defer server.Close()
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
for _, tt := range feedSourceTests {
|
|
src := NewFeed(server.URL + tt.filename)
|
|
src.update(ctx)
|
|
if err := src.Error; err != nil {
|
|
t.Errorf("%v: Error = %v, expected nil", tt.filename, err)
|
|
continue
|
|
}
|
|
if src.Title != tt.title {
|
|
t.Errorf("%v: Title = %v expected %v", tt.filename, src.Title, tt.title)
|
|
}
|
|
items := src.GetItems()
|
|
if len(items) == 0 {
|
|
t.Errorf("%v: GetItems() = %v expected len > 0", tt.filename, items)
|
|
} else {
|
|
x := items[0]
|
|
if x.Text != tt.itemText {
|
|
t.Errorf("%v: item 0 Text = %q expected %q", tt.filename, x.Text, tt.itemText)
|
|
}
|
|
}
|
|
}
|
|
}
|