itunes 0.3.0 → 0.4.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.
@@ -0,0 +1,164 @@
1
+ require 'spec_helper'
2
+
3
+ describe ITunes::Client do
4
+
5
+ use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method]
6
+
7
+ describe ".lookup" do
8
+ before(:each) do
9
+ @client = ITunes::Client.new
10
+ end
11
+
12
+ it "should return results for valid ids" do
13
+ item = @client.lookup('396405320')
14
+ item.results.first.collection_name.should == 'Hold it Down - Single'
15
+ item.results.first.primary_genre_name == 'Dance'
16
+ end
17
+
18
+ describe "when using amg ids" do
19
+ describe "artist ids" do
20
+ it "should return a valid item when passed a single id" do
21
+ items = @client.lookup('468749', :id_type => :amg_artist)
22
+ items.result_count.should == 2
23
+ end
24
+
25
+ it "should return a results when passed a comma separated string of ids" do
26
+ items = @client.lookup('468749,5723', :id_type => :amg_artist)
27
+ items.result_count.should == 3
28
+ end
29
+
30
+ it "should return results when passed an array of ids" do
31
+ items = @client.lookup(['468749','5723'], :id_type => :amg_artist)
32
+ items.result_count.should == 3
33
+ end
34
+ end
35
+
36
+
37
+ describe "album ids" do
38
+ it "should return a valid item when passed a single id" do
39
+ items = @client.lookup('15197', :id_type => :amg_album)
40
+ items.results.first.artist_name.should == 'Wilson Pickett'
41
+ end
42
+
43
+ it "should return a results when passed a comma separated string of ids" do
44
+ items = @client.lookup('15197,15198', :id_type => :amg_album)
45
+ items.results.first.artist_name.should == 'Wilson Pickett'
46
+ end
47
+
48
+ it "should return results when passed an array of ids" do
49
+ items = @client.lookup(['15197','15198'], :id_type => :amg_album)
50
+ items.results.first.artist_name.should == 'Wilson Pickett'
51
+ end
52
+ end
53
+ end
54
+
55
+ describe "when using a upc id" do
56
+ it "should return a valid item when passed a single id" do
57
+ items = @client.lookup('075678317729', :id_type => :upc)
58
+ end
59
+ end
60
+
61
+ describe "when passing an id_type other than amg or upc" do
62
+ it "should raise an error" do
63
+ lambda {
64
+ @client.lookup('1235', :id_type => :lastfm)
65
+ }.should raise_error
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "search" do
71
+ before(:each) do
72
+ @client = ITunes::Client.new
73
+ end
74
+
75
+ describe ".all" do
76
+ it "should raise an ArgumentError when passed a nil search term" do
77
+ lambda {
78
+ @client.all(nil)
79
+ }.should raise_error
80
+ end
81
+
82
+ it "should raise an ArgumentError when passed an empty string as a search term" do
83
+ lambda {
84
+ @client.all('')
85
+ }.should raise_error
86
+ end
87
+
88
+ it "should accept a limit option" do
89
+ response = @client.all('Michael Jackson', :limit => 2)
90
+ response.result_count.should == 2
91
+ end
92
+
93
+ it "should ignore the limit when set to 0" do
94
+ @client.limit = 0
95
+ response = @client.all('Michael Jackson')
96
+ response.result_count.should > 0
97
+ end
98
+ end
99
+
100
+ describe ".music" do
101
+ it "should return music results" do
102
+ response = @client.music('Jose James')
103
+ response.results.each do |result|
104
+ result.kind.should == 'song'
105
+ end
106
+ end
107
+ end
108
+
109
+ describe ".podcast" do
110
+ it "should return podcast results" do
111
+ response = @client.podcast('Beyondjazz')
112
+ response.results.each do |result|
113
+ result.kind.should == 'podcast'
114
+ end
115
+ end
116
+ end
117
+
118
+ describe ".movie" do
119
+ it "should return movie results" do
120
+ response = @client.movie('Blade Runner')
121
+ response.results.each do |result|
122
+ result.kind.should == 'feature-movie'
123
+ end
124
+ end
125
+ end
126
+
127
+ describe ".music_video" do
128
+ it "should return music video results" do
129
+ response = @client.music_video('Sabotage')
130
+ response.results.each do |result|
131
+ result.kind.should == 'music-video'
132
+ end
133
+ end
134
+ end
135
+
136
+ describe ".audiobook" do
137
+ it "should return audiobook results" do
138
+ response = @client.audiobook('Ernest Hemingway')
139
+ response.results.each do |result|
140
+ result.wrapper_type.should == 'audiobook'
141
+ end
142
+ end
143
+ end
144
+
145
+ describe ".short_film" do
146
+ it "should return short film results" do
147
+ response = @client.short_film('Pixar')
148
+ response.results.each do |result|
149
+ result.kind.should == 'feature-movie'
150
+ end
151
+ end
152
+ end
153
+
154
+ describe ".tv_show" do
155
+ it "should return tv show results" do
156
+ response = @client.tv_show('Lost')
157
+ response.results.each do |result|
158
+ result.kind.should == 'tv-episode'
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ end
@@ -0,0 +1,55 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe ITunes do
4
+ after do
5
+ ITunes.reset
6
+ end
7
+
8
+ use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method]
9
+
10
+ context "when delegating to a client" do
11
+
12
+ it "should return the same results as a client" do
13
+ ITunes.music('Jose James').should == ITunes::Client.new.music('Jose James')
14
+ end
15
+
16
+ end
17
+
18
+ describe ".limit" do
19
+ it 'should return the default limit' do
20
+ ITunes.limit.should == ITunes::Configuration::DEFAULT_LIMIT
21
+ end
22
+ end
23
+
24
+ describe ".limit=" do
25
+ it "should set the limit" do
26
+ ITunes.limit = 5
27
+ ITunes.limit.should == 5
28
+ end
29
+ end
30
+
31
+ describe ".adapter" do
32
+ it "should instantiate with the default adapter" do
33
+ ITunes.adapter.should == Faraday.default_adapter
34
+ end
35
+ end
36
+
37
+ describe ".adapter=" do
38
+ it "should set the adapter" do
39
+ ITunes.adapter = :typhoeus
40
+ ITunes.adapter.should == :typhoeus
41
+ end
42
+ end
43
+
44
+ describe ".configure" do
45
+
46
+ ITunes::Configuration::VALID_OPTIONS_KEYS.each do |key|
47
+ it "should set the #{key}" do
48
+ ITunes.configure do |config|
49
+ config.send("#{key}=", key)
50
+ ITunes.send(key).should == key
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,20 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_group 'ITunes', 'lib/itunes'
4
+ add_group 'Faraday Middleware', 'lib/faraday'
5
+ add_group 'Specs', 'spec'
6
+ end
7
+
8
+ require File.expand_path('../../lib/itunes', __FILE__)
9
+
10
+ require 'rspec'
11
+ require 'vcr'
12
+
13
+ RSpec.configure do |c|
14
+ c.extend VCR::RSpec::Macros
15
+ end
16
+
17
+ VCR.config do |c|
18
+ c.cassette_library_dir = 'spec/fixtures'
19
+ c.stub_with :webmock
20
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itunes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 0.3.0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Garrett Bjerkhoel
@@ -15,24 +15,228 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-05 00:00:00 -07:00
18
+ date: 2011-02-11 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: httparty
22
+ name: bundler
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ">="
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 1
32
+ - 0
33
+ version: "1.0"
34
+ type: :development
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 27
45
+ segments:
46
+ - 0
47
+ - 8
48
+ version: "0.8"
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rspec
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 27
60
+ segments:
61
+ - 2
62
+ - 5
63
+ - 0
64
+ version: 2.5.0
65
+ type: :development
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: yard
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 7
76
+ segments:
77
+ - 0
78
+ - 6
79
+ version: "0.6"
80
+ type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: maruku
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ hash: 7
91
+ segments:
92
+ - 0
93
+ - 6
94
+ version: "0.6"
95
+ type: :development
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
101
+ none: false
102
+ requirements:
103
+ - - ~>
104
+ - !ruby/object:Gem::Version
105
+ hash: 13
106
+ segments:
107
+ - 0
108
+ - 3
109
+ version: "0.3"
110
+ type: :development
111
+ version_requirements: *id006
112
+ - !ruby/object:Gem::Dependency
113
+ name: webmock
114
+ prerelease: false
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
28
119
  - !ruby/object:Gem::Version
