itunes 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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