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) } }