toulouse-maelis: do not crash on activity with no type (#74185) #85

Merged
nroche merged 1 commits from wip/74185-activity-without-nature into main 2023-02-06 08:32:59 +01:00
2 changed files with 25 additions and 3 deletions

View File

@ -2189,12 +2189,12 @@ class ToulouseMaelis(BaseResource, HTTPResource):
data = []
for activity in activities:
if activity['activityPortail']['activityType']['natureSpec']['code'] not in ('P', 'L', 'S'):
activity_type = activity['activityPortail'].get('activityType')
activity_nature = activity_type.get('natureSpec') if activity_type else None
if not activity_nature or activity_nature['code'] not in ('P', 'L', 'S'):
continue
activity['id'] = activity['activityPortail']['idAct']
activity['text'] = activity['activityPortail']['libelle']
activity_type = activity['activityPortail']['activityType']
activity_nature = activity_type['natureSpec']
for label_key in criterias:
criterias[label_key]['data'] = {}

View File

@ -4746,6 +4746,7 @@ def test_read_activity_list(con, app, freezer):
params = {'ref_date': datetime.date.today().strftime(json_date_format)}
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 4
item = resp.json['data'][0]
item['activity'] = 'N/A'
item['unit'] = 'N/A'
@ -4794,6 +4795,27 @@ def test_read_activity_list(con, app, freezer):
}
def test_read_activity_list_no_nature(con, app, freezer):
freezer.move_to('2023-01-01 12:00')
url = get_endpoint('read-activity-list')
params = {'ref_date': datetime.date.today().strftime(json_date_format)}
# Empty activity type return by referential
def mocked_reply(referential_name, id=None):
queryset = con.referential.filter(referential_name=referential_name, item_id=id)
data = [x.item_data for x in queryset]
activity = data[0]['data'][0]
activity['activityPortail']['activityType'] = None
return data
with mock.patch('passerelle.contrib.toulouse_maelis.models.ToulouseMaelis.get_referential') as mocked_ref:
mocked_ref.side_effect = mocked_reply
resp = app.get(url, params=params)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 0
def test_get_person_activity_list(activity_service, con, app):
def request_check(request):
assert request.yearSchool == 2022