package parser import ( "reflect" "strings" "testing" "time" ) func TestAtom(t *testing.T) { have, _ := Parse(strings.NewReader(` Example Feed A subtitle. urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6 2003-12-13T18:30:02Z Atom-Powered Robots Run Amok urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 2003-12-13T18:30:02Z Some text.

This is the entry content.

John Doe johndoe@example.com
`)) want := &Feed{ Title: "Example Feed", SiteURL: "http://example.org/", Items: []Item{ { GUID: "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a", Date: time.Unix(1071340202, 0).UTC(), URL: "http://example.org/2003/12/13/atom03.html", Title: "Atom-Powered Robots Run Amok", Content: `

This is the entry content.

`, ImageURL: "", AudioURL: "", }, }, } if !reflect.DeepEqual(want, have) { t.Logf("want: %#v", want) t.Logf("have: %#v", have) t.Fatal("invalid atom") } } func TestAtomClashingNamespaces(t *testing.T) { have, err := Parse(strings.NewReader(` atom content `)) want := &Feed{Items: []Item{{Content: "atom content"}}} if err != nil { t.Fatal(err) } if !reflect.DeepEqual(want, have) { t.Logf("want: %#v", want) t.Logf("have: %#v", have) t.FailNow() } } func TestAtomHTMLTitle(t *testing.T) { feed, _ := Parse(strings.NewReader(` say <code>what</code>?</entry> </feed> `)) have := feed.Items[0].Title want := "say what?" if !reflect.DeepEqual(want, have) { t.Logf("want: %#v", want) t.Logf("have: %#v", have) t.FailNow() } } func TestAtomImageLink(t *testing.T) { feed, _ := Parse(strings.NewReader(` <?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"> <entry> <media:thumbnail url="https://example.com/image.png?width=100&height=100" /> </entry> </feed> `)) have := feed.Items[0].ImageURL want := `https://example.com/image.png?width=100&height=100` if want != have { t.Fatalf("item.image_url doesn't match\nwant: %#v\nhave: %#v\n", want, have) } } // found in: https://www.reddit.com/r/funny.rss // items come with thumbnail urls which are also present in the content func TestAtomImageLinkDuplicated(t *testing.T) { feed, _ := Parse(strings.NewReader(` <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"> <entry> <content type="html"><img src="https://example.com/image.png?width=100&height=100"></content> <media:thumbnail url="https://example.com/image.png?width=100&height=100" /> </entry> </feed> `)) have := feed.Items[0].Content want := `<img src="https://example.com/image.png?width=100&height=100">` if want != have { t.Fatalf("want: %#v\nhave: %#v\n", want, have) } if feed.Items[0].ImageURL != "" { t.Fatal("item.image_url must be unset if present in the content") } }