gems 0.6.0 → 0.7.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.
@@ -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