29
120
  hash: 3
30
121
  segments:
122
+ - 1
123
+ - 6
124
+ version: "1.6"
125
+ type: :development
126
+ version_requirements: *id007
127
+ - !ruby/object:Gem::Dependency
128
+ name: vcr
129
+ prerelease: false
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ~>
134
+ - !ruby/object:Gem::Version
135
+ hash: 7
136
+ segments:
137
+ - 1
138
+ - 4
31
139
  - 0
32
- version: "0"
140
+ version: 1.4.0
141
+ type: :development
142
+ version_requirements: *id008
143
+ - !ruby/object:Gem::Dependency
144
+ name: json
145
+ prerelease: false
146
+ requirement: &id009 !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ~>
150
+ - !ruby/object:Gem::Version
151
+ hash: 1
152
+ segments:
153
+ - 1
154
+ - 5
155
+ - 1
156
+ version: 1.5.1
157
+ type: :development
158
+ version_requirements: *id009
159
+ - !ruby/object:Gem::Dependency
160
+ name: hashie
161
+ prerelease: false
162
+ requirement: &id010 !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ hash: 23
168
+ segments:
169
+ - 1
170
+ - 0
171
+ - 0
172
+ version: 1.0.0
33
173
  type: :runtime
34
- version_requirements: *id001
35
- description: iTunes API
174
+ version_requirements: *id010
175
+ - !ruby/object:Gem::Dependency
176
+ name: rash
177
+ prerelease: false
178
+ requirement: &id011 !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ~>
182
+ - !ruby/object:Gem::Version
183
+ hash: 23
184
+ segments:
185
+ - 0
186
+ - 2
187
+ - 0
188
+ version: 0.2.0
189
+ type: :runtime
190
+ version_requirements: *id011
191
+ - !ruby/object:Gem::Dependency
192
+ name: faraday
193
+ prerelease: false
194
+ requirement: &id012 !ruby/object:Gem::Requirement
195
+ none: false
196
+ requirements:
197
+ - - ~>
198
+ - !ruby/object:Gem::Version
199
+ hash: 3
200
+ segments:
201
+ - 0
202
+ - 5
203
+ - 4
204
+ version: 0.5.4
205
+ type: :runtime
206
+ version_requirements: *id012
207
+ - !ruby/object:Gem::Dependency
208
+ name: faraday_middleware
209
+ prerelease: false
210
+ requirement: &id013 !ruby/object:Gem::Requirement
211
+ none: false
212
+ requirements:
213
+ - - ~>
214
+ - !ruby/object:Gem::Version
215
+ hash: 17
216
+ segments:
217
+ - 0
218
+ - 3
219
+ - 1
220
+ version: 0.3.1
221
+ type: :runtime
222
+ version_requirements: *id013
223
+ - !ruby/object:Gem::Dependency
224
+ name: multi_json
225
+ prerelease: false
226
+ requirement: &id014 !ruby/object:Gem::Requirement
227
+ none: false
228
+ requirements:
229
+ - - ~>
230
+ - !ruby/object:Gem::Version
231
+ hash: 21
232
+ segments:
233
+ - 0
234
+ - 0
235
+ - 5
236
+ version: 0.0.5
237
+ type: :runtime
238
+ version_requirements: *id014
239
+ description:
36
240
  email: me@garrettbjerkhoel.com
