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

- old
+ new

@@ -66,10 +66,26 @@ versions.first.number.should == '0.6.3' end end describe ".downloads" do + context "with no dates or version specified" do + before do + stub_get("/api/v1/gems/coulda.json"). + to_return(:body => fixture("rails.json")) + stub_get("/api/v1/versions/coulda-3.0.9/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' + a_get("/api/v1/versions/coulda-3.0.9/downloads.json"). + 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.json"). to_return(:body => fixture("downloads.json")) end @@ -272,8 +288,80 @@ 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 ".yank" do + context "with no version specified" do + before do + stub_get("/api/v1/gems/gems.json"). + to_return(:body => fixture("rails.json")) + 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.json"). + to_return(:body => fixture("rails.json")) + 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 end