gems 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,12 +5,11 @@ describe Gems::Client do
5
5
  Gems.reset
6
6
  end
7
7
 
8
- describe ".info" do
8
+ describe "#info" do
9
9
  before do
10
10
  stub_get("/api/v1/gems/rails.yaml").
11
11
  to_return(:body => fixture("rails.yaml"))
12
12
  end
13
-
14
13
  it "should return some basic information about the given gem" do
15
14
  info = Gems.info 'rails'
16
15
  a_get("/api/v1/gems/rails.yaml").
@@ -19,13 +18,12 @@ describe Gems::Client do
19
18
  end
20
19
  end
21
20
 
22
- describe ".search" do
21
+ describe "#search" do
23
22
  before do
24
23
  stub_get("/api/v1/search.yaml").
25
24
  with(:query => {"query" => "cucumber"}).
26
25
  to_return(:body => fixture("search.yaml"))
27
26
  end
28
-
29
27
  it "should return an array of active gems that match the query" do
30
28
  search = Gems.search 'cucumber'
31
29
  a_get("/api/v1/search.yaml").
@@ -35,12 +33,117 @@ describe Gems::Client do
35
33
  end
36
34
  end
37
35
 
38
- describe ".versions" do
36
+ describe "#gems" do
37
+ context "with no user handle specified" do
38
+ before do
39
+ stub_get("/api/v1/gems.yaml").
40
+ to_return(:body => fixture("gems.yaml"))
41
+ end
42
+ it "should list all gems that you own" do
43
+ gems = Gems.gems
44
+ a_get("/api/v1/gems.yaml").
45
+ should have_been_made
46
+ gems.first['name'].should == "exchb"
47
+ end
48
+ end
49
+ context "with a user handle specified" do
50
+ before do
51
+ stub_get("/api/v1/owners/sferik/gems.yaml").
52
+ to_return(:body => fixture("gems.yaml"))
53
+ end
54
+ it "should list all gems that the specified user owns" do
55
+ gems = Gems.gems("sferik")
56
+ a_get("/api/v1/owners/sferik/gems.yaml").
57
+ should have_been_made
58
+ gems.first['name'].should == "exchb"
59
+ end
60
+ end
61
+ end
62
+
63
+ describe "#push" do
64
+ before do
65
+ stub_post("/api/v1/gems").
66
+ to_return(:body => fixture("push"))
67
+ end
68
+ it "should submit a gem to RubyGems.org" do
69
+ push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb"))
70
+ a_post("/api/v1/gems").
71
+ should have_been_made
72
+ push.should == "Successfully registered gem: gems (0.0.8)"
73
+ end
74
+ end
75
+
76
+ describe "#yank" do
77
+ context "with no version specified" do
78
+ before do
79
+ stub_get("/api/v1/gems/gems.yaml").
80
+ to_return(:body => fixture("rails.yaml"))
81
+ stub_delete("/api/v1/gems/yank").
82
+ with(:query => {:gem_name => "gems", :version => "3.0.9"}).
83
+ to_return(:body => fixture("yank"))
84
+ end
85
+ it "should remove a gem from RubyGems.org's index" do
86
+ yank = Gems.yank("gems")
87
+ a_delete("/api/v1/gems/yank").
88
+ with(:query => {:gem_name => "gems", :version => "3.0.9"}).
89
+ should have_been_made
90
+ yank.should == "Successfully yanked gem: gems (0.0.8)"
91
+ end
92
+ end
93
+ context "with a version specified" do
94
+ before do
95
+ stub_delete("/api/v1/gems/yank").
96
+ with(:query => {:gem_name => "gems", :version => "0.0.8"}).
97
+ to_return(:body => fixture("yank"))
98
+ end
99
+ it "should remove a gem from RubyGems.org's index" do
100
+ yank = Gems.yank("gems", "0.0.8")
101
+ a_delete("/api/v1/gems/yank").
102
+ with(:query => {:gem_name => "gems", :version => "0.0.8"}).
103
+ should have_been_made
104
+ yank.should == "Successfully yanked gem: gems (0.0.8)"
105
+ end
106
+ end
107
+ end
108
+
109
+ describe "#unyank" do
110
+ context "with no version specified" do
111
+ before do
112
+ stub_get("/api/v1/gems/gems.yaml").
113
+ to_return(:body => fixture("rails.yaml"))
114
+ stub_put("/api/v1/gems/unyank").
115
+ with(:body => {:gem_name => "gems", :version => "3.0.9"}).
116
+ to_return(:body => fixture("unyank"))
117
+ end
118
+ it "should update a previously yanked gem back into RubyGems.org's index" do
119
+ unyank = Gems.unyank("gems")
120
+ a_put("/api/v1/gems/unyank").
121
+ with(:body => {:gem_name => "gems", :version => "3.0.9"}).
122
+ should have_been_made
123
+ unyank.should == "Successfully unyanked gem: gems (0.0.8)"
124
+ end
125
+ end
126
+ context "with a version specified" do
127
+ before do
128
+ stub_put("/api/v1/gems/unyank").
129
+ with(:body => {:gem_name => "gems", :version => "0.0.8"}).
130
+ to_return(:body => fixture("unyank"))
131
+ end
132
+ it "should update a previously yanked gem back into RubyGems.org's index" do
133
+ unyank = Gems.unyank("gems", "0.0.8")
134
+ a_put("/api/v1/gems/unyank").
135
+ with(:body => {:gem_name => "gems", :version => "0.0.8"}).
136
+ should have_been_made
137
+ unyank.should == "Successfully unyanked gem: gems (0.0.8)"
138
+ end
139
+ end
140
+ end
141
+
142
+ describe "#versions" do
39
143
  before do
