toulouse-maelis: ajouter du traitement sur les indicateurs passés à la démarche d'inscription en crèche (#74445) #105

Merged
nroche merged 1 commits from wip/74445-parsifal-manage-ape-indicators into main 2023-03-29 10:27:56 +02:00
2 changed files with 55 additions and 8 deletions

View File

@ -3282,6 +3282,23 @@ class ToulouseMaelis(BaseResource, HTTPResource):
post={'request_body': {'schema': {'application/json': family_schemas.NURSERY_DEMAND_SCHEMA}}},
)
def create_nursery_demand(self, request, post_data):
apeIndicators = self.get_referential('ApeIndicator')
for group in apeIndicators:
if group['id'] == 'INDI_APE_ENF':
key = 'child_indicators'
elif group['id'] == 'INDI_APE_FAM':
key = 'family_indicators'
else:
key = 'demand_indicators'
expected_codes = [x['code'] for x in group['indicatorList']]
for i, item in enumerate(post_data.get(key) or []):
if item['code'] not in expected_codes:
raise APIError(
"%s/%i/code key value '%s' do not belong to APE '%s' indicators"
% (key, i, item['code'], group['id'][-3:])
)
item['isActive'] = self.encode_bool(item['isActive'])
child_data = {}
if post_data.get('child_id'):
child_data['numPerson'] = post_data['child_id']

View File

@ -7678,7 +7678,20 @@ def test_get_nursery_geojson(con, app):
def test_create_nursery_demand(ape_service, con, app):
ape_service.add_soap_response('addApeBook', get_xml_file('R_create_nursery_demand.xml'))
def request_check(request):
assert [(x['code'], x['isActive']) for x in request.child['indiPersList']] == [
('APE_ALLO', True),
('APE-MINE', False),
]
assert [(x['code'], x['isActive']) for x in request.apeBook['indiResapeList']] == [
('APE_FIRSTC', True),
('APE_FRAT', False),
]
assert [(x['code'], x['isActive']) for x in request['indiFamList']] == [('APE_COMPO1', False)]
ape_service.add_soap_response(
'addApeBook', get_xml_file('R_create_nursery_demand.xml'), request_check=request_check
)
data = {
'family_id': '322425',
'accept_other_nurseries': False,
@ -7691,14 +7704,14 @@ def test_create_nursery_demand(ape_service, con, app):
'number_of_days': '1',
'child_indicators/0/code': 'APE_ALLO',
'child_indicators/0/isActive': True,
'child_indicators/1/code': 'code2',
'child_indicators/1/code': 'APE-MINE',
'child_indicators/1/isActive': False,
'demand_indicators/0/code': 'APE_ALLO',
'demand_indicators/0/isActive': True,
'demand_indicators/1/code': 'APE_ALLO',
'demand_indicators/1/isActive': False,
'family_indicators/0/code': 'APE_ALLO',
'family_indicators/0/isActive': False,
'demand_indicators/0/code': 'APE_FIRSTC',
'demand_indicators/0/isActive': 'Oui',
'demand_indicators/1/code': 'APE_FRAT',
'demand_indicators/1/isActive': 0,
'family_indicators/0/code': 'APE_COMPO1',
'family_indicators/0/isActive': 'False',
'start_hour_Mon': '09:00',
'end_hour_Mon': '18:00',
'nursery1/idActivity': 'M10000000004',
@ -7713,3 +7726,20 @@ def test_create_nursery_demand(ape_service, con, app):
data['start_hour_Tue'] = ''
resp = app.post_json(url, params=data)
assert resp.json['err'] == 0
def test_create_nursery_demand_wrong_referential_key_error(con, app):
url = get_endpoint('create-nursery-demand')
params = {
'family_id': '322425',
'start_date': '2023-04-01',
'family_indicators/0/code': 'APE_ALLO',
'family_indicators/0/isActive': 'False',
}
resp = app.post_json(url, params=params)
assert resp.json['err'] == 1
assert (
resp.json['err_desc']
== "family_indicators/0/code key value 'APE_ALLO' do not belong to APE 'FAM' indicators"
)