spec/github/repos/downloads_spec.rb in github_api-0.7.1 vs spec/github/repos/downloads_spec.rb in github_api-0.7.2

- old
+ new

@@ -1,245 +1,13 @@ # encoding: utf-8 require 'spec_helper' -require 'github_api/s3_uploader' describe Github::Repos::Downloads do - let(:github) { Github.new } - let(:user) { 'peter-murach' } - let(:repo) { 'github' } - after { reset_authentication_for(github) } + after { reset_authentication_for(subject) } it { described_class::VALID_DOWNLOAD_PARAM_NAMES.should_not be_nil } it { described_class::REQUIRED_PARAMS.should_not be_nil } - - describe "#list" do - - before do - stub_get("/repos/#{user}/#{repo}/downloads"). - to_return(:body => body, :status => status, - :headers => {:content_type => "application/json; charset=utf-8"}) - end - - context "resource found" do - let(:body) { fixture('repos/downloads.json') } - let(:status) { 200 } - - it { should respond_to :list } - - it "should fail to get resource without username" do - expect { github.repos.downloads.list }.to raise_error(ArgumentError) - end - - it "should get the resources" do - github.repos.downloads.list user, repo - a_get("/repos/#{user}/#{repo}/downloads").should have_been_made - end - - it "should return array of resources" do - downloads = github.repos.downloads.list user, repo - downloads.should be_an Array - downloads.should have(1).items - end - - it "should be a mash type" do - downloads = github.repos.downloads.list user, repo - downloads.first.should be_a Hashie::Mash - end - - it "should get download information" do - downloads = github.repos.downloads.list user, repo - downloads.first.name.should == 'new_file.jpg' - end - - it "should yield to a block" do - github.repos.downloads.should_receive(:list). - with(user, repo).and_yield('web') - github.repos.downloads.list(user, repo) { |param| 'web' } - end - end - - context "resource not found" do - let(:body) { "" } - let(:status) { [404, "Not Found"] } - - it "should return 404 with a message 'Not Found'" do - expect { - github.repos.downloads.list user, repo - }.to raise_error(Github::Error::NotFound) - end - end - end # list - - describe "#get" do - let(:download_id) { 1 } - - before do - stub_get("/repos/#{user}/#{repo}/downloads/#{download_id}"). - to_return(:body => body, :status => status, - :headers => {:content_type => "application/json; charset=utf-8"}) - end - - context "resource found" do - let(:body) { fixture('repos/download.json') } - let(:status) { 200 } - - it { github.repos.downloads.should respond_to :find } - - it "should fail to get resource without download id" do - expect { - github.repos.downloads.get user, repo, nil - }.to raise_error(ArgumentError) - end - - it "should get the resource" do - github.repos.downloads.get user, repo, download_id - a_get("/repos/#{user}/#{repo}/downloads/#{download_id}").should have_been_made - end - - it "should get download information" do - download = github.repos.downloads.get user, repo, download_id - download.id.should == download_id - download.name.should == 'new_file.jpg' - end - - it "should return mash" do - download = github.repos.downloads.get user, repo, download_id - download.should be_a Hashie::Mash - end - end - - context "resource not found" do - let(:body) { "" } - let(:status) { [404, "Not Found"] } - - it "should fail to retrive resource" do - expect { - github.repos.downloads.get user, repo, download_id - }.to raise_error(Github::Error::NotFound) - end - end - end # get - - describe "#delete" do - let(:download_id) { 1 } - - before do - stub_delete("/repos/#{user}/#{repo}/downloads/#{download_id}"). - to_return(:body => body, :status => status, - :headers => { :content_type => "application/json; charset=utf-8"}) - end - - context "resource deleted successfully" do - let(:body) { "" } - let(:status) { 204 } - - it "should fail to delete without 'user/repo' parameters" do - expect { github.repos.downloads.delete }.to raise_error(ArgumentError) - end - - it "should fail to delete resource without 'download_id'" do - expect { - github.repos.downloads.delete user, repo - }.to raise_error(ArgumentError) - end - - it "should delete the resource" do - github.repos.downloads.delete user, repo, download_id - a_delete("/repos/#{user}/#{repo}/downloads/#{download_id}").should have_been_made - end - end - - context "failed to delete resource" do - let(:body) { "" } - let(:status) { [404, "Not Found"] } - - it "should fail to find resource" do - expect { - github.repos.downloads.delete user, repo, download_id - }.to raise_error(Github::Error::NotFound) - end - end - end # delete - - describe "#create" do - let(:inputs) { {:name => 'new_file.jpg', :size => 114034, :description => "Latest release", :content_type => 'text/plain'} } - - before do - stub_post("/repos/#{user}/#{repo}/downloads").with(inputs). - to_return(:body => body, :status => status, - :headers => {:content_type => "application/json; charset=utf-8"}) - end - - context "resouce created" do - let(:body) { fixture('repos/download_s3.json') } - let(:status) { 201} - - it "should fail to create resource if 'name' input is missing" do - expect { - github.repos.downloads.create user, repo, inputs.except(:name) - }.to raise_error(Github::Error::RequiredParams) - end - - it "should failt to create resource if 'size' input is missing" do - expect { - github.repos.downloads.create user, repo, inputs.except(:size) - }.to raise_error(Github::Error::RequiredParams) - end - - it "should create resource successfully" do - github.repos.downloads.create user, repo, inputs - a_post("/repos/#{user}/#{repo}/downloads").with(inputs).should have_been_made - end - - it "should return the resource" do - download = github.repos.downloads.create user, repo, inputs - download.should be_a Hashie::Mash - end - - it "should get the download information" do - download = github.repos.downloads.create user, repo, inputs - download.name.should == 'new_file.jpg' - end - end - - context "failed to create resource" do - let(:body) { "" } - let(:status) { [404, "Not Found"] } - - it "should faile to retrieve resource" do - expect { - github.repos.downloads.create user, repo, inputs - }.to raise_error(Github::Error::NotFound) - end - end - end # create - - describe 'upload' do - let(:resource) { stub(:resource) } - let(:filename) { 'filename' } - let(:res) { stub(:response, :body => 'success') } - let(:uploader) { stub(:uploader, :send => res) } - - context 'resource uploaded' do - before do - Github::S3Uploader.stub(:new) { uploader } - end - - it "should fail if resource is of incorrect type" do - expect { - github.repos.downloads.upload resource, nil - }.to raise_error(ArgumentError) - end - - it "should upload resource successfully" do - res = stub(:response, :body => 'success') - uploader = stub(:uploader, :send => res) - Github::S3Uploader.should_receive(:new).with(resource, filename) { uploader } - github.repos.downloads.upload(resource, filename).should == 'success' - end - end - end # upload end # Github::Repos::Downloads