toulouse-axel: check children activities (#44724)
This commit is contained in:
parent
21432b360f
commit
1a8c34a1e6
|
@ -861,9 +861,11 @@ class ToulouseAxel(BaseResource):
|
|||
# exclude child in private schools
|
||||
if child['LIBELLEECOLE'].startswith('PRIVEE'):
|
||||
continue
|
||||
# exclude also child with more than one registration per activity_type
|
||||
# exclude also child with more than one registration per activity_type or missing activity
|
||||
activity_types = [a['TYPEACTIVITE'] for a in child.get('ACTIVITE', [])]
|
||||
if len(activity_types) > len(set(activity_types)):
|
||||
activity_types.sort()
|
||||
if activity_types != ['MAT', 'MIDI', 'SOIR'] and activity_types != ['GARD', 'MAT', 'MIDI', 'SOIR']:
|
||||
# GARD is optional
|
||||
continue
|
||||
# ok, store child
|
||||
data[child['IDPERSONNE']] = child
|
||||
|
|
|
@ -114,61 +114,5 @@
|
|||
<DATEFIN>31/07/2020</DATEFIN>
|
||||
</ACTIVITE>
|
||||
</ENFANT>
|
||||
<ENFANT>
|
||||
<NOM>foo</NOM>
|
||||
<PRENOM>foo</PRENOM>
|
||||
<DATENAISSANCE>01/01/2019</DATENAISSANCE>
|
||||
<IDPERSONNE>1234</IDPERSONNE>
|
||||
<REGIME>SV</REGIME>
|
||||
<LIBELLEECOLE>MATERNELLE 42</LIBELLEECOLE>
|
||||
<ACTIVITE>
|
||||
<TYPEACTIVITE>MAT</TYPEACTIVITE>
|
||||
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
||||
<LIBELLEACTIVITE>Temps du matin</LIBELLEACTIVITE>
|
||||
<DATEENTREE>01/08/2019</DATEENTREE>
|
||||
<DATESORTIE>31/07/2020</DATESORTIE>
|
||||
<TARIF>0.42</TARIF>
|
||||
<ISPAI>NON</ISPAI>
|
||||
<COUTREVIENT>99999</COUTREVIENT>
|
||||
<DATEDEBUT>01/08/2019</DATEDEBUT>
|
||||
<DATEFIN>31/07/2020</DATEFIN>
|
||||
</ACTIVITE>
|
||||
<ACTIVITE>
|
||||
<TYPEACTIVITE>MAT</TYPEACTIVITE>
|
||||
<IDACTIVITE>A19P1M1bis</IDACTIVITE>
|
||||
<LIBELLEACTIVITE>Temps du matin autre école</LIBELLEACTIVITE>
|
||||
<DATEENTREE>01/08/2019</DATEENTREE>
|
||||
<DATESORTIE>31/07/2020</DATESORTIE>
|
||||
<TARIF>0.43</TARIF>
|
||||
<ISPAI>NON</ISPAI>
|
||||
<COUTREVIENT>99999</COUTREVIENT>
|
||||
<DATEDEBUT>01/08/2019</DATEDEBUT>
|
||||
<DATEFIN>31/07/2020</DATEFIN>
|
||||
</ACTIVITE>
|
||||
<ACTIVITE>
|
||||
<TYPEACTIVITE>SOIR</TYPEACTIVITE>
|
||||
<IDACTIVITE>A19P1M3</IDACTIVITE>
|
||||
<LIBELLEACTIVITE>Temps du soir</LIBELLEACTIVITE>
|
||||
<DATEENTREE>01/08/2019</DATEENTREE>
|
||||
<DATESORTIE>31/07/2020</DATESORTIE>
|
||||
<TARIF>0.44</TARIF>
|
||||
<ISPAI>NON</ISPAI>
|
||||
<COUTREVIENT>99999</COUTREVIENT>
|
||||
<DATEDEBUT>01/08/2019</DATEDEBUT>
|
||||
<DATEFIN>31/07/2020</DATEFIN>
|
||||
</ACTIVITE>
|
||||
<ACTIVITE>
|
||||
<TYPEACTIVITE>GARD</TYPEACTIVITE>
|
||||
<IDACTIVITE>A19P1M4</IDACTIVITE>
|
||||
<LIBELLEACTIVITE>Temps mercredi après midi</LIBELLEACTIVITE>
|
||||
<DATEENTREE>01/08/2019</DATEENTREE>
|
||||
<DATESORTIE>31/07/2020</DATESORTIE>
|
||||
<TARIF>0.45</TARIF>
|
||||
<ISPAI>NON</ISPAI>
|
||||
<COUTREVIENT>99999</COUTREVIENT>
|
||||
<DATEDEBUT>01/08/2019</DATEDEBUT>
|
||||
<DATEFIN>31/07/2020</DATEFIN>
|
||||
</ACTIVITE>
|
||||
</ENFANT>
|
||||
</DUI>
|
||||
</PORTAIL>
|
||||
|
|
|
@ -2424,6 +2424,36 @@ def test_clae_children_activities_info_endpoint(app, resource):
|
|||
assert resp.json['err'] == 0
|
||||
|
||||
|
||||
@pytest.mark.parametrize('activities, expected', [
|
||||
# all activities except GARD - optional
|
||||
(['MAT', 'MIDI', 'SOIR'], True),
|
||||
# all activities
|
||||
(['MAT', 'MIDI', 'SOIR', 'GARD'], True),
|
||||
# duplicated activities
|
||||
(['MAT', 'MAT', 'MIDI', 'SOIR', 'GARD'], False),
|
||||
(['MAT', 'MIDI', 'MIDI', 'SOIR', 'GARD'], False),
|
||||
(['MAT', 'MIDI', 'SOIR', 'SOIR', 'GARD'], False),
|
||||
(['MAT', 'MIDI', 'SOIR', 'GARD', 'GARD'], False),
|
||||
# missing activity
|
||||
(['MIDI', 'SOIR'], False),
|
||||
(['MAT', 'SOIR'], False),
|
||||
(['MAT', 'MIDI'], False),
|
||||
])
|
||||
def test_clae_children_activities_info_check(app, resource, activities, expected):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
result = []
|
||||
for activity in activities:
|
||||
result.append({'IDACTIVITE': 'foo%s' % activity, 'TYPEACTIVITE': activity})
|
||||
result = {'DATA': {'PORTAIL': {'DUI': {'ENFANT': [
|
||||
{'IDPERSONNE': '42', 'NOM': '', 'PRENOM': '', 'REGIME': '', 'LIBELLEECOLE': '', 'ACTIVITE': result}
|
||||
]}}}}
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
||||
operation.return_value = schemas.OperationResult(json_response=result, xml_request='', xml_response='')
|
||||
resp = app.get('/toulouse-axel/test/clae_children_activities_info?NameID=yyy&booking_date=2020-01-20')
|
||||
assert resp.json['err'] == 0
|
||||
assert len(resp.json['data']) == expected and 1 or 0
|
||||
|
||||
|
||||
def test_clae_booking_activities_info_endpoint_axel_error(app, resource):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
||||
|
|
Loading…
Reference in New Issue