|
|
@@ -472,31 +472,30 @@ func TestParseEntryWithEnclosures(t *testing.T) {
|
|
|
}
|
|
|
|
|
|
if len(feed.Entries[0].Enclosures) != 2 {
|
|
|
- t.Errorf("Incorrect number of enclosures, got: %d", len(feed.Entries[0].Enclosures))
|
|
|
+ t.Fatalf("Incorrect number of enclosures, got: %d", len(feed.Entries[0].Enclosures))
|
|
|
}
|
|
|
|
|
|
- if feed.Entries[0].Enclosures[0].URL != "http://www.example.org/myaudiofile.mp3" {
|
|
|
- t.Errorf("Incorrect enclosure URL, got: %s", feed.Entries[0].Enclosures[0].URL)
|
|
|
+ expectedResults := []struct {
|
|
|
+ url string
|
|
|
+ mimeType string
|
|
|
+ size int64
|
|
|
+ }{
|
|
|
+ {"http://www.example.org/myaudiofile.mp3", "audio/mpeg", 1234},
|
|
|
+ {"http://www.example.org/myaudiofile.torrent", "application/x-bittorrent", 4567},
|
|
|
}
|
|
|
|
|
|
- if feed.Entries[0].Enclosures[0].MimeType != "audio/mpeg" {
|
|
|
- t.Errorf("Incorrect enclosure type, got: %s", feed.Entries[0].Enclosures[0].MimeType)
|
|
|
- }
|
|
|
-
|
|
|
- if feed.Entries[0].Enclosures[0].Size != 1234 {
|
|
|
- t.Errorf("Incorrect enclosure length, got: %d", feed.Entries[0].Enclosures[0].Size)
|
|
|
- }
|
|
|
-
|
|
|
- if feed.Entries[0].Enclosures[1].URL != "http://www.example.org/myaudiofile.torrent" {
|
|
|
- t.Errorf("Incorrect enclosure URL, got: %s", feed.Entries[0].Enclosures[1].URL)
|
|
|
- }
|
|
|
+ for index, enclosure := range feed.Entries[0].Enclosures {
|
|
|
+ if expectedResults[index].url != enclosure.URL {
|
|
|
+ t.Errorf(`Unexpected enclosure URL, got %q instead of %q`, enclosure.URL, expectedResults[index].url)
|
|
|
+ }
|
|
|
|
|
|
- if feed.Entries[0].Enclosures[1].MimeType != "application/x-bittorrent" {
|
|
|
- t.Errorf("Incorrect enclosure type, got: %s", feed.Entries[0].Enclosures[1].MimeType)
|
|
|
- }
|
|
|
+ if expectedResults[index].mimeType != enclosure.MimeType {
|
|
|
+ t.Errorf(`Unexpected enclosure type, got %q instead of %q`, enclosure.MimeType, expectedResults[index].mimeType)
|
|
|
+ }
|
|
|
|
|
|
- if feed.Entries[0].Enclosures[1].Size != 4567 {
|
|
|
- t.Errorf("Incorrect enclosure length, got: %d", feed.Entries[0].Enclosures[1].Size)
|
|
|
+ if expectedResults[index].size != enclosure.Size {
|
|
|
+ t.Errorf(`Unexpected enclosure size, got %d instead of %d`, enclosure.Size, expectedResults[index].size)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -596,3 +595,137 @@ func TestParseWithInvalidCharacterEntity(t *testing.T) {
|
|
|
t.Errorf(`Incorrect URL, got: %q`, feed.SiteURL)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func TestParseMediaGroup(t *testing.T) {
|
|
|
+ data := `<?xml version="1.0" encoding="utf-8"?>
|
|
|
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
|
|
|
+ <id>http://www.example.org/myfeed</id>
|
|
|
+ <title>My Video Feed</title>
|
|
|
+ <updated>2005-07-15T12:00:00Z</updated>
|
|
|
+ <link href="http://example.org" />
|
|
|
+ <link rel="self" href="http://example.org/myfeed" />
|
|
|
+ <entry>
|
|
|
+ <id>http://www.example.org/entries/1</id>
|
|
|
+ <title>Some Video</title>
|
|
|
+ <updated>2005-07-15T12:00:00Z</updated>
|
|
|
+ <link href="http://www.example.org/entries/1" />
|
|
|
+ <media:group>
|
|
|
+ <media:title>Another title</media:title>
|
|
|
+ <media:content url="https://www.youtube.com/v/abcd" type="application/x-shockwave-flash" width="640" height="390"/>
|
|
|
+ <media:thumbnail url="https://example.org/thumbnail.jpg" width="480" height="360"/>
|
|
|
+ <media:description>Some description
|
|
|
+A website: http://example.org/</media:description>
|
|
|
+ </media:group>
|
|
|
+ </entry>
|
|
|
+ </feed>`
|
|
|
+
|
|
|
+ feed, err := Parse(bytes.NewBufferString(data))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries) != 1 {
|
|
|
+ t.Errorf("Incorrect number of entries, got: %d", len(feed.Entries))
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].URL != "http://www.example.org/entries/1" {
|
|
|
+ t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].Content != `Some description<br>A website: <a href="http://example.org/">http://example.org/</a>` {
|
|
|
+ t.Errorf("Incorrect entry content, got: %q", feed.Entries[0].Content)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries[0].Enclosures) != 2 {
|
|
|
+ t.Fatalf("Incorrect number of enclosures, got: %d", len(feed.Entries[0].Enclosures))
|
|
|
+ }
|
|
|
+
|
|
|
+ expectedResults := []struct {
|
|
|
+ url string
|
|
|
+ mimeType string
|
|
|
+ size int64
|
|
|
+ }{
|
|
|
+ {"https://example.org/thumbnail.jpg", "image/*", 0},
|
|
|
+ {"https://www.youtube.com/v/abcd", "application/x-shockwave-flash", 0},
|
|
|
+ }
|
|
|
+
|
|
|
+ for index, enclosure := range feed.Entries[0].Enclosures {
|
|
|
+ if expectedResults[index].url != enclosure.URL {
|
|
|
+ t.Errorf(`Unexpected enclosure URL, got %q instead of %q`, enclosure.URL, expectedResults[index].url)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expectedResults[index].mimeType != enclosure.MimeType {
|
|
|
+ t.Errorf(`Unexpected enclosure type, got %q instead of %q`, enclosure.MimeType, expectedResults[index].mimeType)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expectedResults[index].size != enclosure.Size {
|
|
|
+ t.Errorf(`Unexpected enclosure size, got %d instead of %d`, enclosure.Size, expectedResults[index].size)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestParseMediaElements(t *testing.T) {
|
|
|
+ data := `<?xml version="1.0" encoding="utf-8"?>
|
|
|
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
|
|
|
+ <id>http://www.example.org/myfeed</id>
|
|
|
+ <title>My Video Feed</title>
|
|
|
+ <updated>2005-07-15T12:00:00Z</updated>
|
|
|
+ <link href="http://example.org" />
|
|
|
+ <link rel="self" href="http://example.org/myfeed" />
|
|
|
+ <entry>
|
|
|
+ <id>http://www.example.org/entries/1</id>
|
|
|
+ <title>Some Video</title>
|
|
|
+ <updated>2005-07-15T12:00:00Z</updated>
|
|
|
+ <link href="http://www.example.org/entries/1" />
|
|
|
+ <media:title>Another title</media:title>
|
|
|
+ <media:content url="https://www.youtube.com/v/abcd" type="application/x-shockwave-flash" width="640" height="390"/>
|
|
|
+ <media:thumbnail url="https://example.org/thumbnail.jpg" width="480" height="360"/>
|
|
|
+ <media:description>Some description
|
|
|
+A website: http://example.org/</media:description>
|
|
|
+ </entry>
|
|
|
+ </feed>`
|
|
|
+
|
|
|
+ feed, err := Parse(bytes.NewBufferString(data))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries) != 1 {
|
|
|
+ t.Errorf("Incorrect number of entries, got: %d", len(feed.Entries))
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].URL != "http://www.example.org/entries/1" {
|
|
|
+ t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL)
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].Content != `Some description<br>A website: <a href="http://example.org/">http://example.org/</a>` {
|
|
|
+ t.Errorf("Incorrect entry content, got: %q", feed.Entries[0].Content)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries[0].Enclosures) != 2 {
|
|
|
+ t.Fatalf("Incorrect number of enclosures, got: %d", len(feed.Entries[0].Enclosures))
|
|
|
+ }
|
|
|
+
|
|
|
+ expectedResults := []struct {
|
|
|
+ url string
|
|
|
+ mimeType string
|
|
|
+ size int64
|
|
|
+ }{
|
|
|
+ {"https://example.org/thumbnail.jpg", "image/*", 0},
|
|
|
+ {"https://www.youtube.com/v/abcd", "application/x-shockwave-flash", 0},
|
|
|
+ }
|
|
|
+
|
|
|
+ for index, enclosure := range feed.Entries[0].Enclosures {
|
|
|
+ if expectedResults[index].url != enclosure.URL {
|
|
|
+ t.Errorf(`Unexpected enclosure URL, got %q instead of %q`, enclosure.URL, expectedResults[index].url)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expectedResults[index].mimeType != enclosure.MimeType {
|
|
|
+ t.Errorf(`Unexpected enclosure type, got %q instead of %q`, enclosure.MimeType, expectedResults[index].mimeType)
|
|
|
+ }
|
|
|
+
|
|
|
+ if expectedResults[index].size != enclosure.Size {
|
|
|
+ t.Errorf(`Unexpected enclosure size, got %d instead of %d`, enclosure.Size, expectedResults[index].size)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|