feedjira 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.rubocop.yml +15 -0
- data/.travis.yml +31 -12
- data/CHANGELOG.md +34 -1
- data/Dangerfile +1 -0
- data/Gemfile +2 -1
- data/LICENSE +1 -1
- data/README.md +210 -7
- data/Rakefile +11 -1
- data/feedjira.gemspec +17 -14
- data/fixtures/vcr_cassettes/fetch_failure.yml +62 -0
- data/fixtures/vcr_cassettes/parse_error.yml +222 -0
- data/fixtures/vcr_cassettes/success.yml +281 -0
- data/lib/feedjira/configuration.rb +76 -0
- data/lib/feedjira/core_ext/date.rb +3 -1
- data/lib/feedjira/core_ext/string.rb +2 -1
- data/lib/feedjira/core_ext/time.rb +24 -17
- data/lib/feedjira/core_ext.rb +3 -3
- data/lib/feedjira/date_time_utilities/date_time_epoch_parser.rb +13 -0
- data/lib/feedjira/date_time_utilities/date_time_language_parser.rb +24 -0
- data/lib/feedjira/date_time_utilities/date_time_pattern_parser.rb +34 -0
- data/lib/feedjira/date_time_utilities.rb +32 -0
- data/lib/feedjira/feed.rb +89 -62
- data/lib/feedjira/feed_entry_utilities.rb +20 -19
- data/lib/feedjira/feed_utilities.rb +37 -22
- data/lib/feedjira/parser/atom.rb +10 -8
- data/lib/feedjira/parser/atom_entry.rb +11 -13
- data/lib/feedjira/parser/atom_feed_burner.rb +27 -10
- data/lib/feedjira/parser/atom_feed_burner_entry.rb +12 -14
- data/lib/feedjira/parser/atom_youtube.rb +21 -0
- data/lib/feedjira/parser/atom_youtube_entry.rb +30 -0
- data/lib/feedjira/parser/google_docs_atom.rb +8 -7
- data/lib/feedjira/parser/google_docs_atom_entry.rb +13 -11
- data/lib/feedjira/parser/itunes_rss.rb +41 -22
- data/lib/feedjira/parser/itunes_rss_category.rb +39 -0
- data/lib/feedjira/parser/itunes_rss_item.rb +32 -20
- data/lib/feedjira/parser/itunes_rss_owner.rb +4 -4
- data/lib/feedjira/parser/podlove_chapter.rb +22 -0
- data/lib/feedjira/parser/rss.rb +11 -8
- data/lib/feedjira/parser/rss_entry.rb +17 -21
- data/lib/feedjira/parser/rss_feed_burner.rb +5 -6
- data/lib/feedjira/parser/rss_feed_burner_entry.rb +24 -28
- data/lib/feedjira/parser/rss_image.rb +15 -0
- data/lib/feedjira/parser.rb +1 -1
- data/lib/feedjira/preprocessor.rb +4 -2
- data/lib/feedjira/version.rb +1 -1
- data/lib/feedjira.rb +15 -0
- data/spec/feedjira/configuration_spec.rb +25 -0
- data/spec/feedjira/date_time_utilities_spec.rb +47 -0
- data/spec/feedjira/feed_entry_utilities_spec.rb +23 -19
- data/spec/feedjira/feed_spec.rb +140 -75
- data/spec/feedjira/feed_utilities_spec.rb +83 -63
- data/spec/feedjira/parser/atom_entry_spec.rb +54 -34
- data/spec/feedjira/parser/atom_feed_burner_entry_spec.rb +27 -20
- data/spec/feedjira/parser/atom_feed_burner_spec.rb +87 -30
- data/spec/feedjira/parser/atom_spec.rb +50 -48
- data/spec/feedjira/parser/atom_youtube_entry_spec.rb +86 -0
- data/spec/feedjira/parser/atom_youtube_spec.rb +43 -0
- data/spec/feedjira/parser/google_docs_atom_entry_spec.rb +5 -4
- data/spec/feedjira/parser/google_docs_atom_spec.rb +6 -6
- data/spec/feedjira/parser/itunes_rss_item_spec.rb +49 -29
- data/spec/feedjira/parser/itunes_rss_owner_spec.rb +10 -9
- data/spec/feedjira/parser/itunes_rss_spec.rb +87 -30
- data/spec/feedjira/parser/podlove_chapter_spec.rb +37 -0
- data/spec/feedjira/parser/rss_entry_spec.rb +50 -33
- data/spec/feedjira/parser/rss_feed_burner_entry_spec.rb +55 -33
- data/spec/feedjira/parser/rss_feed_burner_spec.rb +31 -26
- data/spec/feedjira/parser/rss_spec.rb +56 -24
- data/spec/feedjira/preprocessor_spec.rb +11 -3
- data/spec/sample_feeds/AmazonWebServicesBlog.xml +797 -797
- data/spec/sample_feeds/AtomEscapedHTMLInPreTag.xml +13 -0
- data/spec/sample_feeds/CRE.xml +5849 -0
- data/spec/sample_feeds/FeedBurnerXHTML.xml +400 -400
- data/spec/sample_feeds/GiantRobotsSmashingIntoOtherGiantRobots.xml +682 -0
- data/spec/sample_feeds/ITunesWithSingleQuotedAttributes.xml +67 -0
- data/spec/sample_feeds/InvalidDateFormat.xml +20 -0
- data/spec/sample_feeds/PaulDixExplainsNothing.xml +175 -175
- data/spec/sample_feeds/PaulDixExplainsNothingAlternate.xml +175 -175
- data/spec/sample_feeds/PaulDixExplainsNothingFirstEntryContent.xml +16 -16
- data/spec/sample_feeds/PaulDixExplainsNothingWFW.xml +174 -174
- data/spec/sample_feeds/TenderLovemaking.xml +12 -2
- data/spec/sample_feeds/TrotterCashionHome.xml +611 -611
- data/spec/sample_feeds/TypePadNews.xml +368 -368
- data/spec/sample_feeds/itunes.xml +31 -2
- data/spec/sample_feeds/pet_atom.xml +229 -229
- data/spec/sample_feeds/youtube_atom.xml +395 -0
- data/spec/sample_feeds.rb +31 -21
- data/spec/spec_helper.rb +6 -0
- metadata +132 -25
@@ -1,57 +1,89 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Feedjira::Parser::RSS do
|
4
|
-
describe
|
5
|
-
it
|
4
|
+
describe '#will_parse?' do
|
5
|
+
it 'should return true for an RSS feed' do
|
6
6
|
expect(Feedjira::Parser::RSS).to be_able_to_parse(sample_rss_feed)
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
# it "should return false for an rdf feed" do
|
11
|
-
# Feedjira::RSS.should_not be_able_to_parse(sample_rdf_feed)
|
12
|
-
# end
|
13
|
-
|
14
|
-
it "should return false for an atom feed" do
|
9
|
+
it 'should return false for an atom feed' do
|
15
10
|
expect(Feedjira::Parser::RSS).to_not be_able_to_parse(sample_atom_feed)
|
16
11
|
end
|
17
12
|
|
18
|
-
it
|
19
|
-
|
13
|
+
it 'should return false for an rss feedburner feed' do
|
14
|
+
able = Feedjira::Parser::RSS.able_to_parse? sample_rss_feed_burner_feed
|
15
|
+
expect(able).to eq false
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
23
|
-
describe
|
19
|
+
describe 'parsing' do
|
24
20
|
before(:each) do
|
25
21
|
@feed = Feedjira::Parser::RSS.parse(sample_rss_feed)
|
26
22
|
end
|
27
23
|
|
28
|
-
it
|
29
|
-
expect(@feed.version).to eq
|
24
|
+
it 'should parse the version' do
|
25
|
+
expect(@feed.version).to eq '2.0'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should parse the title' do
|
29
|
+
expect(@feed.title).to eq 'Tender Lovemaking'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should parse the description' do
|
33
|
+
expect(@feed.description).to eq 'The act of making love, tenderly.'
|
30
34
|
end
|
31
35
|
|
32
|
-
it
|
33
|
-
expect(@feed.
|
36
|
+
it 'should parse the url' do
|
37
|
+
expect(@feed.url).to eq 'http://tenderlovemaking.com'
|
34
38
|
end
|
35
39
|
|
36
|
-
it
|
37
|
-
expect(@feed.
|
40
|
+
it 'should parse the ttl' do
|
41
|
+
expect(@feed.ttl).to eq '60'
|
38
42
|
end
|
39
43
|
|
40
|
-
it
|
41
|
-
expect(@feed.
|
44
|
+
it 'should parse the last build date' do
|
45
|
+
expect(@feed.last_built).to eq 'Sat, 07 Sep 2002 09:42:31 GMT'
|
42
46
|
end
|
43
47
|
|
44
|
-
it
|
48
|
+
it 'should parse the hub urls' do
|
45
49
|
expect(@feed.hubs.count).to eq 1
|
46
|
-
expect(@feed.hubs.first).to eq
|
50
|
+
expect(@feed.hubs.first).to eq 'http://pubsubhubbub.appspot.com/'
|
47
51
|
end
|
48
52
|
|
49
|
-
it
|
53
|
+
it 'should provide an accessor for the feed_url' do
|
50
54
|
expect(@feed).to respond_to :feed_url
|
51
55
|
expect(@feed).to respond_to :feed_url=
|
52
56
|
end
|
53
57
|
|
54
|
-
it
|
58
|
+
it 'should parse the language' do
|
59
|
+
expect(@feed.language).to eq 'en'
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should parse the image url' do
|
63
|
+
expect(@feed.image.url).to eq 'https://tenderlovemaking.com/images/header-logo-text-trimmed.png'
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'should parse the image title' do
|
67
|
+
expect(@feed.image.title).to eq 'Tender Lovemaking'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should parse the image link' do
|
71
|
+
expect(@feed.image.link).to eq 'http://tenderlovemaking.com'
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should parse the image width' do
|
75
|
+
expect(@feed.image.width).to eq '766'
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should parse the image height' do
|
79
|
+
expect(@feed.image.height).to eq '138'
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should parse the image description' do
|
83
|
+
expect(@feed.image.description).to eq 'The act of making love, tenderly.'
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should parse entries' do
|
55
87
|
expect(@feed.entries.size).to eq 10
|
56
88
|
end
|
57
89
|
end
|
@@ -13,9 +13,17 @@ describe Feedjira::Preprocessor do
|
|
13
13
|
it 'escapes markup in xhtml content' do
|
14
14
|
processor = Feedjira::Preprocessor.new sample_atom_xhtml_feed
|
15
15
|
escaped = processor.to_xml
|
16
|
+
escaped_parts = escaped.split "\n"
|
16
17
|
|
17
|
-
expect(
|
18
|
-
expect(
|
19
|
-
expect(
|
18
|
+
expect(escaped_parts[10]).to match(%r{<i>dogs</i>}) # title
|
19
|
+
expect(escaped_parts[16]).to match(%r{<b>XHTML</b>}) # summary
|
20
|
+
expect(escaped_parts[26]).to match(/<p>$/) # content
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'leaves escaped html within pre tag' do
|
24
|
+
processor = Feedjira::Preprocessor.new(sample_atom_xhtml_with_escpaed_html_in_pre_tag_feed) # rubocop:disable Metrics/LineLength
|
25
|
+
escaped = processor.to_xml
|
26
|
+
expected_pre_tag = ' <pre>&lt;b&gt;test&lt;b&gt;</pre>' # rubocop:disable Metrics/LineLength
|
27
|
+
expect(escaped.split("\n")[7]).to eq(expected_pre_tag)
|
20
28
|
end
|
21
29
|
end
|