toulouse-axel: fix possible days endpoint (#78903)
gitea/passerelle/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2023-06-22 16:15:09 +02:00
parent 0616f216bf
commit f928a10fc5
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 66 additions and 6 deletions

View File

@ -1014,14 +1014,15 @@ class ToulouseAxel(BaseResource):
# build the response payload: add booking to activities information
booking_days = {}
for booking in child_booking.get('ACTIVITE', []):
jour = (booking.get('JOUR') or '').ljust(5, '0')
booking_days[booking['IDACTIVITE']] = {
'raw_value': booking['JOUR'],
'raw_value': jour,
'days': {
'monday': utils.get_booking(booking['JOUR'][0]),
'tuesday': utils.get_booking(booking['JOUR'][1]),
'wednesday': utils.get_booking(booking['JOUR'][2]),
'thursday': utils.get_booking(booking['JOUR'][3]),
'friday': utils.get_booking(booking['JOUR'][4]),
'monday': utils.get_booking(jour[0]),
'tuesday': utils.get_booking(jour[1]),
'wednesday': utils.get_booking(jour[2]),
'thursday': utils.get_booking(jour[3]),
'friday': utils.get_booking(jour[4]),
},
}

View File

@ -3341,6 +3341,65 @@ def test_clae_booking_activity_possible_days_endpoint_no_result(app, resource, c
assert resp.json['err'] == 0
assert resp.json['data'] == []
content = """<PORTAIL>
<DUI>
<IDDUI>XXX</IDDUI>
<ENFANT>
<IDPERSONNE>3535</IDPERSONNE>
<ACTIVITE>
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
<IDACTIVITE>A19P1M1</IDACTIVITE>
<JOUR/>
</ACTIVITE>
</ENFANT>
</DUI>
</PORTAIL>"""
activities = child_activities_data['ENFANT'][0]
with mock_getdata(content, 'ReservationPeriode'):
with mock.patch(
'passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities',
return_value=activities,
):
resp = app.get(
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
'&start_date=2020-01-20&end_date=2020-01-24&activity_type=MAT'
)
assert resp.json['err'] == 0
assert len(resp.json['data']) == 5
assert (
list(d['details']['booking']['days'] for d in resp.json['data'])
== [{'monday': False, 'tuesday': False, 'wednesday': False, 'thursday': False, 'friday': False}] * 5
)
content = """<PORTAIL>
<DUI>
<IDDUI>XXX</IDDUI>
<ENFANT>
<IDPERSONNE>3535</IDPERSONNE>
<ACTIVITE>
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
<IDACTIVITE>A19P1M1</IDACTIVITE>
<JOUR>2</JOUR> <!-- invalid value returned by axel, five digits are required -->
</ACTIVITE>
</ENFANT>
</DUI>
</PORTAIL>"""
activities = child_activities_data['ENFANT'][0]
with mock_getdata(content, 'ReservationPeriode'):
with mock.patch(
'passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities',
return_value=activities,
):
resp = app.get(
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
'&start_date=2020-01-20&end_date=2020-01-24&activity_type=MAT'
)
assert len(resp.json['data']) == 5
assert (
list(d['details']['booking']['days'] for d in resp.json['data'])
== [{'monday': False, 'tuesday': False, 'wednesday': False, 'thursday': False, 'friday': False}] * 5
)
@freezegun.freeze_time('2019-09-01')
def test_clae_booking_activity_possible_days_endpoint(app, resource, child_activities_data):