diff --git a/lib/haste/uploader.rb b/lib/haste/uploader.rb index 1a60f55..b6ac235 100644 --- a/lib/haste/uploader.rb +++ b/lib/haste/uploader.rb @@ -41,10 +41,13 @@ module Haste private + def post_path + parsed_uri = URI.parse(server_url) + "#{parsed_uri.path}/documents" + end + def do_post(data) - posturi= URI.parse(server_url) - posturi.path += '/documents' - connection.post(posturi.path, data) + connection.post(post_path, data) end def connection diff --git a/spec/examples/uploader_spec.rb b/spec/examples/uploader_spec.rb index f28a7ab..97e69a0 100644 --- a/spec/examples/uploader_spec.rb +++ b/spec/examples/uploader_spec.rb @@ -126,6 +126,42 @@ describe Haste::Uploader do end + describe :post_path do + + let(:post_path) { uploader.send(:post_path) } + + context "when the server URL doesn't have a path" do + + let(:base) { 'http://example.com/' } + + it 'should return /documents' do + expect(post_path).to eq('/documents') + end + + end + + context "when the server URL has a path" do + + let(:base) { 'http://example.com/friend' } + + it 'should return /documents' do + expect(post_path).to eq('/friend/documents') + end + + end + + context "when the server URL has a path that ends with slash" do + + let(:base) { 'http://example.com/friend/' } + + it 'should return /documents appended to the path without a duplicate slash' do + expect(post_path).to eq('/friend/documents') + end + + end + + end + describe :server_url do let(:server_url) { uploader.server_url }