spec/gems/client_spec.rb in gems-0.0.7 vs spec/gems/client_spec.rb in gems-0.0.8

- old
+ new

@@ -1,25 +1,25 @@ require 'helper' describe Gems::Client do - %w(json xml).each do |format| - context ".new(:format => '#{format}')" do - before do - Gems.configure do |config| - config.format = format - config.key = '701243f217cdf23b1370c7b66b65ca97' - config.username = 'nick@gemcutter.org' - config.password = 'schwwwwing' - end - end + before do + Gems.configure do |config| + config.key = '701243f217cdf23b1370c7b66b65ca97' + config.username = 'nick@gemcutter.org' + config.password = 'schwwwwing' + end + end - after do - Gems.reset - end + after do + Gems.reset + end - describe ".info" do + describe ".info" do + %w(json xml).each do |format| + context "with format #{format}" do before do + Gems.format = format stub_get("/api/v1/gems/rails.#{format}"). to_return(:body => fixture("rails.#{format}")) end it "should return some basic information about the given gem" do @@ -27,13 +27,18 @@ a_get("/api/v1/gems/rails.#{format}"). should have_been_made info.name.should == 'rails' end end + end + end - describe ".search" do + describe ".search" do + %w(json xml).each do |format| + context "with format #{format}" do before do + Gems.format = format stub_get("/api/v1/search.#{format}"). with(:query => {"query" => "cucumber"}). to_return(:body => fixture("search.#{format}")) end @@ -43,105 +48,110 @@ with(:query => {"query" => "cucumber"}). should have_been_made search.first.name.should == 'cucumber' end end + end + end - describe ".versions" do - before do - stub_get("/api/v1/versions/coulda.json"). - to_return(:body => fixture("coulda.json")) - end + describe ".versions" do + before do + stub_get("/api/v1/versions/coulda.json"). + to_return(:body => fixture("coulda.json")) + end - it "should return an array of gem version details" do - versions = Gems.versions 'coulda' - a_get("/api/v1/versions/coulda.json"). - should have_been_made - versions.first.number.should == '0.6.3' - end + it "should return an array of gem version details" do + versions = Gems.versions 'coulda' + a_get("/api/v1/versions/coulda.json"). + should have_been_made + versions.first.number.should == '0.6.3' + end + end + + describe ".downloads" do + context "with no dates specified" do + before do + stub_get("/api/v1/versions/coulda-0.6.3/downloads.json"). + to_return(:body => fixture("downloads.json")) end - describe ".downloads" do - context "with no dates specified" do - before do - stub_get("/api/v1/versions/coulda-0.6.3/downloads.json"). - to_return(:body => fixture("downloads.json")) - end + it "should return the number of downloads by day for a particular gem version" do + downloads = Gems.downloads 'coulda', '0.6.3' + a_get("/api/v1/versions/coulda-0.6.3/downloads.json"). + should have_been_made + downloads["2011-06-22"].should == 8 + end + end - it "should return the number of downloads by day for a particular gem version" do - downloads = Gems.downloads 'coulda', '0.6.3' - a_get("/api/v1/versions/coulda-0.6.3/downloads.json"). - should have_been_made - downloads["2011-06-22"].should == 8 - end - end + context "with from date specified" do + before do + stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). + with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}). + to_return(:body => fixture("downloads.json")) + end - context "with from date specified" do - before do - stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). - with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}). - to_return(:body => fixture("downloads.json")) - end + it "should return the number of downloads by day for a particular gem version" do + downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01') + a_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). + with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}). + should have_been_made + downloads["2011-06-22"].should == 8 + end + end - it "should return the number of downloads by day for a particular gem version" do - downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01') - a_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). - with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}). - should have_been_made - downloads["2011-06-22"].should == 8 - end - end + context "with from and to dates specified" do + before do + stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). + with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}). + to_return(:body => fixture("downloads.json")) + end - context "with from and to dates specified" do - before do - stub_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). - with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}). - to_return(:body => fixture("downloads.json")) - end - - it "should return the number of downloads by day for a particular gem version" do - downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01'), Date.parse('2011-06-28') - a_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). - with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}). - should have_been_made - downloads["2011-06-22"].should == 8 - end - end + it "should return the number of downloads by day for a particular gem version" do + downloads = Gems.downloads 'coulda', '0.6.3', Date.parse('2011-01-01'), Date.parse('2011-06-28') + a_get("/api/v1/versions/coulda-0.6.3/downloads/search.json"). + with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}). + should have_been_made + downloads["2011-06-22"].should == 8 end + end + end - describe ".dependencies" do - before do - stub_get("/api/v1/dependencies"). - with(:query => {"gems" => "rails,thor"}). - to_return(:body => fixture("dependencies")) - end + describe ".dependencies" do + before do + stub_get("/api/v1/dependencies"). + with(:query => {"gems" => "rails,thor"}). + to_return(:body => fixture("dependencies")) + end - it "should return an array of hashes for all versions of given gems" do - dependencies = Gems.dependencies 'rails', 'thor' - a_get("/api/v1/dependencies"). - with(:query => {"gems" => "rails,thor"}). - should have_been_made - dependencies.first.number.should == "3.0.9" - end - end + it "should return an array of hashes for all versions of given gems" do + dependencies = Gems.dependencies 'rails', 'thor' + a_get("/api/v1/dependencies"). + with(:query => {"gems" => "rails,thor"}). + should have_been_made + dependencies.first.number.should == "3.0.9" + end + end - describe ".api_key" do - before do - stub_get("/api/v1/api_key"). - to_return(:body => fixture("api_key")) - end + describe ".api_key" do + before do + stub_get("/api/v1/api_key"). + to_return(:body => fixture("api_key")) + end - it "should retrieve an API key" do - api_key = Gems.api_key - a_get("/api/v1/api_key"). - should have_been_made - api_key.should == "701243f217cdf23b1370c7b66b65ca97" - end - end + it "should retrieve an API key" do + api_key = Gems.api_key + a_get("/api/v1/api_key"). + should have_been_made + api_key.should == "701243f217cdf23b1370c7b66b65ca97" + end + end - describe ".gems" do + describe ".gems" do + %w(json xml).each do |format| + context "with format #{format}" do before do + Gems.format = format stub_get("/api/v1/gems.#{format}"). to_return(:body => fixture("gems.#{format}")) end it "should list all gems that you own" do @@ -149,68 +159,121 @@ a_get("/api/v1/gems.#{format}"). should have_been_made gems.first.name.should == "congress" end end + end + end - describe ".owners" do + describe ".owners" do + %w(json yaml).each do |format| + context "with format #{format}" do before do - stub_get("/api/v1/gems/gems/owners.json"). - to_return(:body => fixture("owners.json")) + Gems.format = format + stub_get("/api/v1/gems/gems/owners.#{format}"). + to_return(:body => fixture("owners.#{format}")) end it "should list all owners of a gem" do owners = Gems.owners("gems") - a_get("/api/v1/gems/gems/owners.json"). + a_get("/api/v1/gems/gems/owners.#{format}"). should have_been_made owners.first.email.should == "sferik@gmail.com" end end + end + end - describe ".web_hooks" do - before do - stub_get("/api/v1/web_hooks.json"). - to_return(:body => fixture("web_hooks.json")) - end + describe ".add_owner" do + before do + stub_post("/api/v1/gems/gems/owners"). + with(:body => {:email => "sferik@gmail.com"}). + to_return(:body => fixture("add_owner.json")) + end - it "should list the webhooks registered under your account" do - web_hooks = Gems.web_hooks - a_get("/api/v1/web_hooks.json"). - should have_been_made - web_hooks.rails.first.url.should == "http://example.com" - end - end + it "should add an owner to a RubyGem" do + owner = Gems.add_owner("gems", "sferik@gmail.com") + a_post("/api/v1/gems/gems/owners"). + with(:body => {:email => "sferik@gmail.com"}). + should have_been_made + owner.should == "Owner added successfully." + end + end - describe ".add_owner" do - before do - stub_post("/api/v1/gems/gems/owners"). - with(:body => {:email => "sferik@gmail.com"}). - to_return(:body => fixture("add_owner.json")) - end + describe ".remove_owner" do + before do + stub_delete("/api/v1/gems/gems/owners"). + with(:query => {:email => "sferik@gmail.com"}). + to_return(:body => fixture("remove_owner.json")) + end - it "should add an owner to a RubyGem" do - owner = Gems.add_owner("gems", "sferik@gmail.com") - a_post("/api/v1/gems/gems/owners"). - with(:body => {:email => "sferik@gmail.com"}). - should have_been_made - owner.should == "Owner added successfully." - end - end + it "should remove an owner from a RubyGem" do + owner = Gems.remove_owner("gems", "sferik@gmail.com") + a_delete("/api/v1/gems/gems/owners"). + with(:query => {:email => "sferik@gmail.com"}). + should have_been_made + owner.should == "Owner removed successfully." + end + end - describe ".remove_owner" do - before do - stub_delete("/api/v1/gems/gems/owners"). - with(:query => {:email => "sferik@gmail.com"}). - to_return(:body => fixture("remove_owner.json")) - end + describe ".web_hooks" do + before do + stub_get("/api/v1/web_hooks.json"). + to_return(:body => fixture("web_hooks.json")) + end - it "should remove an owner from a RubyGem" do - owner = Gems.remove_owner("gems", "sferik@gmail.com") - a_delete("/api/v1/gems/gems/owners"). - with(:query => {:email => "sferik@gmail.com"}). - should have_been_made - owner.should == "Owner removed successfully." - end - end + it "should list the webhooks registered under your account" do + web_hooks = Gems.web_hooks + a_get("/api/v1/web_hooks.json"). + should have_been_made + web_hooks.rails.first.url.should == "http://example.com" + end + end + + describe ".add_web_hook" do + before do + stub_post("/api/v1/web_hooks"). + with(:body => {:gem_name => "*", :url => "http://example.com"}). + to_return(:body => fixture("add_web_hook")) + end + + it "should add a web hook" do + add_web_hook = Gems.add_web_hook("*", "http://example.com") + a_post("/api/v1/web_hooks"). + with(:body => {:gem_name => "*", :url => "http://example.com"}). + should have_been_made + add_web_hook.should == "Successfully created webhook for all gems to http://example.com" + end + end + + describe ".remove_web_hook" do + before do + stub_delete("/api/v1/web_hooks/remove"). + with(:query => {:gem_name => "*", :url => "http://example.com"}). + to_return(:body => fixture("remove_web_hook")) + end + + it "should remove a web hook" do + remove_web_hook = Gems.remove_web_hook("*", "http://example.com") + a_delete("/api/v1/web_hooks/remove"). + with(:query => {:gem_name => "*", :url => "http://example.com"}). + should have_been_made + remove_web_hook.should == "Successfully removed webhook for all gems to http://example.com" + end + end + + describe ".fire_web_hook" do + before do + stub_post("/api/v1/web_hooks/fire"). + with(:body => {:gem_name => "*", :url => "http://example.com"}). + to_return(:body => fixture("fire_web_hook")) + end + + it "should fire a web hook" do + fire_web_hook = Gems.fire_web_hook("*", "http://example.com") + a_post("/api/v1/web_hooks/fire"). + with(:body => {:gem_name => "*", :url => "http://example.com"}). + should have_been_made + fire_web_hook.should == "Successfully deployed webhook for gemcutter to http://example.com" end end end