require "spec_helper"
describe Gitlab::Error do
describe "#handle_message" do
require "stringio"
before do
request_object = HTTParty::Request.new(Net::HTTP::Get, '/')
response_object = Net::HTTPOK.new('1.1', 200, 'OK')
body = StringIO.new("{foo:'bar'}")
def body.message; self.string; end
parsed_response = lambda { body }
response_object['last-modified'] = Date.new(2010, 1, 15).to_s
response_object['content-length'] = "1024"
response = HTTParty::Response.new(request_object, response_object, parsed_response, body: body)
@error = Gitlab::Error::ResponseError.new(response)
@array = Array.new(['First message.', 'Second message.'])
@obj_h = Gitlab::ObjectifiedHash.new(user: ['not set'],
password: ['too short'],
embed_entity: { foo: ['bar'], sna: ['fu'] })
end
context "when passed an ObjectifiedHash" do
it "should return a joined string of error messages sorted by key" do
expect(@error.send(:handle_message, @obj_h)).to eq("'embed_entity' (foo: bar) (sna: fu), 'password' too short, 'user' not set")
end
end
context "when passed an Array" do
it "should return a joined string of messages" do
expect(@error.send(:handle_message, @array)).to eq("First message. Second message.")
end
end
context "when passed a String" do
it "should return the String untouched" do
error = 'this is an error string'
expect(@error.send(:handle_message, error)).to eq('this is an error string')
end
end
end
end