40
144
  stub_get("/api/v1/versions/script_helpers.yaml").
41
145
  to_return(:body => fixture("script_helpers.yaml"))
42
146
  end
43
-
44
147
  it "should return an array of gem version details" do
45
148
  versions = Gems.versions 'script_helpers'
46
149
  a_get("/api/v1/versions/script_helpers.yaml").
@@ -49,13 +152,12 @@ describe Gems::Client do
49
152
  end
50
153
  end
51
154
 
52
- describe ".total_downloads" do
155
+ describe "#total_downloads" do
53
156
  context "with no version or gem name specified" do
54
157
  before do
55
158
  stub_get("/api/v1/downloads.yaml").
56
159
  to_return(:body => fixture("total_downloads.yaml"))
57
160
  end
58
-
59
161
  it "should return the total number of downloads on RubyGems.org" do
60
162
  downloads = Gems.total_downloads
61
163
  a_get("/api/v1/downloads.yaml").
@@ -63,7 +165,6 @@ describe Gems::Client do
63
165
  downloads[:total].should == 244368950
64
166
  end
65
167
  end
66
-
67
168
  context "with no version specified" do
68
169
  before do
69
170
  stub_get("/api/v1/gems/rails_admin.yaml").
@@ -71,7 +172,6 @@ describe Gems::Client do
71
172
  stub_get("/api/v1/downloads/rails_admin-3.0.9.yaml").
72
173
  to_return(:body => fixture("rails_admin-0.0.0.yaml"))
73
174
  end
74
-
75
175
  it "should the total number of downloads for the specified gem" do
76
176
  downloads = Gems.total_downloads('rails_admin')
77
177
  a_get("/api/v1/gems/rails_admin.yaml").
@@ -82,13 +182,11 @@ describe Gems::Client do
82
182
  downloads[:total_downloads].should == 3142
83
183
  end
84
184
  end
85
-
86
185
  context "with a version specified" do
87
186
  before do
88
187
  stub_get("/api/v1/downloads/rails_admin-0.0.0.yaml").
89
188
  to_return(:body => fixture("rails_admin-0.0.0.yaml"))
90
189
  end
91
-
92
190
  it "should the total number of downloads for the specified gem" do
