require 'spec_helper'
require 'google/api_client'
-require 'google/api_client/version'
fixtures_path = File.expand_path('../../../fixtures', __FILE__)
describe Google::APIClient::UploadIO do
it 'should reject invalid file paths' do
- (lambda do
+ expect(lambda do
media = Google::APIClient::UploadIO.new('doesnotexist', 'text/plain')
- end).should raise_error
+ end).to raise_error
end
describe 'with a file' do
end
it 'should report the correct file length' do
- @media.length.should == File.size(@file)
+ expect(@media.length).to eq(File.size(@file))
end
it 'should have a mime type' do
- @media.content_type.should == 'text/plain'
+ expect(@media.content_type).to eq('text/plain')
end
end
end
it 'should report the correct file length' do
- @media.length.should == @content.length
+ expect(@media.length).to eq(@content.length)
end
it 'should have a mime type' do
- @media.content_type.should == 'text/plain'
+ expect(@media.content_type).to eq('text/plain')
end
end
end
end
it 'should return the correct range when read entirely' do
- @io.read.should == "23456"
+ expect(@io.read).to eq("23456")
end
it 'should maintain position' do
- @io.read(1).should == '2'
- @io.read(2).should == '34'
- @io.read(2).should == '56'
+ expect(@io.read(1)).to eq('2')
+ expect(@io.read(2)).to eq('34')
+ expect(@io.read(2)).to eq('56')
end
it 'should allow rewinds' do
- @io.read(2).should == '23'
+ expect(@io.read(2)).to eq('23')
@io.rewind()
- @io.read(2).should == '23'
+ expect(@io.read(2)).to eq('23')
end
it 'should allow setting position' do
@io.pos = 3
- @io.read.should == '56'
+ expect(@io.read).to eq('56')
end
it 'should not allow position to be set beyond range' do
@io.pos = 10
- @io.read.should == ''
+ expect(@io.read).to eq('')
end
it 'should return empty string when read amount is zero' do
- @io.read(0).should == ''
+ expect(@io.read(0)).to eq('')
end
it 'should return empty string at EOF if amount is nil' do
@io.read
- @io.read.should == ''
+ expect(@io.read).to eq('')
end
it 'should return nil at EOF if amount is positive int' do
@io.read
- @io.read(1).should == nil
+ expect(@io.read(1)).to eq(nil)
end
end
it 'should consider 20x status as complete' do
request = @uploader.to_http_request
@uploader.process_http_response(mock_result(200))
- @uploader.complete?.should == true
+ expect(@uploader.complete?).to eq(true)
end
it 'should consider 30x status as incomplete' do
request = @uploader.to_http_request
@uploader.process_http_response(mock_result(308))
- @uploader.complete?.should == false
- @uploader.expired?.should == false
+ expect(@uploader.complete?).to eq(false)
+ expect(@uploader.expired?).to eq(false)
end
it 'should consider 40x status as fatal' do
request = @uploader.to_http_request
@uploader.process_http_response(mock_result(404))
- @uploader.expired?.should == true
+ expect(@uploader.expired?).to eq(true)
end
it 'should detect changes to location' do
request = @uploader.to_http_request
@uploader.process_http_response(mock_result(308, 'location' => 'https://www.googleapis.com/upload/drive/v1/files/abcdef'))
- @uploader.uri.to_s.should == 'https://www.googleapis.com/upload/drive/v1/files/abcdef'
+ expect(@uploader.uri.to_s).to eq('https://www.googleapis.com/upload/drive/v1/files/abcdef')
end
it 'should resume from the saved range reported by the server' do
@uploader.to_http_request # Send bytes 0-199, only 0-99 saved
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
method, url, headers, body = @uploader.to_http_request # Send bytes 100-299
- headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
- headers['Content-length'].should == "200"
+ expect(headers['Content-Range']).to eq("bytes 100-299/#{@media.length}")
+ expect(headers['Content-length']).to eq("200")
end
it 'should resync the offset after 5xx errors' do
@uploader.to_http_request
@uploader.process_http_response(mock_result(500)) # Invalidates range
method, url, headers, body = @uploader.to_http_request # Resync
- headers['Content-Range'].should == "bytes */#{@media.length}"
- headers['Content-length'].should == "0"
+ expect(headers['Content-Range']).to eq("bytes */#{@media.length}")
+ expect(headers['Content-length']).to eq("0")
@uploader.process_http_response(mock_result(308, 'range' => '0-99'))
method, url, headers, body = @uploader.to_http_request # Send next chunk at correct range
- headers['Content-Range'].should == "bytes 100-299/#{@media.length}"
- headers['Content-length'].should == "200"
+ expect(headers['Content-Range']).to eq("bytes 100-299/#{@media.length}")
+ expect(headers['Content-length']).to eq("200")
end
def mock_result(status, headers = {})
reference = Google::APIClient::Reference.new(:api_method => @drive.files.insert)
- stub('result', :status => status, :headers => headers, :reference => reference)
+ double('result', :status => status, :headers => headers, :reference => reference)
end
end