em-sofa 0.1.1

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.
Files changed (63) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/.yardopts +6 -0
  4. data/LICENSE +20 -0
  5. data/README.md +110 -0
  6. data/Rakefile +75 -0
  7. data/doc/Em-sofa/Mapping.html +168 -0
  8. data/doc/Em-sofa/Mapping/ClassMethods.html +314 -0
  9. data/doc/Em-sofa/Mapping/InstanceMethods.html +358 -0
  10. data/doc/Em-sofa/TVRage.html +85 -0
  11. data/doc/Em-sofa/TVRage/Episode.html +358 -0
  12. data/doc/Em-sofa/TVRage/Schedule.html +207 -0
  13. data/doc/Em-sofa/TVRage/Season.html +236 -0
  14. data/doc/Em-sofa/TVRage/Show.html +904 -0
  15. data/doc/Em-sofa/TVRage/Show/ShowNotFound.html +92 -0
  16. data/doc/Em-sofa/Version.html +100 -0
  17. data/doc/Sofa.html +85 -0
  18. data/doc/_index.html +233 -0
  19. data/doc/class_list.html +36 -0
  20. data/doc/css/common.css +1 -0
  21. data/doc/css/full_list.css +50 -0
  22. data/doc/css/style.css +277 -0
  23. data/doc/file.README.html +150 -0
  24. data/doc/file_list.html +38 -0
  25. data/doc/index.html +150 -0
  26. data/doc/js/app.js +138 -0
  27. data/doc/js/full_list.js +117 -0
  28. data/doc/js/jquery.js +19 -0
  29. data/doc/method_list.html +195 -0
  30. data/doc/top-level-namespace.html +88 -0
  31. data/lib/em-sofa.rb +8 -0
  32. data/lib/em-sofa/mapping.rb +108 -0
  33. data/lib/em-sofa/tvrage.rb +14 -0
  34. data/lib/em-sofa/tvrage/episode.rb +41 -0
  35. data/lib/em-sofa/tvrage/schedule.rb +28 -0
  36. data/lib/em-sofa/tvrage/season.rb +38 -0
  37. data/lib/em-sofa/tvrage/show.rb +193 -0
  38. data/lib/em-sofa/version.rb +10 -0
  39. data/spec/fixtures/tvrage/cases/castle.xml +228 -0
  40. data/spec/fixtures/tvrage/cases/community.xml +109 -0
  41. data/spec/fixtures/tvrage/cases/live_with_regis_and_kelly.xml +56237 -0
  42. data/spec/fixtures/tvrage/episode_list.xml +1183 -0
  43. data/spec/fixtures/tvrage/episode_list_one_season.xml +17 -0
  44. data/spec/fixtures/tvrage/episode_list_two_episodes.xml +25 -0
  45. data/spec/fixtures/tvrage/full_schedule.xml +4731 -0
  46. data/spec/fixtures/tvrage/full_show_info.xml +1291 -0
  47. data/spec/fixtures/tvrage/quickinfo.html +17 -0
  48. data/spec/fixtures/tvrage/quickinfo_missing.html +1 -0
  49. data/spec/fixtures/tvrage/search.xml +151 -0
  50. data/spec/fixtures/tvrage/show_info.xml +42 -0
  51. data/spec/fixtures/tvrage/show_info_blank.xml +3 -0
  52. data/spec/fixtures/tvrage/single_episode.xml +8 -0
  53. data/spec/sofa/mapping_spec.rb +82 -0
  54. data/spec/sofa/tvrage/cases_spec.rb +29 -0
  55. data/spec/sofa/tvrage/episode_spec.rb +45 -0
  56. data/spec/sofa/tvrage/schedule_spec.rb +17 -0
  57. data/spec/sofa/tvrage/season_spec.rb +61 -0
  58. data/spec/sofa/tvrage/show_spec.rb +201 -0
  59. data/spec/sofa/version_spec.rb +11 -0
  60. data/spec/sofa_spec.rb +5 -0
  61. data/spec/spec.opts +1 -0
  62. data/spec/spec_helper.rb +20 -0
  63. metadata +165 -0
