spec/gems/client_spec.rb in gems-0.6.0 vs spec/gems/client_spec.rb in gems-0.7.0

- old
+ new

@@ -3,455 +3,448 @@ describe Gems::Client do after do Gems.reset end - describe ".info" do + describe "#info" do before do stub_get("/api/v1/gems/rails.yaml"). to_return(:body => fixture("rails.yaml")) end - it "should return some basic information about the given gem" do info = Gems.info 'rails' a_get("/api/v1/gems/rails.yaml"). should have_been_made info['name'].should == 'rails' end end - describe ".search" do + describe "#search" do before do stub_get("/api/v1/search.yaml"). with(:query => {"query" => "cucumber"}). to_return(:body => fixture("search.yaml")) end - it "should return an array of active gems that match the query" do search = Gems.search 'cucumber' a_get("/api/v1/search.yaml"). with(:query => {"query" => "cucumber"}). should have_been_made search.first['name'].should == 'cucumber' end end - describe ".versions" do + describe "#gems" do + context "with no user handle specified" do + before do + stub_get("/api/v1/gems.yaml"). + to_return(:body => fixture("gems.yaml")) + end + it "should list all gems that you own" do + gems = Gems.gems + a_get("/api/v1/gems.yaml"). + should have_been_made + gems.first['name'].should == "exchb" + end + end + context "with a user handle specified" do + before do + stub_get("/api/v1/owners/sferik/gems.yaml"). + to_return(:body => fixture("gems.yaml")) + end + it "should list all gems that the specified user owns" do + gems = Gems.gems("sferik") + a_get("/api/v1/owners/sferik/gems.yaml"). + should have_been_made + gems.first['name'].should == "exchb" + end + end + end + + describe "#push" do before do + stub_post("/api/v1/gems"). + to_return(:body => fixture("push")) + end + it "should submit a gem to RubyGems.org" do + push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb")) + a_post("/api/v1/gems"). + should have_been_made + push.should == "Successfully registered gem: gems (0.0.8)" + end + end + + describe "#yank" do + context "with no version specified" do + before do + stub_get("/api/v1/gems/gems.yaml"). + to_return(:body => fixture("rails.yaml")) + stub_delete("/api/v1/gems/yank"). + with(:query => {:gem_name => "gems", :version => "3.0.9"}). + to_return(:body => fixture("yank")) + end + it "should remove a gem from RubyGems.org's index" do + yank = Gems.yank("gems") + a_delete("/api/v1/gems/yank"). + with(:query => {:gem_name => "gems", :version => "3.0.9"}). + should have_been_made + yank.should == "Successfully yanked gem: gems (0.0.8)" + end + end + context "with a version specified" do + before do + stub_delete("/api/v1/gems/yank"). + with(:query => {:gem_name => "gems", :version => "0.0.8"}). + to_return(:body => fixture("yank")) + end + it "should remove a gem from RubyGems.org's index" do + yank = Gems.yank("gems", "0.0.8") + a_delete("/api/v1/gems/yank"). + with(:query => {:gem_name => "gems", :version => "0.0.8"}). + should have_been_made + yank.should == "Successfully yanked gem: gems (0.0.8)" + end + end + end + + describe "#unyank" do + context "with no version specified" do + before do + stub_get("/api/v1/gems/gems.yaml"). + to_return(:body => fixture("rails.yaml")) + stub_put("/api/v1/gems/unyank"). + with(:body => {:gem_name => "gems", :version => "3.0.9"}). + to_return(:body => fixture("unyank")) + end + it "should update a previously yanked gem back into RubyGems.org's index" do + unyank = Gems.unyank("gems") + a_put("/api/v1/gems/unyank"). + with(:body => {:gem_name => "gems", :version => "3.0.9"}). + should have_been_made + unyank.should == "Successfully unyanked gem: gems (0.0.8)" + end + end + context "with a version specified" do + before do + stub_put("/api/v1/gems/unyank"). + with(:body => {:gem_name => "gems", :version => "0.0.8"}). + to_return(:body => fixture("unyank")) + end + it "should update a previously yanked gem back into RubyGems.org's index" do + unyank = Gems.unyank("gems", "0.0.8") + a_put("/api/v1/gems/unyank"). + with(:body => {:gem_name => "gems", :version => "0.0.8"}). + should have_been_made + unyank.should == "Successfully unyanked gem: gems (0.0.8)" + end + end + end + + describe "#versions" do + before do stub_get("/api/v1/versions/script_helpers.yaml"). to_return(:body => fixture("script_helpers.yaml")) end - it "should return an array of gem version details" do versions = Gems.versions 'script_helpers' a_get("/api/v1/versions/script_helpers.yaml"). should have_been_made versions.first['number'].should == '0.1.0' end end - describe ".total_downloads" do + describe "#total_downloads" do context "with no version or gem name specified" do before do stub_get("/api/v1/downloads.yaml"). to_return(:body => fixture("total_downloads.yaml")) end - it "should return the total number of downloads on RubyGems.org" do downloads = Gems.total_downloads a_get("/api/v1/downloads.yaml"). should have_been_made downloads[:total].should == 244368950 end end - context "with no version specified" do before do stub_get("/api/v1/gems/rails_admin.yaml"). to_return(:body => fixture("rails.yaml")) stub_get("/api/v1/downloads/rails_admin-3.0.9.yaml"). to_return(:body => fixture("rails_admin-0.0.0.yaml")) end - it "should the total number of downloads for the specified gem" do downloads = Gems.total_downloads('rails_admin') a_get("/api/v1/gems/rails_admin.yaml"). should have_been_made a_get("/api/v1/downloads/rails_admin-3.0.9.yaml"). should have_been_made downloads[:version_downloads].should == 3142 downloads[:total_downloads].should == 3142 end end - context "with a version specified" do before do stub_get("/api/v1/downloads/rails_admin-0.0.0.yaml"). to_return(:body => fixture("rails_admin-0.0.0.yaml")) end - it "should the total number of downloads for the specified gem" do downloads = Gems.total_downloads('rails_admin', '0.0.0') a_get("/api/v1/downloads/rails_admin-0.0.0.yaml"). should have_been_made downloads[:version_downloads].should == 3142 downloads[:total_downloads].should == 3142 end end + end + describe "#most_downloaded_today" do + context "with nothing specified" do + before do + stub_get("/api/v1/downloads/top.yaml"). + to_return(:body => fixture("most_downloaded_today.yaml")) + end + it "should return the most downloaded versions today" do + most_downloaded = Gems.most_downloaded_today + a_get("/api/v1/downloads/top.yaml"). + should have_been_made + most_downloaded.first.first['full_name'].should == "rake-0.9.2.2" + most_downloaded.first.last.should == 9801 + end + end end - describe ".most_downloaded" do + describe "#most_downloaded" do context "with nothing specified" do before do stub_get("/api/v1/downloads/all.yaml"). - to_return(:body => fixture("most_downloaded.yaml")) + to_return(:body => fixture("most_downloaded.yaml")) end - it "should return the most downloaded versions" do most_downloaded = Gems.most_downloaded a_get("/api/v1/downloads/all.yaml"). should have_been_made - most_downloaded[:gems].first.first['full_name'].should == "abstract-1.0.0" - most_downloaded[:gems].first[1].should == 1 + most_downloaded.first.first['full_name'].should == "abstract-1.0.0" + most_downloaded.first.last.should == 1 end end end - describe ".downloads" do - + describe "#downloads" do context "with no dates or version specified" do before do stub_get("/api/v1/gems/coulda.yaml"). to_return(:body => fixture("rails.yaml")) stub_get("/api/v1/versions/coulda-3.0.9/downloads.yaml"). to_return(:body => fixture("downloads.yaml")) end - it "should return the number of downloads by day for a particular gem version" do downloads = Gems.downloads 'coulda' a_get("/api/v1/gems/coulda.yaml"). should have_been_made a_get("/api/v1/versions/coulda-3.0.9/downloads.yaml"). should have_been_made downloads['2011-06-22'].should == 8 end end - context "with no dates specified" do before do stub_get("/api/v1/versions/coulda-0.6.3/downloads.yaml"). to_return(:body => fixture("downloads.yaml")) 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.yaml"). 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.yaml"). with(:query => {"from" => "2011-01-01", "to" => Date.today.to_s}). to_return(:body => fixture("downloads.yaml")) 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.yaml"). 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.yaml"). with(:query => {"from" => "2011-01-01", "to" => "2011-06-28"}). to_return(:body => fixture("downloads.yaml")) 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.yaml"). 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 + describe "#owners" 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 - - describe ".api_key" do - before do - Gems.configure do |config| - config.username = 'nick@gemcutter.org' - config.password = 'schwwwwing' - end - stub_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/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("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key"). - should have_been_made - api_key.should == "701243f217cdf23b1370c7b66b65ca97" - end - end - - describe ".gems" do - before do - stub_get("/api/v1/gems.yaml"). - to_return(:body => fixture("gems.yaml")) - end - - it "should list all gems that you own" do - gems = Gems.gems - a_get("/api/v1/gems.yaml"). - should have_been_made - gems.first['name'].should == "exchb" - end - end - - describe ".owners" do - before do stub_get("/api/v1/gems/gems/owners.yaml"). to_return(:body => fixture("owners.yaml")) end - it "should list all owners of a gem" do owners = Gems.owners("gems") a_get("/api/v1/gems/gems/owners.yaml"). should have_been_made owners.first['email'].should == "sferik@gmail.com" end end - describe ".add_owner" do + 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")) 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 ".remove_owner" do + 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")) 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 ".web_hooks" do + describe "#web_hooks" do before do stub_get("/api/v1/web_hooks.yaml"). to_return(:body => fixture("web_hooks.yaml")) end - it "should list the web hooks registered under your account" do web_hooks = Gems.web_hooks a_get("/api/v1/web_hooks.yaml"). should have_been_made web_hooks['all gems'].first['url'].should == "http://example.com" end end - describe ".add_web_hook" do + 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 + 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 + 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 - describe ".push" do + describe "#latest" do before do - stub_post("/api/v1/gems"). - to_return(:body => fixture("push")) - end - - it "should submit a gem to RubyGems.org" do - push = Gems.push(File.new(File.expand_path("../../fixtures/gems-0.0.8.gem", __FILE__), "rb")) - a_post("/api/v1/gems"). - should have_been_made - push.should == "Successfully registered gem: gems (0.0.8)" - end - end - - describe ".yank" do - context "with no version specified" do - before do - stub_get("/api/v1/gems/gems.yaml"). - to_return(:body => fixture("rails.yaml")) - stub_delete("/api/v1/gems/yank"). - with(:query => {:gem_name => "gems", :version => "3.0.9"}). - to_return(:body => fixture("yank")) - end - - it "should remove a gem from RubyGems.org's index" do - yank = Gems.yank("gems") - a_delete("/api/v1/gems/yank"). - with(:query => {:gem_name => "gems", :version => "3.0.9"}). - should have_been_made - yank.should == "Successfully yanked gem: gems (0.0.8)" - end - end - - context "with a version specified" do - before do - stub_delete("/api/v1/gems/yank"). - with(:query => {:gem_name => "gems", :version => "0.0.8"}). - to_return(:body => fixture("yank")) - end - - it "should remove a gem from RubyGems.org's index" do - yank = Gems.yank("gems", "0.0.8") - a_delete("/api/v1/gems/yank"). - with(:query => {:gem_name => "gems", :version => "0.0.8"}). - should have_been_made - yank.should == "Successfully yanked gem: gems (0.0.8)" - end - end - end - - describe ".unyank" do - context "with no version specified" do - before do - stub_get("/api/v1/gems/gems.yaml"). - to_return(:body => fixture("rails.yaml")) - stub_put("/api/v1/gems/unyank"). - with(:body => {:gem_name => "gems", :version => "3.0.9"}). - to_return(:body => fixture("unyank")) - end - - it "should update a previously yanked gem back into RubyGems.org's index" do - unyank = Gems.unyank("gems") - a_put("/api/v1/gems/unyank"). - with(:body => {:gem_name => "gems", :version => "3.0.9"}). - should have_been_made - unyank.should == "Successfully unyanked gem: gems (0.0.8)" - end - end - - context "with a version specified" do - before do - stub_put("/api/v1/gems/unyank"). - with(:body => {:gem_name => "gems", :version => "0.0.8"}). - to_return(:body => fixture("unyank")) - end - - it "should update a previously yanked gem back into RubyGems.org's index" do - unyank = Gems.unyank("gems", "0.0.8") - a_put("/api/v1/gems/unyank"). - with(:body => {:gem_name => "gems", :version => "0.0.8"}). - should have_been_made - unyank.should == "Successfully unyanked gem: gems (0.0.8)" - end - end - end - - describe ".latest" do - before do stub_get("/api/v1/activity/latest.yaml"). to_return(:body => fixture("latest.yaml")) end - it "should return some basic information about the given gem" do latest = Gems.latest a_get("/api/v1/activity/latest.yaml"). should have_been_made latest.first['name'].should == 'seanwalbran-rpm_contrib' end end - describe ".just_updated" do + describe "#just_updated" do before do stub_get("/api/v1/activity/just_updated.yaml"). to_return(:body => fixture("just_updated.yaml")) end - it "should return some basic information about the given gem" do just_updated = Gems.just_updated a_get("/api/v1/activity/just_updated.yaml"). should have_been_made just_updated.first['name'].should == 'rspec-tag_matchers' + end + end + + describe "#api_key" do + before do + Gems.configure do |config| + config.username = 'nick@gemcutter.org' + config.password = 'schwwwwing' + end + stub_get("https://nick%40gemcutter.org:schwwwwing@rubygems.org/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("https://nick%40gemcutter.org:schwwwwing@rubygems.org/api/v1/api_key"). + should have_been_made + api_key.should == "701243f217cdf23b1370c7b66b65ca97" + end + 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 end