Use webmock to power the with_http_stubs helper

This involves a small amount of changing the fixtures since we're
using the regexp and not the full url matching powers of webmock.
This commit is contained in:
Andy Allan 2016-10-29 19:40:48 +02:00
parent 90175c3bdb
commit 5e86393f72
5 changed files with 19 additions and 35 deletions

View file

@ -569,11 +569,6 @@ module OSM
@http_client ||= Faraday.new
end
# Set the HTTP client to use
def self.http_client=(client)
@http_client = client
end
# Return the GeoIP database handle
def self.geoip_database
@geoip_database ||= GeoIP.new(GEOIP_DATABASE) if defined?(GEOIP_DATABASE)

View file

@ -1,4 +1,4 @@
/?geoit=XML&postal=A1B+2C3:
/?geoit=XML&postal=A1B%202C3:
code: 200
body: |
<?xml version="1.0" encoding="UTF-8"?>
@ -15,7 +15,7 @@
</standard>
</geodata>
/?geoit=XML&postal=k1a+0b1:
/?geoit=XML&postal=k1a%200b1:
code: 200
body: |
<?xml version="1.0" encoding="UTF-8"?>
@ -32,7 +32,7 @@
</standard>
</geodata>
/?geoit=XML&postal=Q0Q+0Q0:
/?geoit=XML&postal=Q0Q%200Q0:
code: 200
body: |
<?xml version="1.0" encoding="UTF-8"?>

View file

@ -1,4 +1,4 @@
/search?accept-language=&format=xml&q=Hoddesdon&viewbox=-0.559%2C51.766%2C0.836%2C51.217:
/search?accept-language=&extratags=1&format=xml&q=Hoddesdon&viewbox=-0.559,51.766,0.836,51.217:
code: 200
body: |
<?xml version="1.0" encoding="UTF-8" ?>
@ -6,7 +6,7 @@
<place place_id='110741' osm_type='node' osm_id='18007599' place_rank='18' boundingbox="51.7216709,51.8016709,-0.0512898,0.0287102" lat='51.7616709' lon='-0.0112898' display_name='Hoddesdon, Hertfordshire, East of England, England, United Kingdom' class='place' type='town' importance='0.50547792382382' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_town.p.20.png'/>
</searchresults>
/search?accept-language=&format=xml&extratags=1&q=Broxbourne&viewbox=-0.559%2C51.766%2C0.836%2C51.217:
/search?accept-language=&extratags=1&format=xml&q=Broxbourne&viewbox=-0.559,51.766,0.836,51.217:
code: 200
body: |
<?xml version="1.0" encoding="UTF-8" ?>

View file

@ -1,10 +1,10 @@
/cgi/geocoder.fcgi?format=text&postcode=CV4+7AL:
/cgi/geocoder.fcgi?format=text&postcode=CV4%207AL:
code: 200
body: |
# Easting,Northing,Matched Postcode,Latitude,Longitude
429926,276058,'CV4 7AL',52.381748701968,-1.56176420939232
/cgi/geocoder.fcgi?format=text&postcode=XX9+9XX:
/cgi/geocoder.fcgi?format=text&postcode=XX9%209XX:
code: 200
body: |
Error: Postcode area 'XX' not found, postcode probably invalid

View file

@ -161,23 +161,12 @@ module ActiveSupport
##
# execute a block with a given set of HTTP responses stubbed
def with_http_stubs(stubs_file)
http_client_save = OSM.http_client
begin
stubs = YAML.load_file(File.expand_path("../http/#{stubs_file}.yml", __FILE__))
OSM.http_client = Faraday.new do |builder|
builder.adapter :test do |stub|
stubs.each do |url, response|
stub.get(url) { |_env| [response["code"], {}, response["body"]] }
end
end
end
yield
ensure
OSM.http_client = http_client_save
stubs = YAML.load_file(File.expand_path("../http/#{stubs_file}.yml", __FILE__))
stubs.each do |url, response|
stub_request(:get, Regexp.new(Regexp.quote(url))).to_return(:status => response["code"], :body => response["body"])
end
yield
end
end
end