93
191
  downloads = Gems.total_downloads('rails_admin', '0.0.0')
94
192
  a_get("/api/v1/downloads/rails_admin-0.0.0.yaml").
@@ -97,28 +195,41 @@ describe Gems::Client do
97
195
  downloads[:total_downloads].should == 3142
98
196
  end
99
197
  end
198
+ end
100
199
 
200
+ describe "#most_downloaded_today" do
201
+ context "with nothing specified" do
202
+ before do
203
+ stub_get("/api/v1/downloads/top.yaml").
204
+ to_return(:body => fixture("most_downloaded_today.yaml"))
205
+ end
206
+ it "should return the most downloaded versions today" do
207
+ most_downloaded = Gems.most_downloaded_today
208
+ a_get("/api/v1/downloads/top.yaml").
209
+ should have_been_made
210
+ most_downloaded.first.first['full_name'].should == "rake-0.9.2.2"
211
+ most_downloaded.first.last.should == 9801
212
+ end
213
+ end
101
214
  end
102
215
 
103
- describe ".most_downloaded" do
216
+ describe "#most_downloaded" do
104
217
  context "with nothing specified" do
105
218
  before do
106
219
  stub_get("/api/v1/downloads/all.yaml").
107
- to_return(:body => fixture("most_downloaded.yaml"))
220
+ to_return(:body => fixture("most_downloaded.yaml"))
108
221
  end
109
-
110
222
  it "should return the most downloaded versions" do
111
223
  most_downloaded = Gems.most_downloaded
112
224
  a_get("/api/v1/downloads/all.yaml").
113
225
  should have_been_made
114
- most_downloaded[:gems].first.first['full_name'].should == "abstract-1.0.0"
115
- most_downloaded[:gems].first[1].should == 1
226
+ most_downloaded.first.first['full_name'].should == "abstract-1.0.0"
227
+ most_downloaded.first.last.should == 1
116
228
  end
117
229
  end
118
230
  end
119
231
 
120
- describe ".downloads" do
121
-
232
+ describe "#downloads" do
122
233
  context "with no dates or version specified" do
123
234
  before do
124
235
  stub_get("/api/v1/gems/coulda.yaml").
@@ -126,7 +237,6 @@ describe Gems::Client do
126
237
  stub_get("/api/v1/versions/coulda-3.0.9/downloads.yaml").
127
238
  to_return(:body => fixture("downloads.yaml"))
128
239
  end
129
-
130
240
  it "should return the number of downloads by day for a particular gem version" do
131
241
  downloads = Gems.downloads 'coulda'
132
242
  a_get("/api/v1/gems/coulda.yaml").
@@ -136,13 +246,11 @@ describe Gems::Client do
136
246
  downloads['2011-06-22'].should == 8
137
247
  end
138
248
  end
139
-
140
249
  context "with no dates specified" do
141
250
  before do
142
251
  stub_get("/api/v1/versions/coulda-0.6.3/downloads.yaml").
143
252
  to_return(:body => fixture("downloads.yaml"))
144
253
  end
145
-
146
254
  it "should return the number of downloads by day for a particular gem version" do
147
255
  downloads = Gems.downloads 'coulda', '0.6.3'
148
256
  a_get("/api/v1/versions/coulda-0.6.3/downloads.yaml").
@@ -150,14 +258,12 @@ describe Gems::Client do
150
258
  downloads['2011-06-22'].should == 8
151
259
  end
152
260
  end
153
-
154
261
  context "with from date specified" do
155
262
  before do
156
263
  stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
157
264
  with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}).
158
265
  to_return(:body => fixture("downloads.yaml"))
159
266
  end
160
-
161
267
  it "should return the number of downloads by day for a particular gem version" do
162
268
  downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01')
163
269
  a_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
@@ -166,14 +272,12 @@ describe Gems::Client do
166
272
  downloads['2011-06-22'].should == 8
167
273
  end
168
274
  end
169
-
170
275
  context "with from and to dates specified" do
171
276
  before do
