toulouse_axel: fix allergie fields when block is not to update (#43407)
This commit is contained in:
parent
7e1e01230d
commit
c20fb9551b
|
@ -45,7 +45,8 @@ def test_link(conn, user):
|
|||
payload['DROITALIMAGE'] = 'NON'
|
||||
payload['REVENUS']['CHOIXREVENU'] = ''
|
||||
# remove non editable fields
|
||||
for key in ['SITUATIONFAMILIALE', 'SITUATIONFAMILIALE_label', 'NBENFANTACTIF', 'NBRLACTIF', 'IDDUI', 'CODEMISEAJOUR', 'management_dates']:
|
||||
for key in ['SITUATIONFAMILIALE', 'SITUATIONFAMILIALE_label', 'NBENFANTACTIF', 'NBRLACTIF', 'IDDUI', 'CODEMISEAJOUR',
|
||||
'management_dates', 'annee_reference', 'annee_reference_label', 'annee_reference_short']:
|
||||
payload.pop(key)
|
||||
for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE', 'INDICATEURRL', 'CSP_label']:
|
||||
if 'RL1' in payload:
|
||||
|
@ -56,7 +57,7 @@ def test_link(conn, user):
|
|||
payload['REVENUS'].pop(key, None)
|
||||
for enfant in payload['ENFANT']:
|
||||
for key in ['id', 'text', 'NOM', 'DATENAISSANCE', 'SEXE', 'PRENOMPERE', 'PRENOMMERE', 'NOMPERE', 'NOMMERE', 'RATTACHEAUTREDUI', 'PRENOM',
|
||||
'clae_cantine_current', 'clae_cantine_next']:
|
||||
'clae_cantine_current']:
|
||||
enfant.pop(key)
|
||||
enfant['AUTORISATIONURGENCEMEDICALE'] = 'OUI'
|
||||
# manage contact fields
|
||||
|
|
|
@ -393,10 +393,9 @@ class ToulouseAxel(BaseResource):
|
|||
for k in data[element_to_remove].keys():
|
||||
data[element_to_remove][k] = None
|
||||
elif element_to_remove in ['HANDICAP', 'ALLERGIE']:
|
||||
# will be filled in sanitize_update_family_data
|
||||
if element_to_remove not in data:
|
||||
data[element_to_remove] = {}
|
||||
data[element_to_remove]['_to_reset'] = True
|
||||
if element_to_remove in data:
|
||||
# will be filled in sanitize_update_family_data
|
||||
data[element_to_remove]['_to_reset'] = True
|
||||
elif element_to_remove in data:
|
||||
# remove block
|
||||
data.pop(element_to_remove)
|
||||
|
|
|
@ -276,8 +276,12 @@ sanitaire_properties['ALLERGIE'] = {
|
|||
'properties': {},
|
||||
'required': ['ASTHME', 'MEDICAMENTEUSES', 'ALIMENTAIRES', 'AUTRES'],
|
||||
}
|
||||
sanitaire_required.append('ALLERGIE')
|
||||
for key in ['ASTHME', 'MEDICAMENTEUSES', 'ALIMENTAIRES']:
|
||||
sanitaire_properties['ALLERGIE']['properties'][key] = copy.deepcopy(utils.boolean_type)
|
||||
flag_type = copy.deepcopy(utils.boolean_type)
|
||||
flag_type['oneOf'].append({'type': 'null'})
|
||||
flag_type['oneOf'].append({'type': 'string', 'enum': ['']})
|
||||
sanitaire_properties['ALLERGIE']['properties'][key] = flag_type
|
||||
sanitaire_properties['ALLERGIE']['properties']['AUTRES'] = {
|
||||
'oneOf': [
|
||||
{'type': 'null'},
|
||||
|
|
|
@ -31,6 +31,7 @@ from django.core.cache import cache
|
|||
import freezegun
|
||||
import pytest
|
||||
import xmlschema
|
||||
import jsonschema
|
||||
|
||||
from passerelle.contrib.toulouse_axel.exceptions import AxelError
|
||||
from passerelle.contrib.toulouse_axel.models import (
|
||||
|
@ -38,19 +39,7 @@ from passerelle.contrib.toulouse_axel.models import (
|
|||
Lock,
|
||||
ToulouseAxel,
|
||||
)
|
||||
from passerelle.contrib.toulouse_axel.schemas import (
|
||||
OperationResult,
|
||||
enfants_activites,
|
||||
form_maj_famille_dui,
|
||||
form_paiement_dui,
|
||||
list_dui_factures,
|
||||
ref_date_gestion_dui,
|
||||
ref_famille_dui,
|
||||
ref_facture_a_payer,
|
||||
ref_facture_pdf,
|
||||
ref_verif_dui,
|
||||
reservation_periode,
|
||||
)
|
||||
from passerelle.contrib.toulouse_axel import schemas
|
||||
from passerelle.contrib.toulouse_axel.utils import (
|
||||
situation_familiale_mapping,
|
||||
csp_mapping,
|
||||
|
@ -108,7 +97,7 @@ def family_data():
|
|||
</DATA>
|
||||
</PORTAILSERVICE>
|
||||
'''.strip() % content
|
||||
return ref_famille_dui.response_converter.decode(ET.fromstring(resp))['DATA']['PORTAIL']['DUI']
|
||||
return schemas.ref_famille_dui.response_converter.decode(ET.fromstring(resp))['DATA']['PORTAIL']['DUI']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -130,7 +119,7 @@ def child_activities_data():
|
|||
</DATA>
|
||||
</PORTAILSERVICE>
|
||||
'''.strip() % content
|
||||
return enfants_activites.response_converter.decode(ET.fromstring(resp))['DATA']['PORTAIL']['DUI']
|
||||
return schemas.enfants_activites.response_converter.decode(ET.fromstring(resp))['DATA']['PORTAIL']['DUI']
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
@ -274,7 +263,7 @@ def test_operation_status_error(resource):
|
|||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.soap_client') as client:
|
||||
client.return_value.service.getData.return_value = resp
|
||||
with pytest.raises(AxelError, match='Foo reason'):
|
||||
ref_verif_dui(resource, {
|
||||
schemas.ref_verif_dui(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
|
@ -314,7 +303,7 @@ def mock_getdata(content, operation):
|
|||
def test_operation_ref_date_gestion_dui(resource, content):
|
||||
with mock_getdata(content, 'RefDateGestionDui'):
|
||||
with pytest.raises(AxelError):
|
||||
ref_date_gestion_dui(resource)
|
||||
schemas.ref_date_gestion_dui(resource)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('content', [
|
||||
|
@ -325,7 +314,7 @@ def test_operation_ref_date_gestion_dui(resource, content):
|
|||
def test_operation_ref_verif_dui(resource, content):
|
||||
with mock_getdata(content, 'RefVerifDui'):
|
||||
with pytest.raises(AxelError):
|
||||
ref_verif_dui(resource, {
|
||||
schemas.ref_verif_dui(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'PRENOM': 'John',
|
||||
|
@ -342,7 +331,7 @@ def test_operation_ref_verif_dui(resource, content):
|
|||
def test_operation_ref_famille_dui(resource, content):
|
||||
with mock_getdata(content, 'RefFamilleDui'):
|
||||
with pytest.raises(AxelError):
|
||||
ref_famille_dui(resource, {
|
||||
schemas.ref_famille_dui(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
|
@ -357,7 +346,7 @@ def test_operation_ref_famille_dui(resource, content):
|
|||
def test_operation_form_maj_famille_dui(resource, content):
|
||||
with mock_getdata(content, 'FormMajFamilleDui'):
|
||||
with pytest.raises(AxelError):
|
||||
form_maj_famille_dui(resource, {
|
||||
schemas.form_maj_famille_dui(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
|
@ -372,7 +361,7 @@ def test_operation_form_maj_famille_dui(resource, content):
|
|||
def test_operation_ref_facture_a_payer(resource, content):
|
||||
with mock_getdata(content, 'RefFactureAPayer'):
|
||||
with pytest.raises(AxelError):
|
||||
ref_facture_a_payer(resource, {
|
||||
schemas.ref_facture_a_payer(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
|
@ -387,7 +376,7 @@ def test_operation_ref_facture_a_payer(resource, content):
|
|||
def test_operation_list_dui_factures(resource, content):
|
||||
with mock_getdata(content, 'ListeDuiFacturesPayeesRecettees'):
|
||||
with pytest.raises(AxelError):
|
||||
list_dui_factures(resource, {
|
||||
schemas.list_dui_factures(resource, {
|
||||
'LISTFACTURE': {
|
||||
'NUMDUI': 'XXX',
|
||||
'DEBUT': '1970-01-01'
|
||||
|
@ -401,7 +390,7 @@ def test_operation_list_dui_factures(resource, content):
|
|||
def test_operation_ref_facture_pdf(resource, content):
|
||||
with mock_getdata(content, 'RefFacturePDF'):
|
||||
with pytest.raises(AxelError):
|
||||
ref_facture_pdf(resource, {
|
||||
schemas.ref_facture_pdf(resource, {
|
||||
'PORTAIL': {
|
||||
'FACTUREPDF': {
|
||||
'IDFACTURE': 42,
|
||||
|
@ -416,7 +405,7 @@ def test_operation_ref_facture_pdf(resource, content):
|
|||
def test_operation_form_paiement_dui(resource, content):
|
||||
with mock_getdata(content, 'FormPaiementDui'):
|
||||
with pytest.raises(AxelError):
|
||||
form_paiement_dui(resource, {
|
||||
schemas.form_paiement_dui(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDFACTURE': '42',
|
||||
|
@ -435,7 +424,7 @@ def test_operation_form_paiement_dui(resource, content):
|
|||
def test_operation_enfants_activites(resource, content):
|
||||
with mock_getdata(content, 'EnfantsActivites'):
|
||||
with pytest.raises(AxelError):
|
||||
enfants_activites(resource, {
|
||||
schemas.enfants_activites(resource, {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
'ANNEEREFERENCE': '2042',
|
||||
|
@ -450,7 +439,7 @@ def test_operation_enfants_activites(resource, content):
|
|||
def test_operation_reservation_periode(resource, content):
|
||||
with mock_getdata(content, 'ReservationPeriode'):
|
||||
with pytest.raises(AxelError):
|
||||
reservation_periode(resource, {
|
||||
schemas.reservation_periode(resource, {
|
||||
'PORTAIL': {
|
||||
'DUI': {
|
||||
'IDDUI': 'XXX',
|
||||
|
@ -1006,7 +995,7 @@ def test_update_family_info_endpoint(app, resource, update_params, family_data):
|
|||
assert 'xml_response' in resp.json['data']
|
||||
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.form_maj_famille_dui') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
|
||||
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX'
|
||||
|
@ -1016,7 +1005,7 @@ def test_update_family_info_endpoint(app, resource, update_params, family_data):
|
|||
link.person_id = '35'
|
||||
link.save()
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.form_maj_famille_dui') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
|
||||
assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX'
|
||||
|
@ -1040,12 +1029,15 @@ def test_update_family_info_flat_endpoint(app, resource, flat_update_params, fam
|
|||
|
||||
def test_sanitize_update_family_data_missing_rl_fields(app, resource, update_params, family_data):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
full_update_params = copy.deepcopy(update_params)
|
||||
for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE']:
|
||||
assert key not in full_update_params['RL1']
|
||||
assert key not in full_update_params['RL2']
|
||||
|
||||
resource.pre_sanitize_update_family_data(post_data=full_update_params)
|
||||
jsonschema.validate(full_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=full_update_params)
|
||||
for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE']:
|
||||
|
@ -1057,10 +1049,13 @@ def test_sanitize_update_family_data_missing_rl_fields(app, resource, update_par
|
|||
|
||||
def test_sanitize_update_family_data_missing_revenus_fields(app, resource, update_params, family_data):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
full_update_params = copy.deepcopy(update_params)
|
||||
assert 'NBENFANTSACHARGE' not in update_params['REVENUS']
|
||||
|
||||
resource.pre_sanitize_update_family_data(post_data=full_update_params)
|
||||
jsonschema.validate(full_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=full_update_params)
|
||||
assert full_update_params['REVENUS']['NBENFANTSACHARGE'] == family_data['REVENUS']['NBENFANTSACHARGE']
|
||||
|
@ -1068,6 +1063,8 @@ def test_sanitize_update_family_data_missing_revenus_fields(app, resource, updat
|
|||
# if revenus are not set in Axel
|
||||
full_update_params = copy.deepcopy(update_params)
|
||||
family_data.pop('REVENUS')
|
||||
resource.pre_sanitize_update_family_data(post_data=full_update_params)
|
||||
jsonschema.validate(full_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=full_update_params)
|
||||
assert full_update_params['REVENUS']['NBENFANTSACHARGE'] is None
|
||||
|
@ -1075,6 +1072,7 @@ def test_sanitize_update_family_data_missing_revenus_fields(app, resource, updat
|
|||
|
||||
def test_pre_sanitize_update_upperize(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
def check_upper(data):
|
||||
if isinstance(data, dict):
|
||||
|
@ -1087,6 +1085,7 @@ def test_pre_sanitize_update_upperize(app, resource, update_params):
|
|||
assert data == data.upper()
|
||||
|
||||
resource.pre_sanitize_update_family_data(post_data=update_params)
|
||||
jsonschema.validate(update_params, json_schema)
|
||||
check_upper(update_params)
|
||||
|
||||
assert upperize(u'something with an accent é') == u'SOMETHING WITH AN ACCENT E'
|
||||
|
@ -1094,6 +1093,7 @@ def test_pre_sanitize_update_upperize(app, resource, update_params):
|
|||
|
||||
def test_pre_sanitize_update_family_data_adresse(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:adresse
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1101,12 +1101,14 @@ def test_pre_sanitize_update_family_data_adresse(app, resource, update_params):
|
|||
for key in partial_update_params['ADRESSE'].keys():
|
||||
partial_update_params['ADRESSE'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
for value in partial_update_params['ADRESSE'].values():
|
||||
assert value is None
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_revenus(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:revenus
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1114,11 +1116,20 @@ def test_pre_sanitize_update_family_data_revenus(app, resource, update_params):
|
|||
for key in partial_update_params['REVENUS'].keys():
|
||||
partial_update_params['REVENUS'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'REVENUS' not in partial_update_params
|
||||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:revenus'] = False
|
||||
partial_update_params.pop('REVENUS')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'REVENUS' not in partial_update_params
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_rln(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:rln
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1126,17 +1137,30 @@ def test_pre_sanitize_update_family_data_rln(app, resource, update_params):
|
|||
for key in partial_update_params['RL1'].keys():
|
||||
partial_update_params['RL1'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'RL1' not in partial_update_params
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl2'] = False
|
||||
for key in partial_update_params['RL2'].keys():
|
||||
partial_update_params['RL2'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'RL2' not in partial_update_params
|
||||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl1'] = False
|
||||
partial_update_params['maj:rl2'] = False
|
||||
partial_update_params.pop('RL1')
|
||||
partial_update_params.pop('RL2')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'RL1' not in partial_update_params
|
||||
assert 'RL2' not in partial_update_params
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_rln_adresse_employeur(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:rln_adresse_employeur
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1144,39 +1168,48 @@ def test_pre_sanitize_update_family_data_rln_adresse_employeur(app, resource, up
|
|||
for key in partial_update_params['RL1']['ADREMPLOYEUR'].keys():
|
||||
partial_update_params['RL1']['ADREMPLOYEUR'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ADREMPLOYEUR' not in partial_update_params['RL1']
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl2_adresse_employeur'] = False
|
||||
for key in partial_update_params['RL2']['ADREMPLOYEUR'].keys():
|
||||
partial_update_params['RL2']['ADREMPLOYEUR'][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ADREMPLOYEUR' not in partial_update_params['RL2']
|
||||
# combine with maj:rln
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl1'] = False
|
||||
partial_update_params['maj:rl1_adresse_employeur'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'RL1' not in partial_update_params
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl2'] = False
|
||||
partial_update_params['maj:rl2_adresse_employeur'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'RL2' not in partial_update_params
|
||||
|
||||
# test maj:rln_adresse_employeur not set
|
||||
for val in [None, '']:
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl1_adresse_employeur'] = val
|
||||
partial_update_params['RL1'].pop('ADREMPLOYEUR')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ADREMPLOYEUR' not in partial_update_params['RL1']
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:rl2_adresse_employeur'] = val
|
||||
partial_update_params['RL2'].pop('ADREMPLOYEUR')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ADREMPLOYEUR' not in partial_update_params['RL2']
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1186,6 +1219,7 @@ def test_pre_sanitize_update_family_data_enfant_n(app, resource, update_params):
|
|||
continue
|
||||
partial_update_params['ENFANT'][0][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
|
||||
|
@ -1196,6 +1230,7 @@ def test_pre_sanitize_update_family_data_enfant_n(app, resource, update_params):
|
|||
continue
|
||||
partial_update_params['ENFANT'][1][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
|
||||
|
||||
|
@ -1205,6 +1240,7 @@ def test_pre_sanitize_update_family_data_enfant_n(app, resource, update_params):
|
|||
for key in partial_update_params['ENFANT'][1].keys():
|
||||
partial_update_params['ENFANT'][1][key] = None # reset fields
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
|
||||
|
||||
|
@ -1212,24 +1248,29 @@ def test_pre_sanitize_update_family_data_enfant_n(app, resource, update_params):
|
|||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
partial_update_params.pop('ENFANT')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# unknown child
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_5'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 2
|
||||
|
||||
# missing IDPERSONNE
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['ENFANT'][0].pop('IDPERSONNE')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n_assurance(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_assurance
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1238,6 +1279,7 @@ def test_pre_sanitize_update_family_data_enfant_n_assurance(app, resource, updat
|
|||
partial_update_params['ENFANT'][1]['ASSURANCE'][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_0'] = False # check that ordering is not a problem
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'ASSURANCE' not in partial_update_params['ENFANT'][0]
|
||||
|
@ -1247,6 +1289,7 @@ def test_pre_sanitize_update_family_data_enfant_n_assurance(app, resource, updat
|
|||
partial_update_params['maj:enfant_1_assurance'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# test maj:enfant_n_assurance not set
|
||||
|
@ -1254,12 +1297,15 @@ def test_pre_sanitize_update_family_data_enfant_n_assurance(app, resource, updat
|
|||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1_assurance'] = val
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
partial_update_params['ENFANT'][0].pop('ASSURANCE')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ASSURANCE' not in partial_update_params['ENFANT'][0]
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n_contact(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_contact
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1269,6 +1315,7 @@ def test_pre_sanitize_update_family_data_enfant_n_contact(app, resource, update_
|
|||
partial_update_params['ENFANT'][0]['CONTACT'][i][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
|
||||
assert 'CONTACT' not in partial_update_params['ENFANT'][0]
|
||||
|
@ -1278,26 +1325,31 @@ def test_pre_sanitize_update_family_data_enfant_n_contact(app, resource, update_
|
|||
partial_update_params['maj:enfant_1_contact'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# test maj:enfant_n_contact not set
|
||||
for val in [None, '']:
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_contact'] = val
|
||||
partial_update_params['ENFANT'][0].pop('CONTACT')
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'CONTACT' not in partial_update_params['ENFANT'][0]
|
||||
|
||||
# third contact of first child is not complete
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'CONTACT' in partial_update_params['ENFANT'][0]
|
||||
assert len(partial_update_params['ENFANT'][0]['CONTACT']) == 2
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n_sanitaire(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_sanitaire
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1306,6 +1358,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire(app, resource, updat
|
|||
partial_update_params['ENFANT'][1]['SANITAIRE'][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
|
||||
|
@ -1315,6 +1368,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire(app, resource, updat
|
|||
partial_update_params['maj:enfant_1_sanitaire'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# test maj:enfant_n_sanitaire not set
|
||||
|
@ -1322,37 +1376,26 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire(app, resource, updat
|
|||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire'] = val
|
||||
partial_update_params['maj:enfant_1_sanitaire'] = val
|
||||
partial_update_params['ENFANT'][0].pop('SANITAIRE')
|
||||
partial_update_params['ENFANT'][1].pop('SANITAIRE')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
|
||||
assert 'SANITAIRE' not in partial_update_params['ENFANT'][1]
|
||||
|
||||
|
||||
def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource, update_params, family_data):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_sanitaire_allergie (without ALLERGIE block posted)
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_allergie'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('ALLERGIE')
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
assert '_to_reset' in partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
|
||||
assert 'ALLERGIE' in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
# fields were set with origin values found in Axel
|
||||
new_values = partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
old_values = family_data['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
assert new_values == old_values
|
||||
# test maj:enfant_n_sanitaire_allergie (with empty ALLERGIE fields posted)
|
||||
# test maj:enfant_n_sanitaire_allergie
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_allergie'] = False
|
||||
for key in partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'].keys():
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert '_to_reset' in partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
|
@ -1369,6 +1412,7 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource,
|
|||
partial_update_params['maj:enfant_1_sanitaire_allergie'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
|
@ -1380,6 +1424,7 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource,
|
|||
partial_update_params['maj:enfant_1_sanitaire_allergie'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
@ -1390,14 +1435,24 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource,
|
|||
partial_update_params['maj:enfant_0_sanitaire_allergie'] = val
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
new_values = partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
old_values = family_data['ENFANT'][0]['SANITAIRE']['ALLERGIE']
|
||||
assert new_values == old_values
|
||||
|
||||
# allergie field is required
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_allergie'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('ALLERGIE')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
with pytest.raises(jsonschema.exceptions.ValidationError, match="'ALLERGIE' is a required property"):
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
|
||||
|
||||
def test_sanitize_update_family_data_enfant_n_sanitaire_allergie_values(app, resource, update_params, family_data):
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
# check values
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
|
@ -1406,6 +1461,19 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie_values(app, res
|
|||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = 'False'
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = ''
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert 'ALLERGIE' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ASTHME'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['MEDICAMENTEUSES'] = ''
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = None
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = ''
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert 'ALLERGIE' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
|
@ -1417,6 +1485,7 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie_values(app, res
|
|||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = 'True'
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = 'accariens'
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'] == [
|
||||
|
@ -1428,11 +1497,12 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie_values(app, res
|
|||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ASTHME'] = 'NON'
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ASTHME'] = ''
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['MEDICAMENTEUSES'] = '1'
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = 'True'
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = ''
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'] == [
|
||||
|
@ -1440,17 +1510,10 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_allergie_values(app, res
|
|||
{'TYPE': 'ALIMENTAIRES', 'ALLERGIQUE': 'OUI', 'NOMALLERGIE': None},
|
||||
]
|
||||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('ALLERGIE')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert 'ALLERGIE' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_sanitaire_medecin
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1459,6 +1522,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resourc
|
|||
partial_update_params['ENFANT'][1]['SANITAIRE']['MEDECIN'][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'MEDECIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
|
@ -1468,6 +1532,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resourc
|
|||
partial_update_params['maj:enfant_1_sanitaire_medecin'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
|
||||
|
@ -1477,6 +1542,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resourc
|
|||
partial_update_params['maj:enfant_1_sanitaire_medecin'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# test maj:enfant_n_sanitaire_medecin not set
|
||||
|
@ -1484,13 +1550,17 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resourc
|
|||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_medecin'] = val
|
||||
partial_update_params['maj:enfant_1_sanitaire_medecin'] = val
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('MEDECIN')
|
||||
partial_update_params['ENFANT'][1]['SANITAIRE'].pop('MEDECIN')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'MEDECIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
assert 'MEDECIN' not in partial_update_params['ENFANT'][1]['SANITAIRE']
|
||||
|
||||
|
||||
def test_pre_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource, update_params):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_sanitaire_vaccin
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1499,6 +1569,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource
|
|||
partial_update_params['ENFANT'][1]['SANITAIRE']['VACCIN'][key] = None # reset fields
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'VACCIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
|
@ -1508,6 +1579,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource
|
|||
partial_update_params['maj:enfant_1_sanitaire_vaccin'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
|
||||
assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
|
||||
|
@ -1517,6 +1589,7 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource
|
|||
partial_update_params['maj:enfant_1_sanitaire_vaccin'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
||||
# test maj:enfant_n_sanitaire_vaccin not set
|
||||
|
@ -1524,13 +1597,17 @@ def test_pre_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource
|
|||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_vaccin'] = val
|
||||
partial_update_params['maj:enfant_1_sanitaire_vaccin'] = val
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('VACCIN')
|
||||
partial_update_params['ENFANT'][1]['SANITAIRE'].pop('VACCIN')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert 'VACCIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
assert 'VACCIN' not in partial_update_params['ENFANT'][1]['SANITAIRE']
|
||||
|
||||
|
||||
def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource, update_params, family_data):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
# test maj:enfant_n_sanitaire_handicap
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
|
@ -1548,6 +1625,7 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource,
|
|||
partial_update_params['ENFANT'][0]['SANITAIRE']['HANDICAP'][key] = None
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
assert '_to_reset' in partial_update_params['ENFANT'][0]['SANITAIRE']['HANDICAP']
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
|
@ -1564,6 +1642,7 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource,
|
|||
partial_update_params['maj:enfant_1_sanitaire_handicap'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert len(partial_update_params['ENFANT']) == 1
|
||||
|
@ -1572,9 +1651,10 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource,
|
|||
# combine with maj:enfant_n
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_1'] = False
|
||||
partial_update_params['maj:enfant_1_sanitaire_sanitaire'] = False
|
||||
partial_update_params['maj:enfant_1_sanitaire_handicap'] = False
|
||||
partial_update_params['maj:enfant_0'] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
assert 'ENFANT' not in partial_update_params
|
||||
|
@ -1588,12 +1668,21 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource,
|
|||
for key in handicap_fields:
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE']['HANDICAP'][key] = None
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
|
||||
resource.sanitize_update_family_data(dui='XXX', post_data=partial_update_params)
|
||||
new_values = partial_update_params['ENFANT'][0]['SANITAIRE']
|
||||
for key in handicap_fields:
|
||||
assert new_values[key] == family_data['ENFANT'][0]['SANITAIRE'][key]
|
||||
|
||||
# handicap field is required
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
partial_update_params['maj:enfant_0_sanitaire_handicap'] = False
|
||||
partial_update_params['ENFANT'][0]['SANITAIRE'].pop('HANDICAP')
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
with pytest.raises(jsonschema.exceptions.ValidationError, match="'HANDICAP' is a required property"):
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('flags', [
|
||||
# get family data to fill handicap fields
|
||||
|
@ -1607,10 +1696,13 @@ def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource,
|
|||
])
|
||||
def test_sanitize_update_family_data_axel_error(app, resource, update_params, flags):
|
||||
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
||||
json_schema = schemas.UPDATE_FAMILY_SCHEMA
|
||||
|
||||
partial_update_params = copy.deepcopy(update_params)
|
||||
for flag in flags:
|
||||
partial_update_params[flag] = False
|
||||
resource.pre_sanitize_update_family_data(post_data=partial_update_params)
|
||||
jsonschema.validate(partial_update_params, json_schema)
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.ref_famille_dui') as operation:
|
||||
operation.side_effect = AxelError('FooBar')
|
||||
with pytest.raises(APIError, match='Axel error: FooBar'):
|
||||
|
@ -3144,7 +3236,7 @@ def test_clae_booking_endpoint(app, resource, booking_params, child_activities_d
|
|||
assert 'xml_response' in resp.json['data']
|
||||
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload == {
|
||||
|
@ -3204,7 +3296,7 @@ def test_clae_booking_endpoint(app, resource, booking_params, child_activities_d
|
|||
new_booking_params['booking_list_SOIR'] = []
|
||||
new_booking_params['booking_list_GARD'] = []
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=new_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert len(payload['ENFANT']) == 1
|
||||
|
@ -3242,7 +3334,7 @@ def test_clae_booking_endpoint(app, resource, booking_params, child_activities_d
|
|||
new_booking_params['booking_list_SOIR'] = None
|
||||
new_booking_params['booking_list_GARD'] = None
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=new_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert 'ACTIVITE' not in payload['ENFANT'][0]
|
||||
|
@ -3261,7 +3353,7 @@ def test_clae_booking_endpoint(app, resource, booking_params, child_activities_d
|
|||
new_booking_params['booking_list_SOIR'] = None
|
||||
new_booking_params['booking_list_GARD'] = None
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=new_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert len(payload['ENFANT']) == 1
|
||||
|
@ -3294,19 +3386,19 @@ def test_clae_booking_regime(app, resource, booking_params, child_activities_dat
|
|||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
||||
booking_params['regime'] = None
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
booking_params['regime'] = ''
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
del booking_params['regime']
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
|
@ -3353,7 +3445,7 @@ def test_clae_booking_annual_endpoint(app, resource, annual_booking_params, chil
|
|||
assert 'xml_response' in resp.json['data']
|
||||
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload == {
|
||||
|
@ -3413,7 +3505,7 @@ def test_clae_booking_annual_endpoint(app, resource, annual_booking_params, chil
|
|||
new_booking_params['booking_list_SOIR'] = []
|
||||
new_booking_params['booking_list_GARD'] = []
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=new_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert len(payload['ENFANT']) == 1
|
||||
|
@ -3451,7 +3543,7 @@ def test_clae_booking_annual_endpoint(app, resource, annual_booking_params, chil
|
|||
new_booking_params['booking_list_SOIR'] = None
|
||||
new_booking_params['booking_list_GARD'] = None
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
resp = app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=new_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert 'ACTIVITE' not in payload['ENFANT'][0]
|
||||
|
@ -3463,7 +3555,7 @@ def test_clae_booking_annual_reference_year(app, resource, annual_booking_params
|
|||
with freezegun.freeze_time('2020-04-16'):
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['ACTIVITE'][0]['PERIODE'][0]['DATEDEBUT'] == '2020-04-24'
|
||||
|
@ -3471,7 +3563,7 @@ def test_clae_booking_annual_reference_year(app, resource, annual_booking_params
|
|||
with freezegun.freeze_time('2020-08-01'):
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['ACTIVITE'][0]['PERIODE'][0]['DATEDEBUT'] == '2020-08-09'
|
||||
|
@ -3485,19 +3577,19 @@ def test_clae_booking_annual_regime(app, resource, annual_booking_params, child_
|
|||
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
||||
annual_booking_params['regime'] = None
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
annual_booking_params['regime'] = ''
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
del annual_booking_params['regime']
|
||||
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
|
||||
operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
|
||||
app.post_json('/toulouse-axel/test/clae_booking_annual?NameID=yyy', params=annual_booking_params)
|
||||
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
||||
assert payload['ENFANT'][0]['REGIME'] == 'SV'
|
||||
|
|
Loading…
Reference in New Issue