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], ".*", "key") if err != nil { t.Fatal(err) } itemB, err := newItem(gofeed.Items[0], "Podcast", "key") 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(); err != nil { t.Fatal(err) } itemC := &Item{ Link: item.Link, FeedKey: item.FeedKey, } if err := itemC.load(); err != nil { t.Fatal(err) } if fmt.Sprintf("%v", item) != fmt.Sprintf("%v", itemC) { t.Fatalf("%v != %v", item, itemC) } itemD := &Item{} if err := itemD.load(); err == nil { t.Fatal(err) } itemE := &Item{ Link: "nothing", FeedKey: item.FeedKey, } if err := itemE.load(); err == nil { t.Fatal(err) } }