78 lines
1.3 KiB
Go
Executable File
78 lines
1.3 KiB
Go
Executable File
package rss
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"testing"
|
|
|
|
"github.com/mmcdole/gofeed"
|
|
)
|
|
|
|
func initRSSItem() {
|
|
initRSSFeed()
|
|
}
|
|
|
|
func TestRSSItemNewEncodeDecode(t *testing.T) {
|
|
initRSSItem()
|
|
|
|
s := mockRSS()
|
|
defer s.Close()
|
|
|
|
resp, err := http.Get(s.URL)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
gofeed, err := gofeed.NewParser().Parse(resp.Body)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
gofeed.Items[0].Content = ""
|
|
gofeed.Items[0].Description = ""
|
|
|
|
item, err := newItem(gofeed.Items[0], ".*", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
itemB, err := newItem(gofeed.Items[0], "Podcast", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if itemB.Content == item.Content {
|
|
t.Errorf("content filter did not apply")
|
|
}
|
|
|
|
b, err := item.Encode()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := itemB.Decode(b); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if itemB.Content != item.Content {
|
|
t.Errorf("decode found %v, want %v", itemB.Content, item.Content)
|
|
}
|
|
|
|
if err := item.save("key"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
itemC := &Item{
|
|
Link: item.Link,
|
|
}
|
|
if err := itemC.Load(item.ID(), "key"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if fmt.Sprintf("%v", item) != fmt.Sprintf("%v", itemC) {
|
|
t.Fatalf("%v != %v", item, itemC)
|
|
}
|
|
|
|
if err := itemC.Load(item.ID()+"not", "key"); err == nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := itemC.Load(item.ID(), "key"+"not"); err == nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|