172
277
  stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
173
278
  with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}).
174
279
  to_return(:body => fixture("downloads.yaml"))
175
280
  end
176
-
177
281
  it "should return the number of downloads by day for a particular gem version" do
178
282
  downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01'), Date.parse('2011-06-28')
179
283
  a_get("/api/v1/versions/coulda-0.6.3/downloads/search.yaml").
@@ -184,60 +288,11 @@ describe Gems::Client do
184
288
  end
185
289
  end
186
290
 
187
- describe ".dependencies" do
188
- before do
189
- stub_get("/api/v1/dependencies").
190
- with(:query => {"gems" => "rails,thor"}).
191
- to_return(:body => fixture("dependencies"))
192
- end
193
-
194
- it "should return an array of hashes for all versions of given gems" do
195
- dependencies = Gems.dependencies 'rails', 'thor'
196
- a_get("/api/v1/dependencies").
197
- with(:query => {"gems" => "rails,thor"}).
198
- should have_been_made
199
- dependencies.first[:number].should == "3.0.9"
200
- end
201
- end
202
-
203
- describe ".api_key" do
204
- before do
205
- Gems.configure do |config|
206
- config.username = 'nick@gemcutter.org'
207
- config.password = 'schwwwwing'
208
- end
209
- stub_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key").
210
- to_return(:body => fixture("api_key"))
211
- end
212
-
213
- it "should retrieve an API key" do
214
- api_key = Gems.api_key
215
- a_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key").
216
- should have_been_made
217
- api_key.should == "701243f217cdf23b1370c7b66b65ca97"
218
- end
219
- end
220
-
221
- describe ".gems" do
222
- before do
223
- stub_get("/api/v1/gems.yaml").
224
- to_return(:body => fixture("gems.yaml"))
225
- end
226
-
227
- it "should list all gems that you own" do
228
- gems = Gems.gems
229
- a_get("/api/v1/gems.yaml").
230
- should have_been_made
231
- gems.first['name'].should == "exchb"
232
- end
233
- end
234
-
235
- describe ".owners" do
291
+ describe "#owners" do
236
292
  before do
237
293
  stub_get("/api/v1/gems/gems/owners.yaml").
238
294
  to_return(:body => fixture("owners.yaml"))
239
295
  end
240
-
241
296
  it "should list all owners of a gem" do
242
297
  owners = Gems.owners("gems")
243
298
  a_get("/api/v1/gems/gems/owners.yaml").
@@ -246,13 +301,12 @@ describe Gems::Client do
246
301
  end
247
302
  end
248
303
 
249
- describe ".add_owner" do
304
+ describe "#add_owner" do
250
305
  before do
251
306
  stub_post("/api/v1/gems/gems/owners").
252
307
  with(:body => {:email => "sferik@gmail.com"}).
253
308
  to_return(:body => fixture("add_owner"))
254
309
  end
255
-
256
310
  it "should add an owner to a RubyGem" do
257
311
  owner = Gems.add_owner("gems", "sferik@gmail.com")
258
312
  a_post("/api/v1/gems/gems/owners").
@@ -262,13 +316,12 @@ describe Gems::Client do
262
316
  end
263
317
  end
264
318
 
265
- describe ".remove_owner" do
319
+ describe "#remove_owner" do
266
320
  before do
267
321
  stub_delete("/api/v1/gems/gems/owners").
268
322
  with(:query => {:email => "sferik@gmail.com"}).
269
323
  to_return(:body => fixture("remove_owner"))
270
324
  end
271
-
272
325
  it "should remove an owner from a RubyGem" do
273
326
  owner = Gems.remove_owner("gems", "sferik@gmail.com")
274
327
  a_delete("/api/v1/gems/gems/owners").
@@ -278,12 +331,11 @@ describe Gems::Client do
278
331
  end
279
332
  end
280
333
 
281
- describe ".web_hooks" do
334
+ describe "#web_hooks" do
282
335
  before do
283
336
  stub_get("/api/v1/web_hooks.yaml").
