|
|
@@ -415,6 +415,63 @@ func TestParseItemWithRelativeURL(t *testing.T) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func TestParseItemWithExternalURLAndNoURL(t *testing.T) {
|
|
|
+ data := `{
|
|
|
+ "version": "https://jsonfeed.org/version/1",
|
|
|
+ "title": "Example",
|
|
|
+ "home_page_url": "https://example.org/",
|
|
|
+ "feed_url": "https://example.org/feed.json",
|
|
|
+ "items": [
|
|
|
+ {
|
|
|
+ "id": "1234259",
|
|
|
+ "external_url": "some_page.html"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }`
|
|
|
+
|
|
|
+ feed, err := Parse("https://example.org/feed.json", bytes.NewBufferString(data))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries) != 1 {
|
|
|
+ t.Fatalf("Incorrect number of entries, got: %d", len(feed.Entries))
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].URL != "https://example.org/some_page.html" {
|
|
|
+ t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestParseItemWithExternalURLAndURL(t *testing.T) {
|
|
|
+ data := `{
|
|
|
+ "version": "https://jsonfeed.org/version/1",
|
|
|
+ "title": "Example",
|
|
|
+ "home_page_url": "https://example.org/",
|
|
|
+ "feed_url": "https://example.org/feed.json",
|
|
|
+ "items": [
|
|
|
+ {
|
|
|
+ "id": "1234259",
|
|
|
+ "url": "https://example.org/article",
|
|
|
+ "external_url": "https://example.org/another-article"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }`
|
|
|
+
|
|
|
+ feed, err := Parse("https://example.org/feed.json", bytes.NewBufferString(data))
|
|
|
+ if err != nil {
|
|
|
+ t.Fatal(err)
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(feed.Entries) != 1 {
|
|
|
+ t.Fatalf("Incorrect number of entries, got: %d", len(feed.Entries))
|
|
|
+ }
|
|
|
+
|
|
|
+ if feed.Entries[0].URL != "https://example.org/article" {
|
|
|
+ t.Errorf("Incorrect entry URL, got: %s", feed.Entries[0].URL)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func TestParseItemWithLegacyAuthorField(t *testing.T) {
|
|
|
data := `{
|
|
|
"version": "https://jsonfeed.org/version/1",
|