diff --git a/lib/opencage/geocoder.rb b/lib/opencage/geocoder.rb index 9163937..ab0748e 100644 --- a/lib/opencage/geocoder.rb +++ b/lib/opencage/geocoder.rb @@ -13,6 +13,8 @@ def initialize(default_options = {}) end def geocode(location, options = {}) + raise_error("400 Not a valid location: `#{location.inspect}`") unless location.is_a?(String) + request = Request.new(@api_key, location, options) begin diff --git a/spec/open_cage/geocoder_spec.rb b/spec/open_cage/geocoder_spec.rb index 0f3da56..c3daca5 100644 --- a/spec/open_cage/geocoder_spec.rb +++ b/spec/open_cage/geocoder_spec.rb @@ -83,7 +83,7 @@ def geo expect(geo.geocode('NOWHERE-INTERESTING')).to eql([]) end - it 'raises and error when undefined query', :vcr do + it 'raises an error when undefined query', :vcr do expect do geo.geocode(nil) end.to raise_error(OpenCage::Error::InvalidRequest) @@ -94,6 +94,12 @@ def geo geo.geocode('') end.to raise_error(OpenCage::Error::InvalidRequest) end + + it 'raises a useful error when the query is not a string' do + expect do + geo.geocode({ query: 'NOT-A-STRING' }) # it's a hash + end.to raise_error(OpenCage::Error::InvalidRequest) + end end describe 'user agent' do