Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions app/services/arcgis_api/geocoder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,12 @@ def request_headers

def parse_suggestions(response_body)
if response_body['error']
if response_body['error']['code'] >= 400 && response_body['error']['code'] < 500
raise Faraday::ClientError.new(response_body)
end
error_code = response_body.dig('error', 'code')

raise Faraday::ClientError.new(
RuntimeError.new("received error code #{error_code}"),
response_body,
)
end

response_body['suggestions'].map do |suggestion|
Expand Down
8 changes: 5 additions & 3 deletions spec/services/arcgis_api/geocoder_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
it 'returns an error response body but with Status coded as 200' do
stub_request_suggestions_error

expect { subject.suggest('100 Main') }.to raise_error(
an_instance_of(Faraday::ClientError),
)
expect { subject.suggest('100 Main') }.to raise_error do |error|
expect(error).to be_instance_of(Faraday::ClientError)
expect(error.message).to eq('received error code 400')
expect(error.response).to be_kind_of(Hash)
end
end

it 'returns an error with Status coded as 4** in HTML' do
Expand Down