284
337
  to_return(:body => fixture("web_hooks.yaml"))
285
338
  end
286
-
287
339
  it "should list the web hooks registered under your account" do
288
340
  web_hooks = Gems.web_hooks
289
341
  a_get("/api/v1/web_hooks.yaml").
@@ -292,13 +344,12 @@ describe Gems::Client do
292
344
  end
293
345
  end
294
346
 
295
- describe ".add_web_hook" do
347
+ describe "#add_web_hook" do
296
348
  before do
297
349
  stub_post("/api/v1/web_hooks").
298
350
  with(:body => {:gem_name => "*", :url => "http://example.com"}).
299
351
  to_return(:body => fixture("add_web_hook"))
300
352
  end
301
-
302
353
  it "should add a web hook" do
303
354
  add_web_hook = Gems.add_web_hook("*", "http://example.com")
304
355
  a_post("/api/v1/web_hooks").
@@ -308,13 +359,12 @@ describe Gems::Client do
308
359
  end
309
360
  end
310
361
 
311
- describe ".remove_web_hook" do
362
+ describe "#remove_web_hook" do
312
363
  before do
313
364
  stub_delete("/api/v1/web_hooks/remove").
314
365
  with(:query => {:gem_name => "*", :url => "http://example.com"}).
315
366
  to_return(:body => fixture("remove_web_hook"))
316
367
  end
317
-
318
368
  it "should remove a web hook" do
319
369
  remove_web_hook = Gems.remove_web_hook("*", "http://example.com")
320
370
  a_delete("/api/v1/web_hooks/remove").
@@ -324,13 +374,12 @@ describe Gems::Client do
324
374
  end
325
375
  end
326
376
 
327
- describe ".fire_web_hook" do
377
+ describe "#fire_web_hook" do
328
378
  before do
329
379
  stub_post("/api/v1/web_hooks/fire").
330
380
  with(:body => {:gem_name => "*", :url => "http://example.com"}).
331
381
  to_return(:body => fixture("fire_web_hook"))
332
382
  end
333
-
334
383
  it "should fire a web hook" do
335
384
  fire_web_hook = Gems.fire_web_hook("*", "http://example.com")
336
385
  a_post("/api/v1/web_hooks/fire").
@@ -340,98 +389,11 @@ describe Gems::Client do
340
389
  end
341
390
  end
342
391
 
