elisehuard-media_feed 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,105 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ require 'media_feed'
3
+
4
+ describe MediaFeed::Feed, '.initialize' do
5
+ it 'should be initialized using an url' do
6
+ feed = MediaFeed::Feed.new('http://homepage.mac.com/vi_fimagazine/podcast.xml')
7
+ feed.should_not be_nil
8
+ end
9
+
10
+ it 'should raise an error when no url is given' do
11
+ lambda {
12
+ feed = MediaFeed::Feed.new(nil)
13
+ }.should raise_error
14
+ end
15
+
16
+ it 'should raise an error when an invalid url is given' do
17
+ lambda {
18
+ feed = MediaFeed::Feed.new('check out this invalid url')
19
+ }.should raise_error(MediaFeed::InvalidUrl)
20
+ end
21
+
22
+ end
23
+
24
+ describe MediaFeed::Feed, '.fetch' do
25
+ it 'should raise an error when the url is unreachable at fetch' do
26
+ lambda {
27
+ feed = MediaFeed::Feed.new('http://never.findthis.com/videofeed.xml')
28
+ feed.fetch
29
+ }.should raise_error(MediaFeed::InvalidXML)
30
+ end
31
+
32
+ it 'should fetch valid items from video feed TED talks' do
33
+ lambda {
34
+ feed = MediaFeed::Feed.new('http://feeds.feedburner.com/tedtalks_video')
35
+ feed.stubs(:get_feed).returns(stub_response('tedtalks_video'))
36
+ feed.fetch
37
+ feed.items.should_not be_nil
38
+ feed.items.should have_at_least(1).items
39
+ }.should_not raise_error
40
+ end
41
+
42
+ it 'should fetch valid items from video feed NASA' do
43
+ lambda {
44
+ feed = MediaFeed::Feed.new('http://www.nasa.gov/rss/NASAcast_vodcast')
45
+ feed.stubs(:get_feed).returns(stub_response('NASAcast_vodcast'))
46
+ feed.fetch
47
+ feed.items.should_not be_nil
48
+ feed.items.should have_at_least(1).items
49
+ }.should_not raise_error
50
+ end
51
+
52
+ it 'should fetch valid items from video feed Diggnation' do
53
+ lambda {
54
+ feed = MediaFeed::Feed.new('http://revision3.com/diggnation/feed/quicktime-large/')
55
+ feed.stubs(:get_feed).returns(stub_response('diggnation'))
56
+ feed.fetch
57
+ feed.items.should_not be_nil
58
+ feed.items.should have_at_least(1).items
59
+ }.should_not raise_error
60
+ end
61
+
62
+ end
63
+
64
+ describe MediaFeed::Feed, '.fetch_since' do
65
+
66
+ it 'should not work with invalid last date' do
67
+ feed = MediaFeed::Feed.new('http://www.green.tv/!video.feed.rss/highlights')
68
+ lambda {
69
+ feed.fetch_since('no date here')
70
+ }.should raise_error(MediaFeed::InvalidDate)
71
+ end
72
+
73
+ it 'should raise an error with no date' do
74
+ feed = MediaFeed::Feed.new('http://www.green.tv/!video.feed.rss/highlights')
75
+ lambda {
76
+ feed.fetch_since(nil)
77
+ }.should raise_error(MediaFeed::InvalidDate)
78
+ end
79
+
80
+ it 'should not fetch items if no new ones since last date' do
81
+ feed = MediaFeed::Feed.new('http://feeds.feedburner.com/tedtalks_video')
82
+ feed.stubs(:get_feed).returns(stub_response('tedtalks_video'))
83
+ feed.fetch
84
+ date = feed.pubDate
85
+ feed2 = MediaFeed::Feed.new('http://feeds.feedburner.com/tedtalks_video')
86
+ feed.stubs(:get_feed).returns(stub_response('tedtalks_video'))
87
+ feed2.fetch_since(date)
88
+ feed2.items.should be_nil
89
+ end
90
+
91
+ it 'should only fetch the items that are new since last fetch if last date is given' do
92
+ feed = MediaFeed::Feed.new('http://feeds.pirillo.com/ChrisPirilloShow')
93
+ feed.stubs(:get_feed).returns(stub_response('ChrisPirilloShow'))
94
+ feed.fetch_since('Sat, 06 Sep 2008 11:59:15 +0000')
95
+ feed.items.should have(6).items
96
+ end
97
+
98
+ it 'should work when no new ones and pubDate' do
99
+ feed = MediaFeed::Feed.new('http://www.nasa.gov/rss/NASAcast_vodcast.rss ')
100
+ feed.stubs(:get_feed).returns(stub_response('NASAcast_vodcast'))
101
+ feed.fetch_since("Fri, 05 Sep 2008 18:00:00 +0200")
102
+ feed.items.should have(2).items
103
+ end
104
+
105
+ end
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ gem 'rspec', '~> 1.1.3'
3
+ require 'spec'
4
+
5
+ # add library's lib directory
6
+ $:.unshift File.dirname(__FILE__) + '/../lib'
7
+
8
+ Spec::Runner.configure do |config|
9
+ config.mock_with :mocha
10
+ end
11
+
12
+ def stub_response(name)
13
+ File.open(File.dirname(__FILE__) + "/feeds/#{name}").read
14
+ end
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elisehuard-media_feed
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Elise Huard
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-09-11 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: libxml-ruby
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">"
21
+ - !ruby/object:Gem::Version
22
+ version: 0.0.0
23
+ version:
24
+ description:
25
+ email: mediafeed@elisehuard.be
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
32
+ files:
33
+ - lib/media_feed.rb
34
+ has_rdoc: true
35
+ homepage: http://github.com/elisehuard/media_feed
36
+ post_install_message:
37
+ rdoc_options: []
38
+
39
+ require_paths:
40
+ - - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ requirements: []
54
+
55
+ rubyforge_project:
56
+ rubygems_version: 1.2.0
57
+ signing_key:
58
+ specification_version: 2
59
+ summary: Gem to easily extract information out of a media feed
60
+ test_files:
61
+ - spec/media_feed_spec.rb
62
+ - spec/spec_helper.rb
63
+ - spec/feeds/ChrisPirilloShow
64
+ - spec/feeds/NASAcast_vodcast
65
+ - spec/feeds/tedtalks_video
66
+ - spec/feeds/diggnation