From 3d63c7b2cfb61f55cde317737811906ab49f0a29 Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Fri, 19 Jan 2018 11:40:21 +0100 Subject: [PATCH] Adds support for 0 latitude or 0 longitude --- js/geocoder.js | 2 +- js/googleApi.js | 2 +- test/unit/geocoder.test.js | 6 ++++++ test/unit/googleApi.test.js | 7 +++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/js/geocoder.js b/js/geocoder.js index 3a4563e..bdb9e13 100644 --- a/js/geocoder.js +++ b/js/geocoder.js @@ -11,7 +11,7 @@ export default { }, geocodePosition(position) { - if (!position || !position.lat || !position.lng) { + if (!position || (!position.lat && position.lat!==0) || (!position.lng && position.lng!==0)) { return Promise.reject(new Error("invalid position: {lat, lng} required")); } diff --git a/js/googleApi.js b/js/googleApi.js index 4358de7..deef541 100644 --- a/js/googleApi.js +++ b/js/googleApi.js @@ -59,7 +59,7 @@ function format(raw) { export default { geocodePosition(apiKey, position) { - if (!apiKey || !position || !position.lat || !position.lng) { + if (!apiKey || !position || (!position.lat && position.lat!==0) || (!position.lng && position.lng!==0)) { return Promise.reject(new Error("invalid apiKey / position")); } diff --git a/test/unit/geocoder.test.js b/test/unit/geocoder.test.js index 7759e53..25583b8 100644 --- a/test/unit/geocoder.test.js +++ b/test/unit/geocoder.test.js @@ -52,6 +52,12 @@ describe('geocoder', function() { expect(RNGeocoder.geocodePosition).to.have.been.calledWith(position); }); + it ('returns geocoding results with 0 lat and lng', async function() { + const position = {lat: 0, lng: 0}; + await Geocoder.geocodePosition(position); + expect(RNGeocoder.geocodePosition).to.have.been.calledWith(position); + }); + it ('does not call google api if no apiKey', function() { const position = {lat: 1.234, lng: 4.567}; RNGeocoder.geocodePosition = sinon.stub().returns(Promise.reject()); diff --git a/test/unit/googleApi.test.js b/test/unit/googleApi.test.js index f02e8b9..a41babd 100644 --- a/test/unit/googleApi.test.js +++ b/test/unit/googleApi.test.js @@ -22,6 +22,13 @@ describe('googleApi', function() { expect(ret).to.eql('yo'); }); + it ('position', async function() { + let ret = await GoogleApi.geocodePosition('myKey', {lat: 0, lng: 0}); + expect(geocodeRequest).to.have.been.calledWith( + 'https://maps.google.com/maps/api/geocode/json?key=myKey&latlng=0,0'); + expect(ret).to.eql('yo'); + }); + it ('address', async function() { let ret = await GoogleApi.geocodeAddress('myKey', "london"); expect(geocodeRequest).to.have.been.calledWith(