From 21c03ae0308103bf5150625099de862721036ef7 Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Fri, 21 Dec 2012 15:10:53 -0500 Subject: [PATCH] Refactoring of fake lookup/fixtures. Now every fake query does not need to be listed in the code, a fixture just needs to be added. --- ...garden.json => bing_madison_square_garden} | 0 .../{bing_no_results.json => bing_no_results} | 0 .../{bing_reverse.json => bing_reverse} | 0 ...00_247_59.json => freegeoip_74_200_247_59} | 0 ...p_no_results.json => freegeoip_no_results} | 0 ...json => geocoder_ca_madison_square_garden} | 0 ...no_results.json => geocoder_ca_no_results} | 0 ...er_ca_reverse.json => geocoder_ca_reverse} | 0 .../{google_garbage.json => google_garbage} | 0 ...rden.json => google_madison_square_garden} | 0 ..._no_city_data.json => google_no_city_data} | 0 ...le_no_locality.json => google_no_locality} | 0 ...ogle_no_results.json => google_no_results} | 0 ...en.json => mapquest_madison_square_garden} | 0 ...st_no_results.json => mapquest_no_results} | 0 ...4_200_247_59.txt => maxmind_74_200_247_59} | 0 ...nd_invalid_key.txt => maxmind_invalid_key} | 0 ...mind_no_results.txt => maxmind_no_results} | 0 ...n.json => nominatim_madison_square_garden} | 0 ...m_no_results.json => nominatim_no_results} | 0 .../{yahoo_error.json => yahoo_error} | 0 ...hoo_invalid_key.json => yahoo_invalid_key} | 0 ...arden.json => yahoo_madison_square_garden} | 0 ...yahoo_no_results.json => yahoo_no_results} | 0 ...yahoo_over_limit.json => yahoo_over_limit} | 0 ...ex_invalid_key.json => yandex_invalid_key} | 0 .../{yandex_kremlin.json => yandex_kremlin} | 0 ...ndex_no_results.json => yandex_no_results} | 0 test/test_helper.rb | 142 ++++-------------- 29 files changed, 31 insertions(+), 111 deletions(-) rename test/fixtures/{bing_madison_square_garden.json => bing_madison_square_garden} (100%) rename test/fixtures/{bing_no_results.json => bing_no_results} (100%) rename test/fixtures/{bing_reverse.json => bing_reverse} (100%) rename test/fixtures/{freegeoip_74_200_247_59.json => freegeoip_74_200_247_59} (100%) rename test/fixtures/{freegeoip_no_results.json => freegeoip_no_results} (100%) rename test/fixtures/{geocoder_ca_madison_square_garden.json => geocoder_ca_madison_square_garden} (100%) rename test/fixtures/{geocoder_ca_no_results.json => geocoder_ca_no_results} (100%) rename test/fixtures/{geocoder_ca_reverse.json => geocoder_ca_reverse} (100%) rename test/fixtures/{google_garbage.json => google_garbage} (100%) rename test/fixtures/{google_madison_square_garden.json => google_madison_square_garden} (100%) rename test/fixtures/{google_no_city_data.json => google_no_city_data} (100%) rename test/fixtures/{google_no_locality.json => google_no_locality} (100%) rename test/fixtures/{google_no_results.json => google_no_results} (100%) rename test/fixtures/{mapquest_madison_square_garden.json => mapquest_madison_square_garden} (100%) rename test/fixtures/{mapquest_no_results.json => mapquest_no_results} (100%) rename test/fixtures/{maxmind_74_200_247_59.txt => maxmind_74_200_247_59} (100%) rename test/fixtures/{maxmind_invalid_key.txt => maxmind_invalid_key} (100%) rename test/fixtures/{maxmind_no_results.txt => maxmind_no_results} (100%) rename test/fixtures/{nominatim_madison_square_garden.json => nominatim_madison_square_garden} (100%) rename test/fixtures/{nominatim_no_results.json => nominatim_no_results} (100%) rename test/fixtures/{yahoo_error.json => yahoo_error} (100%) rename test/fixtures/{yahoo_invalid_key.json => yahoo_invalid_key} (100%) rename test/fixtures/{yahoo_madison_square_garden.json => yahoo_madison_square_garden} (100%) rename test/fixtures/{yahoo_no_results.json => yahoo_no_results} (100%) rename test/fixtures/{yahoo_over_limit.json => yahoo_over_limit} (100%) rename test/fixtures/{yandex_invalid_key.json => yandex_invalid_key} (100%) rename test/fixtures/{yandex_kremlin.json => yandex_kremlin} (100%) rename test/fixtures/{yandex_no_results.json => yandex_no_results} (100%) diff --git a/test/fixtures/bing_madison_square_garden.json b/test/fixtures/bing_madison_square_garden similarity index 100% rename from test/fixtures/bing_madison_square_garden.json rename to test/fixtures/bing_madison_square_garden diff --git a/test/fixtures/bing_no_results.json b/test/fixtures/bing_no_results similarity index 100% rename from test/fixtures/bing_no_results.json rename to test/fixtures/bing_no_results diff --git a/test/fixtures/bing_reverse.json b/test/fixtures/bing_reverse similarity index 100% rename from test/fixtures/bing_reverse.json rename to test/fixtures/bing_reverse diff --git a/test/fixtures/freegeoip_74_200_247_59.json b/test/fixtures/freegeoip_74_200_247_59 similarity index 100% rename from test/fixtures/freegeoip_74_200_247_59.json rename to test/fixtures/freegeoip_74_200_247_59 diff --git a/test/fixtures/freegeoip_no_results.json b/test/fixtures/freegeoip_no_results similarity index 100% rename from test/fixtures/freegeoip_no_results.json rename to test/fixtures/freegeoip_no_results diff --git a/test/fixtures/geocoder_ca_madison_square_garden.json b/test/fixtures/geocoder_ca_madison_square_garden similarity index 100% rename from test/fixtures/geocoder_ca_madison_square_garden.json rename to test/fixtures/geocoder_ca_madison_square_garden diff --git a/test/fixtures/geocoder_ca_no_results.json b/test/fixtures/geocoder_ca_no_results similarity index 100% rename from test/fixtures/geocoder_ca_no_results.json rename to test/fixtures/geocoder_ca_no_results diff --git a/test/fixtures/geocoder_ca_reverse.json b/test/fixtures/geocoder_ca_reverse similarity index 100% rename from test/fixtures/geocoder_ca_reverse.json rename to test/fixtures/geocoder_ca_reverse diff --git a/test/fixtures/google_garbage.json b/test/fixtures/google_garbage similarity index 100% rename from test/fixtures/google_garbage.json rename to test/fixtures/google_garbage diff --git a/test/fixtures/google_madison_square_garden.json b/test/fixtures/google_madison_square_garden similarity index 100% rename from test/fixtures/google_madison_square_garden.json rename to test/fixtures/google_madison_square_garden diff --git a/test/fixtures/google_no_city_data.json b/test/fixtures/google_no_city_data similarity index 100% rename from test/fixtures/google_no_city_data.json rename to test/fixtures/google_no_city_data diff --git a/test/fixtures/google_no_locality.json b/test/fixtures/google_no_locality similarity index 100% rename from test/fixtures/google_no_locality.json rename to test/fixtures/google_no_locality diff --git a/test/fixtures/google_no_results.json b/test/fixtures/google_no_results similarity index 100% rename from test/fixtures/google_no_results.json rename to test/fixtures/google_no_results diff --git a/test/fixtures/mapquest_madison_square_garden.json b/test/fixtures/mapquest_madison_square_garden similarity index 100% rename from test/fixtures/mapquest_madison_square_garden.json rename to test/fixtures/mapquest_madison_square_garden diff --git a/test/fixtures/mapquest_no_results.json b/test/fixtures/mapquest_no_results similarity index 100% rename from test/fixtures/mapquest_no_results.json rename to test/fixtures/mapquest_no_results diff --git a/test/fixtures/maxmind_74_200_247_59.txt b/test/fixtures/maxmind_74_200_247_59 similarity index 100% rename from test/fixtures/maxmind_74_200_247_59.txt rename to test/fixtures/maxmind_74_200_247_59 diff --git a/test/fixtures/maxmind_invalid_key.txt b/test/fixtures/maxmind_invalid_key similarity index 100% rename from test/fixtures/maxmind_invalid_key.txt rename to test/fixtures/maxmind_invalid_key diff --git a/test/fixtures/maxmind_no_results.txt b/test/fixtures/maxmind_no_results similarity index 100% rename from test/fixtures/maxmind_no_results.txt rename to test/fixtures/maxmind_no_results diff --git a/test/fixtures/nominatim_madison_square_garden.json b/test/fixtures/nominatim_madison_square_garden similarity index 100% rename from test/fixtures/nominatim_madison_square_garden.json rename to test/fixtures/nominatim_madison_square_garden diff --git a/test/fixtures/nominatim_no_results.json b/test/fixtures/nominatim_no_results similarity index 100% rename from test/fixtures/nominatim_no_results.json rename to test/fixtures/nominatim_no_results diff --git a/test/fixtures/yahoo_error.json b/test/fixtures/yahoo_error similarity index 100% rename from test/fixtures/yahoo_error.json rename to test/fixtures/yahoo_error diff --git a/test/fixtures/yahoo_invalid_key.json b/test/fixtures/yahoo_invalid_key similarity index 100% rename from test/fixtures/yahoo_invalid_key.json rename to test/fixtures/yahoo_invalid_key diff --git a/test/fixtures/yahoo_madison_square_garden.json b/test/fixtures/yahoo_madison_square_garden similarity index 100% rename from test/fixtures/yahoo_madison_square_garden.json rename to test/fixtures/yahoo_madison_square_garden diff --git a/test/fixtures/yahoo_no_results.json b/test/fixtures/yahoo_no_results similarity index 100% rename from test/fixtures/yahoo_no_results.json rename to test/fixtures/yahoo_no_results diff --git a/test/fixtures/yahoo_over_limit.json b/test/fixtures/yahoo_over_limit similarity index 100% rename from test/fixtures/yahoo_over_limit.json rename to test/fixtures/yahoo_over_limit diff --git a/test/fixtures/yandex_invalid_key.json b/test/fixtures/yandex_invalid_key similarity index 100% rename from test/fixtures/yandex_invalid_key.json rename to test/fixtures/yandex_invalid_key diff --git a/test/fixtures/yandex_kremlin.json b/test/fixtures/yandex_kremlin similarity index 100% rename from test/fixtures/yandex_kremlin.json rename to test/fixtures/yandex_kremlin diff --git a/test/fixtures/yandex_no_results.json b/test/fixtures/yandex_no_results similarity index 100% rename from test/fixtures/yandex_no_results.json rename to test/fixtures/yandex_no_results diff --git a/test/test_helper.rb b/test/test_helper.rb index f1b526c1..6fca5010 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -73,7 +73,11 @@ require "geocoder/lookups/base" module Geocoder module Lookup class Base - private #----------------------------------------------------------------- + private + def fixture_exists?(filename) + File.exist?(File.join("test", "fixtures", filename)) + end + def read_fixture(file) filepath = File.join("test", "fixtures", file) s = File.read(filepath).strip.gsub(/\n\s*/, "") @@ -83,140 +87,56 @@ module Geocoder end s end - end - - class Google < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - when "no locality"; :no_locality - when "no city data"; :no_city_data - else :madison_square_garden - end - read_fixture "google_#{file}.json" - end - end - - class GooglePremier < Google - end - class Yahoo < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - when "over limit"; :over_limit - when "invalid key"; :invalid_key - when "error"; :error - else :madison_square_garden - end - read_fixture "yahoo_#{file}.json" + def default_fixture_filename + "#{fixture_prefix}_madison_square_garden" end - end - class Yandex < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - when "invalid key"; :invalid_key - else :kremlin - end - read_fixture "yandex_#{file}.json" + def fixture_prefix + handle end - end - class GeocoderCa < Base - private #----------------------------------------------------------------- def make_api_request(query) raise TimeoutError if query.text == "timeout" raise SocketError if query.text == "socket_error" if query.reverse_geocode? - read_fixture "geocoder_ca_reverse.json" + filename = "#{fixture_prefix}_reverse" else - file = case query.text - when "no results"; :no_results - else :madison_square_garden - end - read_fixture "geocoder_ca_#{file}.json" + filename = "#{fixture_prefix}_#{query.text.gsub(" ", "_")}" end - end - end - - class Freegeoip < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - else "74_200_247_59" + if fixture_exists?(filename) + read_fixture "#{filename}" + else + read_fixture default_fixture_filename end - read_fixture "freegeoip_#{file}.json" end end - class Maxmind < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - when "invalid key"; :invalid_key - else "74_200_247_59" - end - read_fixture "maxmind_#{file}.txt" + class GooglePremier + private + def fixture_prefix + "google" end end - class Bing < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - if query.reverse_geocode? - read_fixture "bing_reverse.json" - else - file = case query.text - when "no results"; :no_results - else :madison_square_garden - end - read_fixture "bing_#{file}.json" - end + class Yandex + private + def default_fixture_filename + "yandex_kremlin" end end - class Nominatim < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - else :madison_square_garden - end - read_fixture "nominatim_#{file}.json" + class Freegeoip + private + def default_fixture_filename + "freegeoip_74_200_247_59" end end - class Mapquest < Base - private #----------------------------------------------------------------- - def make_api_request(query) - raise TimeoutError if query.text == "timeout" - raise SocketError if query.text == "socket_error" - file = case query.text - when "no results"; :no_results - else :madison_square_garden - end - read_fixture "mapquest_#{file}.json" + class Maxmind + private + def default_fixture_filename + "maxmind_74_200_247_59" end end -- GitLab