372 |
372 |
|
373 |
373 |
@pytest.mark.usefixtures('mock_update_api_geo')
|
374 |
374 |
@mock.patch('passerelle.utils.Request.get')
|
375 |
|
def test_base_adresse_command_hourly_update(mocked_get, db, base_adresse):
|
|
375 |
def test_base_adresse_command_job_update(mocked_get, db, base_adresse):
|
376 |
376 |
base_adresse.update_api_geo_data = lambda: None
|
377 |
377 |
filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.gz')
|
378 |
378 |
with open(filepath, 'rb') as ban_file:
|
379 |
379 |
mocked_get.return_value = utils.FakedResponse(content=ban_file.read(), status_code=200)
|
380 |
|
# check the first hourly job downloads streets
|
381 |
|
call_command('cron', 'hourly')
|
|
380 |
# check the job added at save() downloads streets
|
|
381 |
base_adresse.jobs()
|
382 |
382 |
mocked_get.assert_called_once_with('https://adresse.data.gouv.fr/data/ban/adresses/latest/addok/adresses-addok-73.ndjson.gz')
|
383 |
383 |
assert StreetModel.objects.all().count() == 3
|
384 |
|
# check a second call doesn't download anything
|
385 |
|
call_command('cron', 'hourly')
|
|
384 |
|
|
385 |
# second save doesn't download anything
|
|
386 |
base_adresse.save()
|
|
387 |
base_adresse.jobs()
|
386 |
388 |
assert mocked_get.call_count == 1
|
387 |
389 |
|
|
390 |
# but changing zipcode does
|
|
391 |
base_adresse.zipcode = '74'
|
|
392 |
base_adresse.save()
|
|
393 |
base_adresse.jobs()
|
|
394 |
assert mocked_get.call_count == 2
|
|
395 |
|
388 |
396 |
|
389 |
397 |
@pytest.mark.usefixtures('mock_update_api_geo')
|
390 |
398 |
@mock.patch('passerelle.utils.Request.get')
|
... | ... | |
649 |
657 |
|
650 |
658 |
@pytest.mark.usefixtures('mock_update_streets')
|
651 |
659 |
@mock.patch('passerelle.utils.Request.get')
|
652 |
|
def test_base_adresse_command_hourly_update_geo(mocked_get, db, base_adresse):
|
|
660 |
def test_base_adresse_command_job_update_geo(mocked_get, db, base_adresse):
|
653 |
661 |
return_values = [utils.FakedResponse(content=content, status_code=200)
|
654 |
662 |
for content in (FAKE_API_GEO_REGIONS, FAKE_API_GEO_DEPARTMENTS, FAKE_API_GEO)]
|
655 |
663 |
mocked_get.side_effect = return_values
|
656 |
|
# check the first hourly job downloads data
|
657 |
|
call_command('cron', 'hourly')
|
|
664 |
# check the job added at save() downloads data
|
|
665 |
base_adresse.jobs()
|
658 |
666 |
assert mocked_get.call_count == 3
|
659 |
667 |
assert CityModel.objects.count() == 3
|
660 |
|
# check a second call doesn't download anything
|
661 |
|
call_command('cron', 'hourly')
|
|
668 |
# second save doesn't download anything
|
|
669 |
base_adresse.save()
|
|
670 |
base_adresse.jobs()
|
662 |
671 |
assert mocked_get.call_count == 3
|
663 |
672 |
|
664 |
673 |
|