Projet

Général

Profil

0001-base_adresse-don-t-clear-streets-if-file-is-empty-20.patch

Lauréline Guérin, 08 octobre 2019 11:13

Télécharger (2,94 ko)

Voir les différences:

Subject: [PATCH] base_adresse: don't clear streets if file is empty (#20308)

 passerelle/apps/base_adresse/models.py |  3 +++
 tests/test_jobs.py                     | 17 +++++++++++++++++
 2 files changed, 20 insertions(+)
passerelle/apps/base_adresse/models.py
176 176
            if ban_file.status_code != 200:
177 177
                continue
178 178

  
179
            line = _not_found = object()
179 180
            for line in bz2.decompress(ban_file.content).splitlines():
180 181
                street_info = json.loads(line)
181 182
                if street_info['type'] == 'street' and street_info['postcode'].startswith(zipcodes):
......
191 192
                    street[0].type = street_info['type']
192 193
                    street[0].citycode = street_info['citycode']
193 194
                    street[0].save()
195
            if line is _not_found:
196
                raise Exception('bano file is empty')
194 197

  
195 198
        self.get_streets_queryset().filter(last_update__lt=start_update).delete()
196 199

  
tests/test_jobs.py
17 17
    filepath = os.path.join(os.path.dirname(__file__), 'data', 'update_streets_test.bz2')
18 18
    mocked_get.return_value = utils.FakedResponse(content=open(filepath).read(), status_code=200)
19 19

  
20
    freezer.move_to('2019-01-01 00:00:00')
20 21
    job = base_adresse.add_job('update_streets_data')
21 22
    assert job.status == 'registered'
22 23

  
......
24 25
    assert Job.objects.get(id=job.id).status == 'completed'
25 26
    assert StreetModel.objects.count() == 3
26 27

  
28
    # don't delete streets if bano file is empty
29
    mocked_get.return_value = utils.FakedResponse(content='', status_code=200)
30
    freezer.move_to('2019-01-01 12:00:00')
31
    job = base_adresse.add_job('update_streets_data')
32
    assert job.status == 'registered'
33

  
34
    base_adresse.jobs()
35
    assert Job.objects.get(id=job.id).status == 'failed'
36
    assert Job.objects.get(id=job.id).status_details == {'error_summary': 'Exception: bano file is empty'}
37
    assert ResourceLog.objects.all().count() == 1
38
    assert ResourceLog.objects.all()[0].message == (
39
        'error running update_streets_data job (bano file is empty)')
40
    assert StreetModel.objects.count() == 3
41

  
42
    mocked_get.return_value = utils.FakedResponse(content=open(filepath).read(), status_code=200)
43

  
27 44
    StreetModel.objects.all().delete()
28 45

  
29 46
    ResourceLog.objects.all().delete()
30
-