Proper empty count on bulk geocoding
This commit is contained in:
@@ -4,9 +4,44 @@
|
||||
from unittest import TestCase
|
||||
from mock import Mock, MagicMock
|
||||
from nose.tools import assert_not_equal, assert_equal, assert_true
|
||||
from cartodb_services.tools import QuotaExceededException
|
||||
from cartodb_services.geocoder import run_street_point_geocoder, StreetGeocoderSearch
|
||||
|
||||
|
||||
SEARCH_FIXTURES = {
|
||||
'two': [
|
||||
StreetGeocoderSearch(id=1, address='Paseo Zorrilla 1, Valladolid',
|
||||
city=None, state=None, country=None),
|
||||
StreetGeocoderSearch(id=2, address='Paseo Zorrilla 2, Valladolid',
|
||||
city=None, state=None, country=None)
|
||||
],
|
||||
'wrong': [
|
||||
StreetGeocoderSearch(id=100, address='deowpfjoepwjfopejwpofjewpojgf',
|
||||
city=None, state=None, country=None),
|
||||
]
|
||||
}
|
||||
|
||||
BULK_RESULTS_FIXTURES = {
|
||||
'two': [
|
||||
(1, [0, 0], {}),
|
||||
(2, [0, 0], {}),
|
||||
],
|
||||
'wrong': [
|
||||
(100, [], {})
|
||||
]
|
||||
}
|
||||
|
||||
EXPECTED_RESULTS_FIXTURES = {
|
||||
'two': [
|
||||
[1, [0, 0], '{}'],
|
||||
[2, [0, 0], '{}'],
|
||||
],
|
||||
'wrong': [
|
||||
[100, None, '{}']
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
class TestRunStreetPointGeocoder(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
@@ -44,24 +79,69 @@ class TestRunStreetPointGeocoder(TestCase):
|
||||
self.quota_service_mock.increment_failed_service_use. \
|
||||
assert_called_once_with(len(searches))
|
||||
|
||||
def test_count_increment_failed_service_use_on_quota_error(self):
|
||||
self.service_manager_mock.assert_within_limits = \
|
||||
Mock(side_effect=QuotaExceededException())
|
||||
|
||||
searches = SEARCH_FIXTURES['two']
|
||||
|
||||
result = run_street_point_geocoder(self.plpy_mock, self.gd_mock,
|
||||
self.geocoder_mock,
|
||||
self.service_manager_mock,
|
||||
'any_username', None, searches)
|
||||
assert_equal(result, [])
|
||||
|
||||
self.quota_service_mock.increment_failed_service_use. \
|
||||
assert_called_once_with(len(searches))
|
||||
|
||||
def test_increment_success_service_use_on_complete_response(self):
|
||||
searches = [
|
||||
StreetGeocoderSearch(id=1, address='Paseo Zorrilla 1, Valladolid',
|
||||
city=None, state=None, country=None),
|
||||
StreetGeocoderSearch(id=2, address='Paseo Zorrilla 2, Valladolid',
|
||||
city=None, state=None, country=None)
|
||||
]
|
||||
searches = SEARCH_FIXTURES['two']
|
||||
results = [
|
||||
(1, [0, 0], {}),
|
||||
(2, [0, 0], {}),
|
||||
]
|
||||
expected_results = [
|
||||
[1, [0, 0], '{}'],
|
||||
[2, [0, 0], '{}'],
|
||||
]
|
||||
self.geocoder_mock.bulk_geocode = MagicMock(return_value=results)
|
||||
run_street_point_geocoder(self.plpy_mock, self.gd_mock,
|
||||
self.geocoder_mock,
|
||||
self.service_manager_mock,
|
||||
'any_username', None, searches)
|
||||
result = run_street_point_geocoder(self.plpy_mock, self.gd_mock,
|
||||
self.geocoder_mock,
|
||||
self.service_manager_mock,
|
||||
'any_username', None, searches)
|
||||
assert_equal(result, expected_results)
|
||||
|
||||
self.quota_service_mock.increment_success_service_use.\
|
||||
self.quota_service_mock.increment_success_service_use. \
|
||||
assert_called_once_with(len(results))
|
||||
|
||||
def test_increment_empty_service_use_on_complete_response(self):
|
||||
searches = SEARCH_FIXTURES['two']
|
||||
results = []
|
||||
self.geocoder_mock.bulk_geocode = MagicMock(return_value=results)
|
||||
result = run_street_point_geocoder(self.plpy_mock, self.gd_mock,
|
||||
self.geocoder_mock,
|
||||
self.service_manager_mock,
|
||||
'any_username', None, searches)
|
||||
|
||||
assert_equal(result, results)
|
||||
|
||||
self.quota_service_mock.increment_empty_service_use. \
|
||||
assert_called_once_with(len(searches))
|
||||
|
||||
def test_increment_mixed_empty_service_use_on_complete_response(self):
|
||||
searches = SEARCH_FIXTURES['two'] + SEARCH_FIXTURES['wrong']
|
||||
bulk_results = BULK_RESULTS_FIXTURES['two'] + BULK_RESULTS_FIXTURES['wrong']
|
||||
self.geocoder_mock.bulk_geocode = MagicMock(return_value=bulk_results)
|
||||
result = run_street_point_geocoder(self.plpy_mock, self.gd_mock,
|
||||
self.geocoder_mock,
|
||||
self.service_manager_mock,
|
||||
'any_username', None, searches)
|
||||
|
||||
assert_equal(result, EXPECTED_RESULTS_FIXTURES['two'] + EXPECTED_RESULTS_FIXTURES['wrong'])
|
||||
|
||||
self.quota_service_mock.increment_success_service_use. \
|
||||
assert_called_once_with(len(SEARCH_FIXTURES['two']))
|
||||
self.quota_service_mock.increment_empty_service_use. \
|
||||
assert_called_once_with(len(SEARCH_FIXTURES['wrong']))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user