class TestGmapHelper(TestCase): def setUp(self): self.G = GMapClient() self.client = googlemaps.Client(key=settings.DJANGO_GC_MAP_API_KEY) def test_directions(self): self.assertEqual(len(gmap_history), 0) res = self.G.directions('Paris', 'Amsterdam', mode='driving') self.assertEqual(len(gmap_history), 1) self.assertEqual( res, self.client.directions('Paris', 'Amsterdam', mode='driving')) # call again to fetch from cache res = self.G.directions('Paris', 'Amsterdam', mode='driving') self.assertEqual(len(gmap_history), 1) self.assertEqual( res, self.client.directions('Paris', 'Amsterdam', mode='driving')) # big_route = [ 'Malaya Arnautskaya 5, Odessa, Ukraine', 'Shevchenko 5, Dnipro, Ukraine', 'Khreschatyk 5, Kiev, Ukraine' ] * 10 res = self.G.directions('Paris', 'Amsterdam', waypoints=big_route, mode='driving') legs = res[0]['legs'] # module will do 2 requests to google maps self.assertEqual(len(gmap_history), 3) self.assertIn('Paris', legs[0]['start_address']) self.assertIn('Amsterdam', legs[-1]['end_address']) def test_directions_statistics(self): res = self.G.directions(u'Киев', u'Берлин', mode='driving') stat = self.G.direction_statistics_by_country(res[0]) #print(json.dumps(stat)) self.assertEqual(len(stat), 3) self.assertEqual( stat[0]['short_name'], 'UA' # ukraine ) self.assertTrue(520000 > stat[0]['distance'] > 505000) self.assertEqual( stat[1]['short_name'], 'PL' # poland ) self.assertTrue(742000 > stat[1]['distance'] > 726000) self.assertEqual( stat[2]['short_name'], 'DE' # germany ) self.assertTrue(103000 > stat[2]['distance'] > 101000)
class TestGmapHelper(TestCase): def setUp(self): self.G = GMapClient() def test_geocode_country_only_fail(self): places = ["EMPTY GEOCODE RESULT"] # empty result self.assertRaisesMessage( exceptions.EmptyGeocodeResult, ERROR_MSGS['empty_geocode_result'].format(search_string=places[0]), self.G.geocode_country_only, places) def test_geocode_contry_only(self): # fetch single places_in_amsterdam = [ 'NEMO Science Museum', 'Fjällräven Flagship Store Amsterdam' ] for place in places_in_amsterdam: country_info = self.G.geocode_country_only(place + ', ' + 'Amsterdam') self.assertDictEqual(country_info, { u'long_name': u'Netherlands', u'short_name': u'NL' }) history_len_last = len(gmap_history) # run geocode again. # this time no googlemaps call will be done self.G.geocode_city_only(places_in_amsterdam[0] + ', ' + 'Amsterdam') self.assertEqual(len(gmap_history), history_len_last) country_info = self.G.geocode_country_only( u'Одесса, Потемкинская лестница') self.assertDictEqual(country_info, { u'long_name': u'Ukraine', u'short_name': u'UA' }) self.assertEqual(len(gmap_history), history_len_last + 2)
class TestGmapHelper(TestCase): def setUp(self): self.G = GMapClient() def test_geocode_city_only_fail(self): places = ["EMPTY GEOCODE RESULT"] # empty result self.assertRaisesMessage( exceptions.EmptyGeocodeResult, ERROR_MSGS['empty_geocode_result'].format(search_string=places[0]), self.G.geocode_city_only, places) def test_geocode_city_only(self): # fetch single amsterdam = self.G.geocode('Amsterdam')[0]['geometry']['location'] places_in_amsterdam = [ 'NEMO Science Museum', 'Fjällräven Flagship Store Amsterdam' ] for place in places_in_amsterdam: place_coordinates = self.G.geocode( place)[0]['geometry']['location'] city_coordinates = self.G.geocode_city_only( place)[0]['geometry']['location'] # place in city 'amsterdam' self.assertDictEqual(city_coordinates, amsterdam) # coordinates is not real place coordinates but city self.assertNotEqual(city_coordinates['lat'], place_coordinates['lat']) self.assertNotEqual(city_coordinates['lng'], place_coordinates['lng']) history_len_last = len(gmap_history) # run geocode again. # this time no googlemaps call will be done self.G.geocode_city_only(places_in_amsterdam[0]) self.assertEqual(len(gmap_history), history_len_last)
class TestGmapHelper(TestCase): def setUp(self): self.G = GMapClient() self.h_len = len(gmap_history) def test_fail_decode(self): # invalid input type 'float' self.assertRaisesMessage( TypeError, ERROR_MSGS['geocode_invalid_type'].format(type=type(1.1)), self.G.geocode, 1.1) # invalid input type 'int' inside list self.assertRaisesMessage( TypeError, ERROR_MSGS['geocode_invalid_type'].format(type=type(1)), self.G.geocode, [1, 'Paris']) def test_geocode(self): # fetch single self.G.geocode('Amsterdam') self.assertEqual(len(gmap_history), self.h_len + 1) # fetch from cache self.G.geocode('Amsterdam') self.assertEqual(len(gmap_history), self.h_len + 1) # ignore cache self.G.geocode('Amsterdam', ignore_cache=True) self.assertEqual(len(gmap_history), self.h_len + 2) self.assertEqual(gmap_history[self.h_len + 1].action, 'geocode') self.assertEqual(gmap_history[self.h_len + 1].args, ('Amsterdam', )) # fetch multiple locations res = self.G.geocode(['Paris', 'Amsterdam']) self.assertEqual(len(gmap_history), self.h_len + 3) # only 'Paris', 'Amsterdam' we have in cache self.assertEqual(gmap_history[self.h_len + 2].action, 'geocode') self.assertEqual(gmap_history[self.h_len + 2].args, ('Paris', )) # paris coordinates self.assertEqual(res[0][0]['geometry']['location']['lat'], 48.856614) self.assertEqual(res[0][0]['geometry']['location']['lng'], 2.3522219) # amsterdam coordinates self.assertEqual(res[1][0]['geometry']['location']['lat'], 52.3675734) self.assertEqual(res[1][0]['geometry']['location']['lng'], 4.9041389) # fetch multiple locations from cache res = self.G.geocode(['Paris', 'Amsterdam']) self.assertEqual(len(gmap_history), self.h_len + 3)
def setUp(self): self.G = GMapClient()
def setUp(self): self.G = GMapClient() self.h_len = len(gmap_history)
def setUp(self): self.G = GMapClient() self.client = googlemaps.Client(key=settings.DJANGO_GC_MAP_API_KEY)