343
- describe ".push" do
344
- before do
345
- stub_post("/api/v1/gems").
346
- to_return(:body => fixture("push"))
347
- end
348
-
349
- it "should submit a gem to RubyGems.org" do
350
- push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb"))
351
- a_post("/api/v1/gems").
352
- should have_been_made
353
- push.should == "Successfully registered gem: gems (0.0.8)"
354
- end
355
- end
356
-
357
- describe ".yank" do
358
- context "with no version specified" do
359
- before do
360
- stub_get("/api/v1/gems/gems.yaml").
361
- to_return(:body => fixture("rails.yaml"))
362
- stub_delete("/api/v1/gems/yank").
363
- with(:query => {:gem_name => "gems", :version => "3.0.9"}).
364
- to_return(:body => fixture("yank"))
365
- end
366
-
367
- it "should remove a gem from RubyGems.org's index" do
368
- yank = Gems.yank("gems")
369
- a_delete("/api/v1/gems/yank").
370
- with(:query => {:gem_name => "gems", :version => "3.0.9"}).
371
- should have_been_made
372
- yank.should == "Successfully yanked gem: gems (0.0.8)"
373
- end
374
- end
375
-
376
- context "with a version specified" do
377
- before do
378
- stub_delete("/api/v1/gems/yank").
379
- with(:query => {:gem_name => "gems", :version => "0.0.8"}).
380
- to_return(:body => fixture("yank"))
381
- end
382
-
383
- it "should remove a gem from RubyGems.org's index" do
384
- yank = Gems.yank("gems", "0.0.8")
385
- a_delete("/api/v1/gems/yank").
386
- with(:query => {:gem_name => "gems", :version => "0.0.8"}).
387
- should have_been_made
388
- yank.should == "Successfully yanked gem: gems (0.0.8)"
389
- end
390
- end
391
- end
392
-
393
- describe ".unyank" do
394
- context "with no version specified" do
395
- before do
396
- stub_get("/api/v1/gems/gems.yaml").
397
- to_return(:body => fixture("rails.yaml"))
398
- stub_put("/api/v1/gems/unyank").
399
- with(:body => {:gem_name => "gems", :version => "3.0.9"}).
400
- to_return(:body => fixture("unyank"))
401
- end
402
-
403
- it "should update a previously yanked gem back into RubyGems.org's index" do
404
- unyank = Gems.unyank("gems")
405
- a_put("/api/v1/gems/unyank").
406
- with(:body => {:gem_name => "gems", :version => "3.0.9"}).
407
- should have_been_made
408
- unyank.should == "Successfully unyanked gem: gems (0.0.8)"
409
- end
410
- end
411
-
412
- context "with a version specified" do
413
- before do
414
- stub_put("/api/v1/gems/unyank").
415
- with(:body => {:gem_name => "gems", :version => "0.0.8"}).
416
- to_return(:body => fixture("unyank"))
417
- end
418
-
419
- it "should update a previously yanked gem back into RubyGems.org's index" do
420
- unyank = Gems.unyank("gems", "0.0.8")
421
- a_put("/api/v1/gems/unyank").
422
- with(:body => {:gem_name => "gems", :version => "0.0.8"}).
423
- should have_been_made
424
- unyank.should == "Successfully unyanked gem: gems (0.0.8)"
425
- end
426
- end
427
- end
428
-
429
- describe ".latest" do
392
+ describe "#latest" do
430
393
  before do
431
394
  stub_get("/api/v1/activity/latest.yaml").
432
395
  to_return(:body => fixture("latest.yaml"))
433
396
  end
434
-
435
397
  it "should return some basic information about the given gem" do
436
398
  latest = Gems.latest
437
399
  a_get("/api/v1/activity/latest.yaml").
@@ -440,12 +402,11 @@ describe Gems::Client do
440
402
  end
441
403
  end
442
404
 
443
- describe ".just_updated" do
405
+ describe "#just_updated" do
444
406
  before do
445
407
  stub_get("/api/v1/activity/just_updated.yaml").
446
408
  to_return(:body => fixture("just_updated.yaml"))
447
409
  end
448
-
449
410
  it "should return some basic information about the given gem" do
450
411
  just_updated = Gems.just_updated
451
412
  a_get("/api/v1/activity/just_updated.yaml").
@@ -454,4 +415,36 @@ describe Gems::Client do
454
415
  end
455
416
  end
456
417
 
418
+ describe "#api_key" do
419
+ before do
420
+ Gems.configure do |config|
421
+ config.username = 'nick@gemcutter.org'
422
+ config.password = 'schwwwwing'
423
+ end
424
+ stub_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key").
425
+ to_return(:body => fixture("api_key"))
426
+ end
427
+ it "should retrieve an API key" do
428
+ api_key = Gems.api_key
429
+ a_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key").
430
+ should have_been_made
431
+ api_key.should == "701243f217cdf23b1370c7b66b65ca97"
432
+ end
433
+ end
434
+
435
+ describe "#dependencies" do
436
+ before do
437
+ stub_get("/api/v1/dependencies").
438
+ with(:query => {"gems" => "rails,thor"}).
439
+ to_return(:body => fixture("dependencies"))
440
+ end
441
+ it "should return an array of hashes for all versions of given gems" do
442
+ dependencies = Gems.dependencies 'rails', 'thor'
443
+ a_get("/api/v1/dependencies").
444
+ with(:query => {"gems" => "rails,thor"}).
445
+ should have_been_made
446
+ dependencies.first[:number].should == "3.0.9"
447
+ end
448
+ end
449
+
457
450
  end