toulouse_axel: fix allergie fields when block is not to update (#43407)

This commit is contained in:
Lauréline Guérin 2020-05-28 14:51:57 +02:00
parent 7e1e01230d
commit c20fb9551b
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
4 changed files with 173 additions and 77 deletions

View File

@ -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

View File

@ -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)

View File

@ -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'},

View File

@ -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'