From 4e2d27795df3b68a859f9b2547a53a4f23326bda Mon Sep 17 00:00:00 2001 From: George Lee <mclee@foolme.net> Date: Sat, 16 Nov 2013 20:51:56 +0800 Subject: [PATCH] bugfixes, add tests --- lib/geocoder/lookups/baidu.rb | 4 ++-- lib/geocoder/results/baidu.rb | 16 ++++++++++++++++ test/fixtures/baidu_invalid_key | 1 + test/fixtures/baidu_no_results | 1 + test/fixtures/baidu_reverse | 1 + test/fixtures/baidu_shanghai_pearl_tower | 12 ++++++++++++ test/test_helper.rb | 9 +++++++++ 7 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/baidu_invalid_key create mode 100644 test/fixtures/baidu_no_results create mode 100644 test/fixtures/baidu_reverse create mode 100644 test/fixtures/baidu_shanghai_pearl_tower diff --git a/lib/geocoder/lookups/baidu.rb b/lib/geocoder/lookups/baidu.rb index 4bd80f21..51b74620 100644 --- a/lib/geocoder/lookups/baidu.rb +++ b/lib/geocoder/lookups/baidu.rb @@ -21,7 +21,7 @@ module Geocoder::Lookup def results(query, reverse = false) return [] unless doc = fetch_data(query) case doc['status']; when 0 - return [doc['result']] + return [doc['result']] unless doc['result'].blank? when 1, 3, 4 raise_error(Geocoder::Error, messages) || warn("Baidu Geocoding API error: server error.") @@ -46,7 +46,7 @@ module Geocoder::Lookup (query.reverse_geocode? ? :location : :address) => query.sanitized_text, :ak => configuration.api_key, :output => "json" - } + }.merge(super) end end diff --git a/lib/geocoder/results/baidu.rb b/lib/geocoder/results/baidu.rb index 27adbde1..62fbc6f1 100644 --- a/lib/geocoder/results/baidu.rb +++ b/lib/geocoder/results/baidu.rb @@ -43,6 +43,22 @@ module Geocoder::Result @data['addressComponent'] end + def state_code + "" + end + + def postal_code + "" + end + + def country + "China" + end + + def country_code + "CN" + end + ## # Get address components of a given type. Valid types are defined in # Baidu's Geocoding API documentation and include (among others): diff --git a/test/fixtures/baidu_invalid_key b/test/fixtures/baidu_invalid_key new file mode 100644 index 00000000..9e706568 --- /dev/null +++ b/test/fixtures/baidu_invalid_key @@ -0,0 +1 @@ +{"results":[],"status":5,"msg":"AK Illegal or Not Exist:"} diff --git a/test/fixtures/baidu_no_results b/test/fixtures/baidu_no_results new file mode 100644 index 00000000..1ab1ab3f --- /dev/null +++ b/test/fixtures/baidu_no_results @@ -0,0 +1 @@ +{"status":0,"result":[]} diff --git a/test/fixtures/baidu_reverse b/test/fixtures/baidu_reverse new file mode 100644 index 00000000..bf6dcf0c --- /dev/null +++ b/test/fixtures/baidu_reverse @@ -0,0 +1 @@ +{"status":0,"result":{"location":{"lng":121.48789948569,"lat":31.249161555654},"formatted_address":"上海市闸北区天潼路619å·","business":"七浦路,æµ·å®è·¯,北京东路","addressComponent":{"city":"上海市","district":"闸北区","province":"上海市","street":"天潼路","street_number":"619å·"},"cityCode":289}} diff --git a/test/fixtures/baidu_shanghai_pearl_tower b/test/fixtures/baidu_shanghai_pearl_tower new file mode 100644 index 00000000..f5619fe2 --- /dev/null +++ b/test/fixtures/baidu_shanghai_pearl_tower @@ -0,0 +1,12 @@ +{ + "status":0, + "result":{ + "location":{ + "lng":116.30814954222, + "lat":40.056885091681 + }, + "precise":1, + "confidence":80, + "level":"\u5546\u52a1\u5927\u53a6" + } +} diff --git a/test/test_helper.rb b/test/test_helper.rb index 24ca32c7..06e3272f 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -147,6 +147,15 @@ module Geocoder end end + class Baidu + private + def fixture_prefix + "baidu" + end + def default_fixture_filename + "baidu_shanghai_pearl_tower" + end + end end end -- GitLab