Sha256: fefcbcc7a0b18d289be576779f1459e6d3e1e0d45b35464dbdbf0f06349285e5

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

require 'spec_helper'

describe VkontakteApi::Uploading do
  let(:uploader) do
    Object.new.tap do |object|
      object.extend VkontakteApi::Uploading
    end
  end
  
  describe "#upload" do
    let(:upload_io)     { double("Faraday::UploadIO instance") }
    let(:response_body) { double("Server response body") }
    let(:response)      { double("Server response", body: response_body) }
    let(:connection)    { double("Faraday connection", post: response) }
    
    before(:each) do
      Faraday::UploadIO.stub(:new).and_return(upload_io)
      VkontakteApi::API.stub(:connection).and_return(connection)
    end
    
    context "without a :url param" do
      it "raises an ArgumentError" do
        expect {
          uploader.upload
        }.to raise_error(ArgumentError)
      end
    end
    
    it "creates a Faraday::UploadIO for each file passed in" do
      path = double("File path")
      type = double("File mime type")
      io = double("File IO")
      
      expect(Faraday::UploadIO).to receive(:new).with(path, type, nil)
      expect(Faraday::UploadIO).to receive(:new).with(io, type, path)
      uploader.upload(url: 'http://example.com', file1: [path, type], file2: [io, type, path])
    end
    
    it "POSTs the files through the connection to a given URL" do
      url  = double("URL")
      file = double("File")
      expect(connection).to receive(:post).with(url, file1: upload_io)
      uploader.upload(url: url, file1: file)
    end
    
    it "returns the server response" do
      expect(uploader.upload(url: 'http://example.com')).to eq(response_body)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vkontakte_api-1.3 spec/vkontakte_api/uploading_spec.rb