diff options
Diffstat (limited to 'internal/reader/atom/atom_10_test.go')
-rw-r--r-- | internal/reader/atom/atom_10_test.go | 145 |
1 files changed, 70 insertions, 75 deletions
diff --git a/internal/reader/atom/atom_10_test.go b/internal/reader/atom/atom_10_test.go index f778e8e6..be6e9148 100644 --- a/internal/reader/atom/atom_10_test.go +++ b/internal/reader/atom/atom_10_test.go @@ -12,7 +12,6 @@ import ( func TestParseAtomSample(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> - <title>Example Feed</title> <link href="http://example.org/"/> <updated>2003-12-13T18:30:02Z</updated> @@ -20,7 +19,6 @@ func TestParseAtomSample(t *testing.T) { <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> - <entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> @@ -28,7 +26,6 @@ func TestParseAtomSample(t *testing.T) { <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> - </feed>` feed, err := Parse("http://example.org/feed.xml", bytes.NewReader([]byte(data)), "10") @@ -420,7 +417,7 @@ func TestParseEntryWithPlainTextTitle(t *testing.T) { expected := `AT&T bought by SBC!` for i := range 2 { if feed.Entries[i].Title != expected { - t.Errorf("Incorrect title for entry #%d, got: %q", i, feed.Entries[i].Title) + t.Errorf("Incorrect title for entry #%d, got: %q instead of %q", i, feed.Entries[i].Title, expected) } } } @@ -430,33 +427,20 @@ func TestParseEntryWithHTMLTitle(t *testing.T) { <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> - <entry> - <title type="html"><code>Test</code> Test</title> - <link href="http://example.org/2003/12/13/atom03"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary>Some text.</summary> + <title type="html"><code>Code</code> Test</title> + <link href="http://example.org/z"/> </entry> - <entry> - <title type="html"><![CDATA[Test “Test”]]></title> - <link href="http://example.org/2003/12/13/atom03"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary>Some text.</summary> + <title type="html"><![CDATA[Test with “unicode quote”]]></title> + <link href="http://example.org/b"/> </entry> - <entry> <title> <![CDATA[Entry title with space around CDATA]]> </title> - <link href="http://example.org/2003/12/13/atom03"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary>Some text.</summary> + <link href="http://example.org/c"/> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -464,11 +448,11 @@ func TestParseEntryWithHTMLTitle(t *testing.T) { t.Fatal(err) } - if feed.Entries[0].Title != "<code>Test</code> Test" { + if feed.Entries[0].Title != "Code Test" { t.Errorf("Incorrect entry title, got: %q", feed.Entries[0].Title) } - if feed.Entries[1].Title != "Test “Test”" { + if feed.Entries[1].Title != "Test with “unicode quote”" { t.Errorf("Incorrect entry title, got: %q", feed.Entries[1].Title) } @@ -502,8 +486,8 @@ func TestParseEntryWithXHTMLTitle(t *testing.T) { t.Fatal(err) } - if feed.Entries[0].Title != `This is <b>XHTML</b> content.` { - t.Errorf("Incorrect entry title, got: %q", feed.Entries[1].Title) + if feed.Entries[0].Title != `This is XHTML content.` { + t.Errorf("Incorrect entry title, got: %q", feed.Entries[0].Title) } } @@ -608,7 +592,7 @@ func TestParseEntryWithDoubleEncodedEntitiesTitle(t *testing.T) { t.Fatal(err) } - if feed.Entries[0].Title != `'AT&T'` { + if feed.Entries[0].Title != `'AT&T'` { t.Errorf("Incorrect entry title, got: %q", feed.Entries[0].Title) } } @@ -644,31 +628,21 @@ func TestParseEntryWithHTMLSummary(t *testing.T) { <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> - <entry> - <title type="html">Example</title> + <title type="html">Example 1</title> <link href="http://example.org/1"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary type="html"><code>std::unique_ptr&lt;S&gt;</code></summary> + <summary type="html"><code>std::unique_ptr&lt;S&gt; myvar;</code></summary> </entry> - <entry> - <title type="html">Example</title> + <title type="html">Example 2</title> <link href="http://example.org/2"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary type="text/html"><code>std::unique_ptr&lt;S&gt;</code></summary> + <summary type="text/html"><code>std::unique_ptr&lt;S&gt; myvar;</code></summary> </entry> - <entry> - <title type="html">Example</title> + <title type="html">Example 3</title> <link href="http://example.org/3"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - <updated>2003-12-13T18:30:02Z</updated> - <summary type="html"><![CDATA[<code>std::unique_ptr<S></code>]]></summary> + <summary type="html"><![CDATA[<code>std::unique_ptr<S> myvar;</code>]]></summary> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -676,7 +650,11 @@ func TestParseEntryWithHTMLSummary(t *testing.T) { t.Fatal(err) } - expected := `<code>std::unique_ptr<S></code>` + if len(feed.Entries) != 3 { + t.Fatalf("Incorrect number of entries, got: %d", len(feed.Entries)) + } + + expected := `<code>std::unique_ptr<S> myvar;</code>` for i := range 3 { if feed.Entries[i].Content != expected { t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content) @@ -728,7 +706,7 @@ func TestParseEntryWithTextSummary(t *testing.T) { t.Fatal(err) } - expected := `AT&T <S>` + expected := `AT&T <S>` for i := range 4 { if feed.Entries[i].Content != expected { t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content) @@ -747,7 +725,7 @@ func TestParseEntryWithTextContent(t *testing.T) { <link href="http://example.org/a"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> - <content>AT&T <S></content> + <content>AT&T <strong>Strong Element</strong></content> </entry> <entry> @@ -755,7 +733,7 @@ func TestParseEntryWithTextContent(t *testing.T) { <link href="http://example.org/b"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> - <content type="text">AT&T <S></content> + <content type="text">AT&T <strong>Strong Element</strong></content> </entry> <entry> @@ -763,7 +741,7 @@ func TestParseEntryWithTextContent(t *testing.T) { <link href="http://example.org/c"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> - <content type="text/plain">AT&T <S></content> + <content type="text/plain">AT&T <strong>Strong Element</strong></content> </entry> <entry> @@ -771,7 +749,7 @@ func TestParseEntryWithTextContent(t *testing.T) { <link href="http://example.org/d"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> - <content><![CDATA[AT&T <S>]]></content> + <content><![CDATA[AT&T <strong>Strong Element</strong>]]></content> </entry> </feed>` @@ -781,10 +759,10 @@ func TestParseEntryWithTextContent(t *testing.T) { t.Fatal(err) } - expected := `AT&T <S>` + expected := `AT&T <strong>Strong Element</strong>` for i := range 4 { if feed.Entries[i].Content != expected { - t.Errorf("Incorrect content for entry #%d, got: %q", i, feed.Entries[i].Content) + t.Errorf("Incorrect content for entry #%d, got: %q instead of %q", i, feed.Entries[i].Content, expected) } } } @@ -925,7 +903,6 @@ func TestParseEntryWithMultipleAuthors(t *testing.T) { <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> - <entry> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> @@ -938,7 +915,6 @@ func TestParseEntryWithMultipleAuthors(t *testing.T) { <name>Bob</name> </author> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -951,7 +927,7 @@ func TestParseEntryWithMultipleAuthors(t *testing.T) { } } -func TestParseEntryWithoutAuthor(t *testing.T) { +func TestParseFeedWithEntryWithoutAuthor(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> @@ -959,14 +935,12 @@ func TestParseEntryWithoutAuthor(t *testing.T) { <author> <name>John Doe</name> </author> - <entry> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -990,14 +964,15 @@ func TestParseFeedWithMultipleAuthors(t *testing.T) { <author> <name>Bob</name> </author> - + <author> + <name>Bob</name> + </author> <entry> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -1015,14 +990,12 @@ func TestParseFeedWithoutAuthor(t *testing.T) { <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> - <entry> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -1608,27 +1581,18 @@ func TestAbsoluteCommentsURL(t *testing.T) { } } -func TestParseFeedWithCategories(t *testing.T) { +func TestParseItemWithCategories(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> - <author> - <name>Alice</name> - </author> - <author> - <name>Bob</name> - </author> - <entry> - <link href="http://example.org/2003/12/13/atom03"/> - <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> + <link href="http://www.example.org/entries/1" /> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> - <category term='Tech' /> + <category term='ZZZZ' /> <category term='Technology' label='Science' /> </entry> - </feed>` feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") @@ -1637,22 +1601,53 @@ func TestParseFeedWithCategories(t *testing.T) { } if len(feed.Entries[0].Tags) != 2 { - t.Errorf("Incorrect number of tags, got: %d", len(feed.Entries[0].Tags)) + t.Fatalf("Incorrect number of tags, got: %d", len(feed.Entries[0].Tags)) } - expected := "Tech" + expected := "Science" result := feed.Entries[0].Tags[0] if result != expected { t.Errorf("Incorrect entry category, got %q instead of %q", result, expected) } - expected = "Science" + expected = "ZZZZ" result = feed.Entries[0].Tags[1] if result != expected { t.Errorf("Incorrect entry category, got %q instead of %q", result, expected) } } +func TestParseFeedWithCategories(t *testing.T) { + data := `<?xml version="1.0" encoding="utf-8"?> + <feed xmlns="http://www.w3.org/2005/Atom"> + <title>Example Feed</title> + <link href="http://example.org/"/> + <category term='Test' label='Some Label' /> + <category term='Test' label='Some Label' /> + <category term='Test' label='Some Label' /> + <entry> + <link href="http://www.example.org/entries/1" /> + <updated>2003-12-13T18:30:02Z</updated> + <summary>Some text.</summary> + </entry> + </feed>` + + feed, err := Parse("https://example.org/", bytes.NewReader([]byte(data)), "10") + if err != nil { + t.Fatal(err) + } + + if len(feed.Entries[0].Tags) != 1 { + t.Fatalf("Incorrect number of tags, got: %d", len(feed.Entries[0].Tags)) + } + + expected := "Some Label" + result := feed.Entries[0].Tags[0] + if result != expected { + t.Errorf("Incorrect entry category, got %q instead of %q", result, expected) + } +} + func TestParseFeedWithIconURL(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> |