Esempio n. 1
0
    def test_address_lookup_calls_other_services_if_first_service_fails(self):
        """It should make another GET request if the first call fails."""
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=httplib.NOT_FOUND)

        self.app.get('/api/address-lookup?address=660+king+st')

        self.assertEqual(2, self.mock_urlopen.call_count)
    def test_get_lat_lng_raises_upon_when_result_set_is_empty(self):
        """Raises a GeocodeServiceSearchError if no results are found."""
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=200, search_results=[])

        with self.assertRaises(geocode_client.GeocodeServiceSearchError) as e:
            self.client.get_lat_lng_from_address('600 King St')

        self.assertIn('found no results', e.exception.message)
    def test_get_lat_lng_raises_upon_non_success_response(self):
        """Raises a GeocodeServiceSearchError if there's a failure."""
        error_response_code = httplib.BAD_REQUEST
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=error_response_code)

        with self.assertRaises(geocode_client.GeocodeServiceSearchError) as e:
            self.client.get_lat_lng_from_address('600 King St')

        self.assertIn(str(error_response_code), e.exception.message)
    def test_get_lat_lng_succeeds(self):
        """Getting lat/long returns first search result from Google."""
        expected_lat_lng = (42.33, -122.45)
        other_lat_lng = (22.55, 55.77)

        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=200, search_results=[expected_lat_lng, other_lat_lng])

        results = self.client.get_lat_lng_from_address('660 King St')

        self.assertEqual(expected_lat_lng, results)
Esempio n. 5
0
    def test_address_lookup_returns_404_if_all_services_fail(self):
        """It should return a 404 if it can't find any results."""
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=httplib.NOT_FOUND)

        response = self.app.get('/api/address-lookup?address=660+king+st')

        expected_data = {'error': 'Search term yielded no results'}
        actual_data = json.loads(response.data)

        self.assertEqual(httplib.NOT_FOUND, response.status_code)
        self.assertEqual(expected_data, actual_data)
    def test_get_lat_lng_makes_proper_call_to_google_service(self):
        """Getting lat/long forms a proper request to Here API."""
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=200, search_results=[(42.33, -122.45)])

        address = '660 King St'
        self.client.get_lat_lng_from_address(address)

        expected_params = urllib.urlencode({
            'address': address,
            'api_key': self.api_key,
        })
        expected_url = ('https://maps.googleapis.com/maps/api/geocode/json'
                        '?{}').format(expected_params)
        actual_url = self.mock_urlopen.call_args[0][0]

        self.assertEqual(expected_url, actual_url)
Esempio n. 7
0
    def test_address_lookup_api_succeeds_with_valid_address(self):
        """It should return a valid lat long in JSON for a valid address."""
        self.mock_urlopen.return_value = response_mocks.MockGoogleResponse(
            code=httplib.OK, search_results=[MOCK_LAT_LNG])

        response = self.app.get('/api/address-lookup?address=660+king+st')
        response_data = json.loads(response.data)

        expected_data = {
            'lat': MOCK_LAT_LNG[0],
            'lng': MOCK_LAT_LNG[1],
            'service': 'Google Maps Geocoding API',
        }

        self.assertEqual(httplib.OK, response.status_code)
        self.assertEqual(expected_data, response_data)
        self.assertEqual(1, self.mock_urlopen.call_count)