@@ -0,0 +1,201 @@
1
+ require './spec_helper'
2
+
3
+ module EventMachine::Sofa::TVRage
4
+
5
+ EM.describe EventMachine::Sofa::TVRage do
6
+ describe "greedy" do
7
+ before do
8
+ @id = "2930"
9
+ @show_xml = File.read("spec/fixtures/tvrage/show_info.xml")
10
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/showinfo.php?sid=#{@id}", :body => @show_xml)
11
+ @xml = File.read("spec/fixtures/tvrage/full_show_info.xml")
12
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/full_show_info.php?sid=#{@id}", :body => @xml)
13
+ end
14
+
15
+ should "use full show info" do
16
+ Show.full_info @id do |full_info|
17
+ full_info.should.be {}
18
+ done
19
+ end
20
+ #Show.new(@id, :greedy => true)
21
+ end
22
+
23
+ should "use full show info for season list" do
24
+ Show.new(@id) do |show|
25
+ #Show.expects(:episode_list).with(@id).never
26
+ Show.new(@id, :greedy => true) do |full_show|
27
+ full_show.season_list do |full_show_season_list|
28
+ show.season_list do |show_season_list|
29
+ full_show_season_list.should.be show_season_list
30
+ done
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ =begin
40
+ describe Show do
41
+ before do
42
+ @id = "2930"
43
+ @show_xml = File.read("spec/fixtures/tvrage/show_info.xml")
44
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/showinfo.php?sid=#{@id}", :body => @show_xml)
45
+ end
46
+
47
+ describe "with id" do
48
+ subject { Show.new(@id) }
49
+
50
+ { :show_id => "2930",
51
+ :show_link => "http://tvrage.com/Buffy_The_Vampire_Slayer",
52
+ :started => "1997",
53
+ :network => "UPN",
54
+ :air_time => "20:00",
55
+ :time_zone => "GMT-5 -DST",
56
+ :run_time => "60",
57
+ :origin_country => "US",
58
+ :air_day => "Tuesday",
59
+ :ended => "May/20/2003",
60
+ :classification => "Scripted",
61
+ :seasons => "7",
62
+ :start_date => "Mar/10/1997",
63
+ :status => "Canceled/Ended",
64
+ :genres => [
65
+ "Action",
66
+ "Adventure",
67
+ "Comedy",
68
+ "Drama",
69
+ "Mystery",
70
+ "Sci-Fi"
71
+ ],
72
+ :name => "Buffy the Vampire Slayer",
73
+ :akas => [
74
+ "Buffy & vampyrerna",
75
+ "Buffy - Im Bann der Dämonen",
76
+ "Buffy - Vampyrenes skrekk",
77
+ "Buffy a vámpírok réme",
78
+ "Buffy Contre les Vampires",
79
+ "Buffy l'Ammazza Vampiri",
80
+ "Buffy postrach wampirów",
81
+ "Buffy, a Caça-Vampiros",
82
+ "Buffy, a Caçadora de Vampiros",
83
+ "Buffy, Cazavampiros",
84
+ "Buffy, ubojica vampira",
85
+ "Buffy, vampyyrintappaja",
86
+ "Vampiiritapja Buffy",
87
+ "Vampírubaninn Buffy"
88
+ ]
89
+ }.each do |attr, value|
90
+ it "should get ##{attr}" do
91
+ subject.send(attr).should == value
92
+ end
93
+ end
94
+
95
+ describe "with 1 season" do
96
+ before do
97
+ @episodes_xml = File.read("spec/fixtures/tvrage/episode_list_one_season.xml")
98
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/episode_list.php?sid=#{@id}", :body => @episodes_xml)
99
+ @info = Crack::XML.parse(@episodes_xml)
100
+ @seasons = [Season.new(@info["Show"]["Episodelist"]["Season"])]
101
+ end
102
+
103
+ it "should get season_list" do
104
+ subject.season_list.should == @seasons
105
+ end
106
+
107
+ it "should get episode_list" do
108
+ subject.episode_list.should == @seasons.map { |season| season.episodes }.flatten
109
+ end
110
+ end
111
+
112
+ describe "with multiple seasons" do
113
+ before do
114
+ @episodes_xml = File.read("spec/fixtures/tvrage/episode_list.xml")
115
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/episode_list.php?sid=#{@id}", :body => @episodes_xml)
116
+ @info = Crack::XML.parse(@episodes_xml)
117
+ @seasons = []
118
+ @info["Show"]["Episodelist"]["Season"].each do |season|
119
+ @seasons << Season.new(season)
120
+ end
121
+ end
122
+
123
+ it "should get season_list" do
124
+ subject.season_list.should == @seasons
125
+ end
126
+
127
+ it "should get episode_list" do
128
+ subject.episode_list.should == @seasons.map { |season| season.episodes }.flatten
129
+ end
130
+ end
131
+ end
132
+
133
+ describe "without id" do
134
+ it "should raise error" do
135
+ lambda {
136
+ Show.new(nil)
137
+ }.should raise_error(RuntimeError, "id is required")
138
+ end
139
+ end
140
+
141
+ it "should get full show info" do
142
+ @xml = File.read("spec/fixtures/tvrage/full_show_info.xml")
143
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/full_show_info.php?sid=#{@id}", :body => @xml)
144
+
145
+ Show.full_info(@id).should == Crack::XML.parse(@xml)["Show"]
146
+ end
147
+
148
+ it "should get show by name" do
149
+ @html = File.read("spec/fixtures/tvrage/quickinfo.html")
150
+ @name = "The Colbert Report"
151
+ @id = "6715"
152
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/tools/quickinfo.php?show=#{URI.escape(@name)}", :body => @html)
153
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/showinfo.php?sid=#{@id}", :body => @show_xml)
154
+
155
+ Show.by_name(@name).should be_kind_of(Show)
156
+ end
157
+
158
+ it "should raise error when get show by missing name" do
159
+ @html = File.read("spec/fixtures/tvrage/quickinfo_missing.html")
160
+ @name = "The Colbert Report"
161
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/tools/quickinfo.php?show=#{URI.escape(@name)}", :body => @html)
162
+
163
+ lambda {
164
+ Show.by_name(@name)
165
+ }.should raise_error(Show::ShowNotFound)
166
+ end
167
+
168
+ it "should get show by name with options" do
169
+ @html = File.read("spec/fixtures/tvrage/quickinfo.html")
170
+ @name = "The Colbert Report"
171
+ @id = "6715"
172
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/tools/quickinfo.php?show=#{URI.escape(@name)}", :body => @html)
173
+ Show.expects(:new).with(@id, options = mock)
174
+
175
+ Show.by_name(@name, options)
176
+ end
177
+
178
+ describe "greedy" do
179
+ before do
180
+ @xml = File.read("spec/fixtures/tvrage/full_show_info.xml")
181
+ FakeWeb.register_uri(:get, "http://services.tvrage.com/feeds/full_show_info.php?sid=#{@id}", :body => @xml)
182
+ end
183
+
184
+ it "should use full show info" do
185
+ Show.expects(:full_info).with(@id).returns({})
186
+ Show.new(@id, :greedy => true)
187
+ end
188
+
189
+ it "should use full show info for season list" do
190
+ Show.new(@id) do |show|
191
+ Show.expects(:episode_list).with(@id).never
192
+ Show.new(@id, :greedy => true) do |full_show|
193
+ full_show.season_list.should == show.season_list
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+
200
+ end
201
+ =end
@@ -0,0 +1,11 @@
1
+ require './spec_helper'
2
+
3
+ module EventMachine::Sofa
4
+
5
+ describe Version do
6
+ it "should get version" do
7
+ Version::STRING.should == "#{Version::MAJOR}.#{Version::MINOR}.#{Version::PATCH}"
8
+ end
9
+ end
10
+
11
+ end
data/spec/sofa_spec.rb ADDED
@@ -0,0 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Em-sofa" do
4
+
5
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,20 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rubygems'
4
+ #require 'eventmachine'
5
+ require 'bacon'
6
+ require './em-spec/bacon'
7
+ require './em-sofa'
8
+ #require 'mocha'
9
+
10
+ EM.spec_backend = EventMachine::Spec::Bacon
11
+ #require 'spec'
12
+ #require 'spec/autorun'
13
+
14
+ require 'fakeweb'
15
+
16
+ FakeWeb.allow_net_connect = false
17
+
18
+ #Spec::Runner.configure do |config|
19
+ # config.mock_with :mocha
20
+ #end
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: em-sofa
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - DeFirence
9
+ - Henry Hsu
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2011-05-03 00:00:00.000000000 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: em-http-request
18
+ requirement: &25095300 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *25095300
27
+ - !ruby/object:Gem::Dependency
28
+ name: crack
29
+ requirement: &25095012 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *25095012
38
+ - !ruby/object:Gem::Dependency
39
+ name: fakeweb
40
+ requirement: &25094724 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *25094724
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ requirement: &25094436 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *25094436
60
+ description: A simple EventMachine based Ruby library for the TVRage API.
61
+ email: defirence@defirence.za.net
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files:
65
+ - LICENSE
66
+ - README.md
67
+ files:
68
+ - .document
69
+ - .gitignore
70
+ - .yardopts
71
+ - LICENSE
72
+ - README.md
73
+ - Rakefile
74
+ - doc/Em-sofa/Mapping.html
75
+ - doc/Em-sofa/Mapping/ClassMethods.html
76
+ - doc/Em-sofa/Mapping/InstanceMethods.html
77
+ - doc/Em-sofa/TVRage.html
78
+ - doc/Em-sofa/TVRage/Episode.html
79
+ - doc/Em-sofa/TVRage/Schedule.html
80
+ - doc/Em-sofa/TVRage/Season.html
81
+ - doc/Em-sofa/TVRage/Show.html
82
+ - doc/Em-sofa/TVRage/Show/ShowNotFound.html
83
+ - doc/Em-sofa/Version.html
84
+ - doc/Sofa.html
85
+ - doc/_index.html
86
+ - doc/class_list.html
87
+ - doc/css/common.css
88
+ - doc/css/full_list.css
89
+ - doc/css/style.css
90
+ - doc/file.README.html
91
+ - doc/file_list.html
92
+ - doc/index.html
93
+ - doc/js/app.js
94
+ - doc/js/full_list.js
95
+ - doc/js/jquery.js
96
+ - doc/method_list.html
97
+ - doc/top-level-namespace.html
98
+ - lib/em-sofa.rb
99
+ - lib/em-sofa/mapping.rb
100
+ - lib/em-sofa/tvrage.rb
101
+ - lib/em-sofa/tvrage/episode.rb
102
+ - lib/em-sofa/tvrage/schedule.rb
103
+ - lib/em-sofa/tvrage/season.rb
104
+ - lib/em-sofa/tvrage/show.rb
105
+ - lib/em-sofa/version.rb
106
+ - spec/fixtures/tvrage/cases/castle.xml
107
+ - spec/fixtures/tvrage/cases/community.xml
108
+ - spec/fixtures/tvrage/cases/live_with_regis_and_kelly.xml
109
+ - spec/fixtures/tvrage/episode_list.xml
110
+ - spec/fixtures/tvrage/episode_list_one_season.xml
111
+ - spec/fixtures/tvrage/episode_list_two_episodes.xml
112
+ - spec/fixtures/tvrage/full_schedule.xml
113
+ - spec/fixtures/tvrage/full_show_info.xml
114
+ - spec/fixtures/tvrage/quickinfo.html
115
+ - spec/fixtures/tvrage/quickinfo_missing.html
116
+ - spec/fixtures/tvrage/search.xml
117
+ - spec/fixtures/tvrage/show_info.xml
118
+ - spec/fixtures/tvrage/show_info_blank.xml
119
+ - spec/fixtures/tvrage/single_episode.xml
120
+ - spec/sofa/mapping_spec.rb
121
+ - spec/sofa/tvrage/cases_spec.rb
122
+ - spec/sofa/tvrage/episode_spec.rb
123
+ - spec/sofa/tvrage/schedule_spec.rb
124
+ - spec/sofa/tvrage/season_spec.rb
125
+ - spec/sofa/tvrage/show_spec.rb
126
+ - spec/sofa/version_spec.rb
127
+ - spec/sofa_spec.rb
128
+ - spec/spec.opts
129
+ - spec/spec_helper.rb
130
+ has_rdoc: true
131
+ homepage: http://github.com/DeFirence/em-sofa
132
+ licenses: []
133
+ post_install_message:
134
+ rdoc_options:
135
+ - --charset=UTF-8
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 1.5.2
153
+ signing_key:
154
+ specification_version: 3
155
+ summary: An EventMachine based Ruby library for the TVRage API.
156
+ test_files:
157
+ - spec/sofa/mapping_spec.rb
158
+ - spec/sofa/tvrage/cases_spec.rb
159
+ - spec/sofa/tvrage/episode_spec.rb
160
+ - spec/sofa/tvrage/schedule_spec.rb
161
+ - spec/sofa/tvrage/season_spec.rb
162
+ - spec/sofa/tvrage/show_spec.rb
163
+ - spec/sofa/version_spec.rb
164
+ - spec/sofa_spec.rb
165
+ - spec/spec_helper.rb