0002-toulouse_axel-handle-handicap-fields-38543.patch
functests/toulouse_axel/test_toulouse_axel.py | ||
---|---|---|
41 | 41 |
for key in ['NOM', 'DATENAISSANCE', 'SEXE', 'PRENOMPERE', 'PRENOMMERE', 'NOMPERE', 'NOMMERE', 'RATTACHEAUTREDUI', 'PRENOM']: |
42 | 42 |
enfant.pop(key) |
43 | 43 |
enfant['AUTORISATIONURGENCEMEDICALE'] = 'OUI' |
44 |
if 'SANITAIRE' not in enfant: |
|
45 |
continue |
|
46 |
# manage handicap data (not the same schema) |
|
47 |
handicap_fields = [ |
|
48 |
'AUTREDIFFICULTE', |
|
49 |
'ECOLESPECIALISEE', |
|
50 |
'INDICATEURAUXILIAIREVS', |
|
51 |
'INDICATEURECOLE', |
|
52 |
'INDICATEURHANDICAP', |
|
53 |
'INDICATEURNOTIFMDPH', |
|
54 |
] |
|
55 |
enfant['SANITAIRE']['HANDICAP'] = {} |
|
56 |
for key in handicap_fields: |
|
57 |
enfant['SANITAIRE']['HANDICAP'][key] = enfant['SANITAIRE'].pop(key) |
|
58 |
# add partial update flags |
|
44 | 59 |
flags = [ |
45 | 60 |
'maj:adresse', |
46 | 61 |
'maj:rl1', 'maj:rl1_adresse_employeur', |
... | ... | |
54 | 69 |
'maj:enfant_%s_sanitaire_medecin' % i, |
55 | 70 |
'maj:enfant_%s_sanitaire_vaccin' % i, |
56 | 71 |
'maj:enfant_%s_sanitaire_allergie' % i, |
72 |
'maj:enfant_%s_sanitaire_handicap' % i, |
|
57 | 73 |
'maj:enfant_%s_assurance' % i, |
58 | 74 |
'maj:enfant_%s_contact' % i, |
59 | 75 |
] |
passerelle/contrib/toulouse_axel/models.py | ||
---|---|---|
286 | 286 |
'maj:enfant_%s_sanitaire_medecin' % i: 'ENFANT/%s/SANITAIRE/MEDECIN' % i, |
287 | 287 |
'maj:enfant_%s_sanitaire_vaccin' % i: 'ENFANT/%s/SANITAIRE/VACCIN' % i, |
288 | 288 |
'maj:enfant_%s_sanitaire_allergie' % i: 'ENFANT/%s/SANITAIRE/ALLERGIE' % i, |
289 |
'maj:enfant_%s_sanitaire_handicap' % i: 'ENFANT/%s/SANITAIRE/HANDICAP' % i, |
|
289 | 290 |
'maj:enfant_%s_assurance' % i: 'ENFANT/%s/ASSURANCE' % i, |
290 | 291 |
'maj:enfant_%s_contact' % i: 'ENFANT/%s/CONTACT' % i, |
291 | 292 |
}) |
292 | 293 |
UPDATE_FAMILY_REQUIRED_FLAGS.append('maj:enfant_%s' % i) |
294 | ||
293 | 295 |
UPDATE_FAMILY_SCHEMA = copy.deepcopy( |
294 | 296 |
form_maj_famille_dui.request_schema['properties']['PORTAIL']['properties']['DUI']) |
295 |
UPDATE_FAMILY_SCHEMA['properties'].pop('IDDUI') |
|
296 |
UPDATE_FAMILY_SCHEMA['properties'].pop('DATEDEMANDE') |
|
297 |
UPDATE_FAMILY_SCHEMA['properties'].pop('QUIACTUALISEDUI') |
|
298 |
UPDATE_FAMILY_SCHEMA['required'].remove('IDDUI') |
|
299 |
UPDATE_FAMILY_SCHEMA['required'].remove('DATEDEMANDE') |
|
300 |
UPDATE_FAMILY_SCHEMA['required'].remove('QUIACTUALISEDUI') |
|
297 | ||
301 | 298 |
for flag in sorted(UPDATE_FAMILY_FLAGS.keys()): |
302 | 299 |
flag_type = { |
303 | 300 |
'oneOf': [ |
... | ... | |
313 | 310 |
flag_type['oneOf'].append({'type': 'string', 'enum': ['']}) |
314 | 311 |
UPDATE_FAMILY_SCHEMA['properties'][flag] = flag_type |
315 | 312 |
UPDATE_FAMILY_SCHEMA['required'].append(flag) |
313 | ||
314 |
UPDATE_FAMILY_SCHEMA['properties'].pop('IDDUI') |
|
315 |
UPDATE_FAMILY_SCHEMA['properties'].pop('DATEDEMANDE') |
|
316 |
UPDATE_FAMILY_SCHEMA['properties'].pop('QUIACTUALISEDUI') |
|
317 |
UPDATE_FAMILY_SCHEMA['required'].remove('IDDUI') |
|
318 |
UPDATE_FAMILY_SCHEMA['required'].remove('DATEDEMANDE') |
|
319 |
UPDATE_FAMILY_SCHEMA['required'].remove('QUIACTUALISEDUI') |
|
320 |
handicap_fields = [ |
|
321 |
'AUTREDIFFICULTE', |
|
322 |
'ECOLESPECIALISEE', |
|
323 |
'INDICATEURAUXILIAIREVS', |
|
324 |
'INDICATEURECOLE', |
|
325 |
'INDICATEURHANDICAP', |
|
326 |
'INDICATEURNOTIFMDPH', |
|
327 |
] |
|
328 |
sanitaire_properties = UPDATE_FAMILY_SCHEMA['properties']['ENFANT']['items']['properties']['SANITAIRE']['properties'] |
|
329 |
sanitaire_required = UPDATE_FAMILY_SCHEMA['properties']['ENFANT']['items']['properties']['SANITAIRE']['required'] |
|
330 |
sanitaire_properties['HANDICAP'] = { |
|
331 |
'type': 'object', |
|
332 |
'properties': {}, |
|
333 |
'required': handicap_fields, |
|
334 |
} |
|
335 |
sanitaire_required.append('HANDICAP') |
|
336 |
for key in handicap_fields: |
|
337 |
field = sanitaire_properties.pop(key) |
|
338 |
sanitaire_properties['HANDICAP']['properties'][key] = field |
|
339 |
sanitaire_required.remove(key) |
|
340 | ||
316 | 341 |
UPDATE_FAMILY_SCHEMA['unflatten'] = True |
317 | 342 | |
318 | 343 |
@endpoint( |
... | ... | |
462 | 487 |
raise APIError('Child not found', err_code='not-found') |
463 | 488 | |
464 | 489 |
def sanitize_update_family_data(self, name_id, post_data): |
490 |
family_data = None |
|
491 | ||
465 | 492 |
# transform ENFANT list to dict, where the key is the field IDPERSONNE |
466 | 493 |
# because children in post_date are maybe not in the same order than on Axel side |
467 | 494 |
children = {} |
... | ... | |
517 | 544 |
# empty all subelements |
518 | 545 |
for k in data[element_to_remove].keys(): |
519 | 546 |
data[element_to_remove][k] = None |
547 |
elif element_to_remove == 'HANDICAP': |
|
548 |
# get the correct child |
|
549 |
child_data = post_data['ENFANT'][elements[1]] |
|
550 |
child_id = child_data['IDPERSONNE'] |
|
551 |
# get family info |
|
552 |
if family_data is None: |
|
553 |
family_data = self.get_family_data(name_id) |
|
554 |
for child in family_data['ENFANT']: |
|
555 |
# find the correct child in family info |
|
556 |
if child['IDPERSONNE'] != child_id: |
|
557 |
continue |
|
558 |
# reset handicap related fields |
|
559 |
handicap_fields = [ |
|
560 |
'AUTREDIFFICULTE', |
|
561 |
'ECOLESPECIALISEE', |
|
562 |
'INDICATEURAUXILIAIREVS', |
|
563 |
'INDICATEURECOLE', |
|
564 |
'INDICATEURHANDICAP', |
|
565 |
'INDICATEURNOTIFMDPH', |
|
566 |
] |
|
567 |
for key in handicap_fields: |
|
568 |
child_data['SANITAIRE']['HANDICAP'][key] = child['SANITAIRE'][key] |
|
569 |
break |
|
520 | 570 |
elif element_to_remove in data: |
521 | 571 |
# remove block |
522 | 572 |
data.pop(element_to_remove) |
523 | 573 | |
574 |
# transform HANDICAP block |
|
575 |
for child in post_data['ENFANT'].values(): |
|
576 |
if 'SANITAIRE' not in child: |
|
577 |
continue |
|
578 |
child['SANITAIRE'].update(child['SANITAIRE'].pop('HANDICAP')) |
|
579 | ||
524 | 580 |
# transform ENFANT dict to a list back |
525 | 581 |
post_data['ENFANT'] = post_data['ENFANT'].values() |
526 | 582 |
tests/data/toulouse_axel/flat_update_family_info.json | ||
---|---|---|
45 | 45 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/ALLERGIQUE": "OUI", |
46 | 46 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/NOMALLERGIE": "", |
47 | 47 |
"ENFANT/0/SANITAIRE/ALLERGIE/2/TYPE": "ALIMENTAIRES", |
48 |
"ENFANT/0/SANITAIRE/AUTREDIFFICULTE": "", |
|
49 | 48 |
"ENFANT/0/SANITAIRE/DATEFINVALIDITE": "2020-12-31", |
50 |
"ENFANT/0/SANITAIRE/ECOLESPECIALISEE": "", |
|
51 |
"ENFANT/0/SANITAIRE/INDICATEURAUXILIAIREVS": "NON", |
|
52 |
"ENFANT/0/SANITAIRE/INDICATEURECOLE": "NON", |
|
53 |
"ENFANT/0/SANITAIRE/INDICATEURHANDICAP": "NON", |
|
54 |
"ENFANT/0/SANITAIRE/INDICATEURNOTIFMDPH": "NON", |
|
49 |
"ENFANT/0/SANITAIRE/HANDICAP/AUTREDIFFICULTE": "", |
|
50 |
"ENFANT/0/SANITAIRE/HANDICAP/ECOLESPECIALISEE": "", |
|
51 |
"ENFANT/0/SANITAIRE/HANDICAP/INDICATEURAUXILIAIREVS": "NON", |
|
52 |
"ENFANT/0/SANITAIRE/HANDICAP/INDICATEURECOLE": "NON", |
|
53 |
"ENFANT/0/SANITAIRE/HANDICAP/INDICATEURHANDICAP": "NON", |
|
54 |
"ENFANT/0/SANITAIRE/HANDICAP/INDICATEURNOTIFMDPH": "NON", |
|
55 | 55 |
"ENFANT/0/SANITAIRE/INDICATEURPAI": "NON", |
56 | 56 |
"ENFANT/0/SANITAIRE/INFOUTILES": "", |
57 | 57 |
"ENFANT/0/SANITAIRE/MEDECIN/NOM": "foo", |
... | ... | |
81 | 81 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/ALLERGIQUE": "OUI", |
82 | 82 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/NOMALLERGIE": "", |
83 | 83 |
"ENFANT/1/SANITAIRE/ALLERGIE/2/TYPE": "ALIMENTAIRES", |
84 |
"ENFANT/1/SANITAIRE/AUTREDIFFICULTE": "", |
|
85 | 84 |
"ENFANT/1/SANITAIRE/DATEFINVALIDITE": "2020-12-31", |
86 |
"ENFANT/1/SANITAIRE/ECOLESPECIALISEE": "", |
|
87 |
"ENFANT/1/SANITAIRE/INDICATEURAUXILIAIREVS": "NON", |
|
88 |
"ENFANT/1/SANITAIRE/INDICATEURECOLE": "NON", |
|
89 |
"ENFANT/1/SANITAIRE/INDICATEURHANDICAP": "NON", |
|
90 |
"ENFANT/1/SANITAIRE/INDICATEURNOTIFMDPH": "NON", |
|
85 |
"ENFANT/1/SANITAIRE/HANDICAP/AUTREDIFFICULTE": "", |
|
86 |
"ENFANT/1/SANITAIRE/HANDICAP/ECOLESPECIALISEE": "", |
|
87 |
"ENFANT/1/SANITAIRE/HANDICAP/INDICATEURAUXILIAIREVS": "NON", |
|
88 |
"ENFANT/1/SANITAIRE/HANDICAP/INDICATEURECOLE": "NON", |
|
89 |
"ENFANT/1/SANITAIRE/HANDICAP/INDICATEURHANDICAP": "NON", |
|
90 |
"ENFANT/1/SANITAIRE/HANDICAP/INDICATEURNOTIFMDPH": "NON", |
|
91 | 91 |
"ENFANT/1/SANITAIRE/INDICATEURPAI": "NON", |
92 | 92 |
"ENFANT/1/SANITAIRE/INFOUTILES": "", |
93 | 93 |
"ENFANT/1/SANITAIRE/MEDECIN/NOM": "foo", |
... | ... | |
161 | 161 |
"maj:enfant_0_sanitaire_allergie": "OUI", |
162 | 162 |
"maj:enfant_0_sanitaire_medecin": "OUI", |
163 | 163 |
"maj:enfant_0_sanitaire_vaccin": "OUI", |
164 |
"maj:enfant_0_sanitaire_handicap": "OUI", |
|
164 | 165 |
"maj:enfant_1": "OUI", |
165 | 166 |
"maj:enfant_1_assurance": "OUI", |
166 | 167 |
"maj:enfant_1_contact": "OUI", |
... | ... | |
168 | 169 |
"maj:enfant_1_sanitaire_allergie": "OUI", |
169 | 170 |
"maj:enfant_1_sanitaire_medecin": "OUI", |
170 | 171 |
"maj:enfant_1_sanitaire_vaccin": "OUI", |
172 |
"maj:enfant_1_sanitaire_handicap": "OUI", |
|
171 | 173 |
"maj:enfant_2": "OUI", |
172 | 174 |
"maj:enfant_2_assurance": "OUI", |
173 | 175 |
"maj:enfant_2_contact": "OUI", |
... | ... | |
175 | 177 |
"maj:enfant_2_sanitaire_allergie": "OUI", |
176 | 178 |
"maj:enfant_2_sanitaire_medecin": "OUI", |
177 | 179 |
"maj:enfant_2_sanitaire_vaccin": "OUI", |
180 |
"maj:enfant_2_sanitaire_handicap": "OUI", |
|
178 | 181 |
"maj:enfant_3": "OUI", |
179 | 182 |
"maj:enfant_3_assurance": "OUI", |
180 | 183 |
"maj:enfant_3_contact": "OUI", |
... | ... | |
182 | 185 |
"maj:enfant_3_sanitaire_allergie": "OUI", |
183 | 186 |
"maj:enfant_3_sanitaire_medecin": "OUI", |
184 | 187 |
"maj:enfant_3_sanitaire_vaccin": "OUI", |
188 |
"maj:enfant_3_sanitaire_handicap": "OUI", |
|
185 | 189 |
"maj:enfant_4": "OUI", |
186 | 190 |
"maj:enfant_4_assurance": "OUI", |
187 | 191 |
"maj:enfant_4_contact": "OUI", |
... | ... | |
189 | 193 |
"maj:enfant_4_sanitaire_allergie": "OUI", |
190 | 194 |
"maj:enfant_4_sanitaire_medecin": "OUI", |
191 | 195 |
"maj:enfant_4_sanitaire_vaccin": "OUI", |
196 |
"maj:enfant_4_sanitaire_handicap": "OUI", |
|
192 | 197 |
"maj:enfant_5": "OUI", |
193 | 198 |
"maj:enfant_5_assurance": "OUI", |
194 | 199 |
"maj:enfant_5_contact": "OUI", |
... | ... | |
196 | 201 |
"maj:enfant_5_sanitaire_allergie": "OUI", |
197 | 202 |
"maj:enfant_5_sanitaire_medecin": "OUI", |
198 | 203 |
"maj:enfant_5_sanitaire_vaccin": "OUI", |
204 |
"maj:enfant_5_sanitaire_handicap": "OUI", |
|
199 | 205 |
"maj:revenus": "OUI", |
200 | 206 |
"maj:rl1": "OUI", |
201 | 207 |
"maj:rl1_adresse_employeur": "OUI", |
tests/data/toulouse_axel/update_family_info.json | ||
---|---|---|
68 | 68 |
"TYPE": "ALIMENTAIRES" |
69 | 69 |
} |
70 | 70 |
], |
71 |
"AUTREDIFFICULTE": null, |
|
72 | 71 |
"DATEFINVALIDITE": "2020-12-31", |
73 |
"ECOLESPECIALISEE": null, |
|
74 |
"INDICATEURAUXILIAIREVS": "NON", |
|
75 |
"INDICATEURECOLE": "NON", |
|
76 |
"INDICATEURHANDICAP": "NON", |
|
77 |
"INDICATEURNOTIFMDPH": "NON", |
|
72 |
"HANDICAP": { |
|
73 |
"AUTREDIFFICULTE": null, |
|
74 |
"ECOLESPECIALISEE": null, |
|
75 |
"INDICATEURAUXILIAIREVS": "NON", |
|
76 |
"INDICATEURECOLE": "NON", |
|
77 |
"INDICATEURHANDICAP": "NON", |
|
78 |
"INDICATEURNOTIFMDPH": "NON" |
|
79 |
}, |
|
78 | 80 |
"INDICATEURPAI": "NON", |
79 | 81 |
"INFOUTILES": null, |
80 | 82 |
"MEDECIN": { |
... | ... | |
122 | 124 |
"TYPE": "ALIMENTAIRES" |
123 | 125 |
} |
124 | 126 |
], |
125 |
"AUTREDIFFICULTE": null, |
|
126 | 127 |
"DATEFINVALIDITE": "2020-12-31", |
127 |
"ECOLESPECIALISEE": null, |
|
128 |
"INDICATEURAUXILIAIREVS": "NON", |
|
129 |
"INDICATEURECOLE": "NON", |
|
130 |
"INDICATEURHANDICAP": "NON", |
|
131 |
"INDICATEURNOTIFMDPH": "NON", |
|
128 |
"HANDICAP": { |
|
129 |
"AUTREDIFFICULTE": null, |
|
130 |
"ECOLESPECIALISEE": null, |
|
131 |
"INDICATEURAUXILIAIREVS": "NON", |
|
132 |
"INDICATEURECOLE": "NON", |
|
133 |
"INDICATEURHANDICAP": "NON", |
|
134 |
"INDICATEURNOTIFMDPH": "NON" |
|
135 |
}, |
|
132 | 136 |
"INDICATEURPAI": "NON", |
133 | 137 |
"INFOUTILES": null, |
134 | 138 |
"MEDECIN": { |
... | ... | |
219 | 223 |
"maj:enfant_0_sanitaire_allergie": "OUI", |
220 | 224 |
"maj:enfant_0_sanitaire_medecin": "OUI", |
221 | 225 |
"maj:enfant_0_sanitaire_vaccin": "OUI", |
226 |
"maj:enfant_0_sanitaire_handicap": "OUI", |
|
222 | 227 |
"maj:enfant_1": "OUI", |
223 | 228 |
"maj:enfant_1_assurance": "OUI", |
224 | 229 |
"maj:enfant_1_contact": "OUI", |
... | ... | |
226 | 231 |
"maj:enfant_1_sanitaire_allergie": "OUI", |
227 | 232 |
"maj:enfant_1_sanitaire_medecin": "OUI", |
228 | 233 |
"maj:enfant_1_sanitaire_vaccin": "OUI", |
234 |
"maj:enfant_1_sanitaire_handicap": "OUI", |
|
229 | 235 |
"maj:enfant_2": "OUI", |
230 | 236 |
"maj:enfant_2_assurance": "OUI", |
231 | 237 |
"maj:enfant_2_contact": "OUI", |
... | ... | |
233 | 239 |
"maj:enfant_2_sanitaire_allergie": "OUI", |
234 | 240 |
"maj:enfant_2_sanitaire_medecin": "OUI", |
235 | 241 |
"maj:enfant_2_sanitaire_vaccin": "OUI", |
242 |
"maj:enfant_2_sanitaire_handicap": "OUI", |
|
236 | 243 |
"maj:enfant_3": "OUI", |
237 | 244 |
"maj:enfant_3_assurance": "OUI", |
238 | 245 |
"maj:enfant_3_contact": "OUI", |
... | ... | |
240 | 247 |
"maj:enfant_3_sanitaire_allergie": "OUI", |
241 | 248 |
"maj:enfant_3_sanitaire_medecin": "OUI", |
242 | 249 |
"maj:enfant_3_sanitaire_vaccin": "OUI", |
250 |
"maj:enfant_3_sanitaire_handicap": "OUI", |
|
243 | 251 |
"maj:enfant_4": "OUI", |
244 | 252 |
"maj:enfant_4_assurance": "OUI", |
245 | 253 |
"maj:enfant_4_contact": "OUI", |
... | ... | |
247 | 255 |
"maj:enfant_4_sanitaire_allergie": "OUI", |
248 | 256 |
"maj:enfant_4_sanitaire_medecin": "OUI", |
249 | 257 |
"maj:enfant_4_sanitaire_vaccin": "OUI", |
258 |
"maj:enfant_4_sanitaire_handicap": "OUI", |
|
250 | 259 |
"maj:enfant_5": "OUI", |
251 | 260 |
"maj:enfant_5_assurance": "OUI", |
252 | 261 |
"maj:enfant_5_contact": "OUI", |
... | ... | |
254 | 263 |
"maj:enfant_5_sanitaire_allergie": "OUI", |
255 | 264 |
"maj:enfant_5_sanitaire_medecin": "OUI", |
256 | 265 |
"maj:enfant_5_sanitaire_vaccin": "OUI", |
266 |
"maj:enfant_5_sanitaire_handicap": "OUI", |
|
257 | 267 |
"maj:revenus": "OUI", |
258 | 268 |
"maj:rl1": "OUI", |
259 | 269 |
"maj:rl1_adresse_employeur": "OUI", |
tests/test_toulouse_axel.py | ||
---|---|---|
965 | 965 |
assert 'VACCIN' not in partial_update_params['ENFANT'][1]['SANITAIRE'] |
966 | 966 | |
967 | 967 | |
968 |
def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource, update_params): |
|
969 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
|
970 | ||
971 |
# test maj:enfant_n_contact |
|
972 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/family_info.xml') |
|
973 |
with open(filepath) as xml: |
|
974 |
content = xml.read() |
|
975 |
partial_update_params = copy.deepcopy(update_params) |
|
976 |
partial_update_params['maj:enfant_0_sanitaire_handicap'] = False |
|
977 |
# reset fields |
|
978 |
handicap_fields = [ |
|
979 |
'AUTREDIFFICULTE', |
|
980 |
'ECOLESPECIALISEE', |
|
981 |
'INDICATEURAUXILIAIREVS', |
|
982 |
'INDICATEURECOLE', |
|
983 |
'INDICATEURHANDICAP', |
|
984 |
'INDICATEURNOTIFMDPH', |
|
985 |
] |
|
986 |
for key in handicap_fields: |
|
987 |
partial_update_params['ENFANT'][0]['SANITAIRE']['HANDICAP'][key] = None |
|
988 |
partial_update_params['maj:enfant_1'] = False |
|
989 |
with mock_getdata(content, 'RefFamilleDui'): |
|
990 |
resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params) |
|
991 |
original_values = resource.get_family_data(name_id='yyy')['ENFANT'][0]['SANITAIRE'] |
|
992 |
assert len(partial_update_params['ENFANT']) == 1 |
|
993 |
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242" |
|
994 |
# fields were set with origin values found in Axel |
|
995 |
new_values = partial_update_params['ENFANT'][0]['SANITAIRE'] |
|
996 |
for key in handicap_fields: |
|
997 |
assert new_values[key] == original_values[key] |
|
998 |
# combine with maj:enfant_n_sanitaire |
|
999 |
partial_update_params = copy.deepcopy(update_params) |
|
1000 |
partial_update_params['maj:enfant_1_sanitaire'] = False |
|
1001 |
partial_update_params['maj:enfant_1_sanitaire_handicap'] = False |
|
1002 |
partial_update_params['maj:enfant_0'] = False |
|
1003 |
resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params) |
|
1004 |
assert len(partial_update_params['ENFANT']) == 1 |
|
1005 |
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535" |
|
1006 |
assert 'SANITAIRE' not in partial_update_params['ENFANT'][0] |
|
1007 |
# combine with maj:enfant_n |
|
1008 |
partial_update_params = copy.deepcopy(update_params) |
|
1009 |
partial_update_params['maj:enfant_1'] = False |
|
1010 |
partial_update_params['maj:enfant_1_sanitaire_sanitaire'] = False |
|
1011 |
partial_update_params['maj:enfant_0'] = False |
|
1012 |
resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params) |
|
1013 |
assert 'ENFANT' not in partial_update_params |
|
1014 | ||
1015 |
# test maj:enfant_n_sanitaire_handicap not set |
|
1016 |
for val in [None, '']: |
|
1017 |
partial_update_params = copy.deepcopy(update_params) |
|
1018 |
partial_update_params['maj:enfant_0_sanitaire_handicap'] = val |
|
1019 |
partial_update_params['maj:enfant_1'] = False |
|
1020 |
# reset fields |
|
1021 |
for key in handicap_fields: |
|
1022 |
partial_update_params['ENFANT'][0]['SANITAIRE']['HANDICAP'][key] = None |
|
1023 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ref_famille_dui') as operation: |
|
1024 |
resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params) |
|
1025 |
assert operation.call_args_list == [mock.call(resource, {'PORTAIL': {'DUI': {'IDDUI': u'XXX'}}})] |
|
1026 | ||
1027 | ||
1028 |
def test_sanitize_update_family_data_axel_error(app, resource, update_params): |
|
1029 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
|
1030 | ||
1031 |
partial_update_params = copy.deepcopy(update_params) |
|
1032 |
partial_update_params['maj:enfant_0_sanitaire_handicap'] = False |
|
1033 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ref_famille_dui') as operation: |
|
1034 |
operation.side_effect = AxelError('FooBar') |
|
1035 |
with pytest.raises(APIError, match='Axel error: FooBar'): |
|
1036 |
resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params) |
|
1037 | ||
1038 | ||
968 | 1039 |
def test_update_family_info_endpoint_sanitize_axel_error(app, resource, update_params): |
969 | 1040 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42') |
970 | 1041 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.sanitize_update_family_data') as sanitize: |
971 |
- |