base_adresse: fix cron with not found region (#67629)
This commit is contained in:
parent
9f916e1827
commit
7cf903431a
|
@ -543,6 +543,8 @@ class BaseAdresse(AddressResource):
|
|||
if not data:
|
||||
return None
|
||||
region = get_region(data['codeRegion'])
|
||||
if not region:
|
||||
return None
|
||||
departement, created = self.departmentmodel_set.get_or_create(
|
||||
code=data['code'], defaults={'name': data['nom'], 'region': region}
|
||||
)
|
||||
|
|
|
@ -817,6 +817,39 @@ def test_base_adresse_command_update_geo_invalid(mocked_get, db, base_adresse):
|
|||
assert not RegionModel.objects.exists()
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('mock_update_streets')
|
||||
@mock.patch('passerelle.utils.Request.get')
|
||||
def test_base_adresse_command_update_geo_region_not_found(mocked_get, db, base_adresse):
|
||||
new_fake_api_geo_regions = json.dumps([json.loads(FAKE_API_GEO_REGIONS)[1]])
|
||||
return_values = [
|
||||
tests.utils.FakedResponse(content=content, status_code=200)
|
||||
for content in (
|
||||
new_fake_api_geo_regions, # first call, get regions
|
||||
FAKE_API_GEO_DEPARTMENTS, # then, get departments
|
||||
FAKE_API_GEO, # and get communes
|
||||
)
|
||||
] + [
|
||||
# region code 11 not found, try to get it again
|
||||
tests.utils.FakedResponse(content='not-json', status_code=200),
|
||||
tests.utils.FakedResponse(content='not-json', status_code=200),
|
||||
tests.utils.FakedResponse(content='not-json', status_code=200),
|
||||
]
|
||||
mocked_get.side_effect = return_values
|
||||
call_command('cron', 'daily')
|
||||
assert mocked_get.call_args_list == [
|
||||
mock.call('https://geo.api.gouv.fr/regions'),
|
||||
mock.call('https://geo.api.gouv.fr/departements'),
|
||||
mock.call('https://geo.api.gouv.fr/communes'),
|
||||
mock.call('https://geo.api.gouv.fr/regions/11'),
|
||||
mock.call('https://geo.api.gouv.fr/regions/11'),
|
||||
mock.call('https://geo.api.gouv.fr/regions/11'),
|
||||
]
|
||||
assert RegionModel.objects.count() == 1
|
||||
assert RegionModel.objects.get().code == '27'
|
||||
assert DepartmentModel.objects.count() == 1
|
||||
assert DepartmentModel.objects.get().code == '58'
|
||||
|
||||
|
||||
@pytest.mark.usefixtures('mock_update_api_geo')
|
||||
@mock.patch('passerelle.utils.Request.get', side_effect=ConnectionError)
|
||||
def test_base_adresse_command_update_street_timeout(mocked_get, db, base_adresse):
|
||||
|
|
Loading…
Reference in New Issue