37
241
  executables: []
38
242
 
@@ -42,10 +246,28 @@ extra_rdoc_files:
42
246
  - MIT-LICENSE
43
247
  - README.md
44
248
  files:
249
+ - .gitignore
250
+ - .rspec
251
+ - Gemfile
45
252
  - MIT-LICENSE
46
253
  - README.md
254
+ - Rakefile
255
+ - itunes.gemspec
256
+ - lib/faraday/rashify.rb
47
257
  - lib/itunes.rb
258
+ - lib/itunes/client.rb
259
+ - lib/itunes/client/lookup.rb
260
+ - lib/itunes/client/search.rb
261
+ - lib/itunes/configuration.rb
262
+ - lib/itunes/request.rb
48
263
  - lib/itunes/version.rb
264
+ - spec/faraday/rashify_spec.rb
265
+ - spec/fixtures/Faraday_Response_Rashify.yml
266
+ - spec/fixtures/ITunes.yml
267
+ - spec/fixtures/ITunes_Client.yml
268
+ - spec/itunes/client_spec.rb
269
+ - spec/itunes_spec.rb
270
+ - spec/spec_helper.rb
49
271
  has_rdoc: true
50
272
  homepage: http://github.com/dewski/itunes
51
273
  licenses: []
@@ -76,9 +298,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
298
  requirements: []
77
299
 
78
300
  rubyforge_project: itunes
79
- rubygems_version: 1.3.7
301
+ rubygems_version: 1.5.0
80
302
  signing_key:
81
303
  specification_version: 3
82
- summary: iTunes
83
- test_files: []
84
-
304
+ summary: iTunes API
305
+ test_files:
306
+ - spec/faraday/rashify_spec.rb
307
+ - spec/fixtures/Faraday_Response_Rashify.yml
308
+ - spec/fixtures/ITunes.yml
309
+ - spec/fixtures/ITunes_Client.yml
310
+ - spec/itunes/client_spec.rb
311
+ - spec/itunes_spec.rb
312
+ - spec/spec_helper.rb