Projet

Général

Profil

0004-toulouse_axel-some-values-are-not-editable-38543.patch

Lauréline Guérin, 09 janvier 2020 16:27

Télécharger (49,5 ko)

Voir les différences:

Subject: [PATCH 4/4] toulouse_axel: some values are not editable (#38543)

and it will be NOT sent by w.c.s.
 functests/toulouse_axel/test_toulouse_axel.py |   7 +-
 passerelle/contrib/toulouse_axel/models.py    |  30 +-
 .../flat_update_family_info.json              |  15 -
 .../toulouse_axel/update_family_info.json     |  15 -
 tests/test_toulouse_axel.py                   | 262 +++++++++++++-----
 5 files changed, 224 insertions(+), 105 deletions(-)
functests/toulouse_axel/test_toulouse_axel.py
38 38
    # remove non editable fields
39 39
    for key in ['SITUATIONFAMILIALE', 'NBENFANTACTIF', 'NBRLACTIF', 'IDDUI', 'CODEMISEAJOUR']:
40 40
        payload.pop(key)
41
    for key in ['MONTANTTOTAL', 'DATEVALIDITE', 'SFI', 'IREVENUS', 'RNF']:
41
    for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE', 'INDICATEURRL']:
42
        if 'RL1' in payload:
43
            payload['RL1'].pop(key)
44
        if 'RL2' in payload:
45
            payload['RL2'].pop(key)
46
    for key in ['MONTANTTOTAL', 'DATEVALIDITE', 'SFI', 'IREVENUS', 'RNF', 'NBENFANTSACHARGE']:
42 47
        payload['REVENUS'].pop(key, None)
43 48
    for enfant in payload['ENFANT']:
44 49
        for key in ['NOM', 'DATENAISSANCE', 'SEXE', 'PRENOMPERE', 'PRENOMMERE', 'NOMPERE', 'NOMMERE', 'RATTACHEAUTREDUI', 'PRENOM']:
passerelle/contrib/toulouse_axel/models.py
302 302
    UPDATE_FAMILY_SCHEMA['required'].remove('IDDUI')
303 303
    UPDATE_FAMILY_SCHEMA['required'].remove('DATEDEMANDE')
304 304
    UPDATE_FAMILY_SCHEMA['required'].remove('QUIACTUALISEDUI')
305
    for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE', 'INDICATEURRL']:
306
        UPDATE_FAMILY_SCHEMA['properties']['RL1']['properties'].pop(key)
307
        UPDATE_FAMILY_SCHEMA['properties']['RL1']['required'].remove(key)
308
        UPDATE_FAMILY_SCHEMA['properties']['RL2']['properties'].pop(key)
309
        UPDATE_FAMILY_SCHEMA['properties']['RL2']['required'].remove(key)
310
    UPDATE_FAMILY_SCHEMA['properties']['REVENUS']['properties'].pop('NBENFANTSACHARGE')
311
    UPDATE_FAMILY_SCHEMA['properties']['REVENUS']['required'].remove('NBENFANTSACHARGE')
312

  
305 313
    for flag in sorted(UPDATE_FAMILY_FLAGS.keys()):
306 314
        flag_type = copy.deepcopy(boolean_type)
307 315
        if flag not in UPDATE_FAMILY_REQUIRED_FLAGS:
......
582 590
                })
583 591
            child['SANITAIRE']['ALLERGIE'] = new_allergie
584 592

  
593
        # retrieve RL not posted fields
594
        for rl in ['RL1', 'RL2']:
595
            if rl not in post_data:
596
                continue
597
            if family_data is None:
598
                family_data = self.get_family_data(name_id)
599
            # fill missing fields
600
            for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE']:
601
                post_data[rl][key] = family_data[rl][key]
602
            post_data[rl]['INDICATEURRL'] = '1' if rl == 'RL1' else '2'
603

  
604
        # fill NBENFANTSACHARGE
605
        if 'REVENUS' in post_data:
606
            if family_data is None:
607
                family_data = self.get_family_data(name_id)
608
            post_data['REVENUS']['NBENFANTSACHARGE'] = family_data.get('REVENUS', {}).get('NBENFANTSACHARGE')
609

  
585 610
        # transform ENFANT dict to a list back
586 611
        post_data['ENFANT'] = post_data['ENFANT'].values()
587 612

  
......
608 633
        # prepare data
609 634
        post_data['IDDUI'] = link.dui
610 635
        post_data['DATEDEMANDE'] = datetime.date.today().strftime('%Y-%m-%d')
636

  
637
        self.sanitize_update_family_data(name_id=NameID, post_data=post_data)
638

  
611 639
        if 'RL2' in post_data and post_data['RL2'].get('IDPERSONNE') == link.person_id:
612 640
            post_data['QUIACTUALISEDUI'] = '2'
613 641
        else:
614 642
            post_data['QUIACTUALISEDUI'] = '1'
615 643

  
616
        self.sanitize_update_family_data(name_id=NameID, post_data=post_data)
617

  
618 644
        try:
619 645
            result = form_maj_famille_dui(self, {'PORTAIL': {'DUI': post_data}})
620 646
        except AxelError as e:
tests/data/toulouse_axel/flat_update_family_info.json
97 97
  "REACTUALISATIONENLIGNE": "NON",
98 98
  "REVENUS/ALLOCATAIRE": "2",
99 99
  "REVENUS/CHOIXREVENU": "",
100
  "REVENUS/NBENFANTSACHARGE": 2,
101 100
  "REVENUS/NUMEROCAF": "1234",
102 101
  "REVENUS/TYPEREGIME": "GENE",
103 102
  "RL1/ADREMPLOYEUR/CODEINSEEVILLE": "",
......
109 108
  "RL1/ADREMPLOYEUR/NUMVOIE": "",
110 109
  "RL1/ADREMPLOYEUR/VILLE": "",
111 110
  "RL1/ADREMPLOYEUR/VOIE": "",
112
  "RL1/CIVILITE": "M",
113 111
  "RL1/COURRIEL": "foo@bar.com",
114 112
  "RL1/CSP": "ETU",
115
  "RL1/DATENAISSANCE": "1980-01-01",
116
  "RL1/IDPERSONNE": "42",
117
  "RL1/INDICATEURRL": "1",
118
  "RL1/NOM": "foo",
119 113
  "RL1/NOMEMPLOYEUR": "foo",
120
  "RL1/NOMJEUNEFILLE": "",
121
  "RL1/PRENOM": "foo",
122 114
  "RL1/PROFESSION": "ETUDIANT",
123 115
  "RL1/TELPORTABLE": "0606060606",
124 116
  "RL2/ADREMPLOYEUR/CODEINSEEVILLE": "",
......
130 122
  "RL2/ADREMPLOYEUR/NUMVOIE": "",
131 123
  "RL2/ADREMPLOYEUR/VILLE": "",
132 124
  "RL2/ADREMPLOYEUR/VOIE": "",
133
  "RL2/CIVILITE": "MME",
134 125
  "RL2/COURRIEL": "foo@bar.com",
135 126
  "RL2/CSP": "EMP",
136
  "RL2/DATENAISSANCE": "1980-01-01",
137
  "RL2/IDPERSONNE": "35",
138
  "RL2/INDICATEURRL": "2",
139
  "RL2/NOM": "foo",
140 127
  "RL2/NOMEMPLOYEUR": "foo",
141
  "RL2/NOMJEUNEFILLE": "",
142
  "RL2/PRENOM": "foo",
143 128
  "RL2/PROFESSION": "foo",
144 129
  "RL2/TELPORTABLE": "0606060606",
145 130
  "TELFIXE": "",
tests/data/toulouse_axel/update_family_info.json
134 134
    "REVENUS": {
135 135
        "ALLOCATAIRE": "2",
136 136
        "CHOIXREVENU": "",
137
        "NBENFANTSACHARGE": 2,
138 137
        "NUMEROCAF": "1234",
139 138
        "TYPEREGIME": "GENE"
140 139
    },
......
150 149
            "VILLE": null,
151 150
            "VOIE": null
152 151
        },
153
        "CIVILITE": "M",
154 152
        "COURRIEL": "foo@bar.com",
155 153
        "CSP": "ETU",
156
        "DATENAISSANCE": "1980-01-01",
157
        "IDPERSONNE": "42",
158
        "INDICATEURRL": "1",
159
        "NOM": "foo",
160 154
        "NOMEMPLOYEUR": "foo",
161
        "NOMJEUNEFILLE": null,
162
        "PRENOM": "foo",
163 155
        "PROFESSION": "ETUDIANT",
164 156
        "TELPORTABLE": "0606060606"
165 157
    },
......
175 167
            "VILLE": null,
176 168
            "VOIE": null
177 169
        },
178
        "CIVILITE": "MME",
179 170
        "COURRIEL": "foo@bar.com",
180 171
        "CSP": "EMP",
181
        "DATENAISSANCE": "1980-01-01",
182
        "IDPERSONNE": "35",
183
        "INDICATEURRL": "2",
184
        "NOM": "foo",
185 172
        "NOMEMPLOYEUR": "foo",
186
        "NOMJEUNEFILLE": null,
187
        "PRENOM": "foo",
188 173
        "PROFESSION": "foo",
189 174
        "TELPORTABLE": "0606060606"
190 175
    },
tests/test_toulouse_axel.py
20 20
import json
21 21
import mock
22 22
import os
23
import xml.etree.ElementTree as ET
23 24

  
24 25
import pytest
25 26
import xmlschema
......
66 67
    return json.loads(content)
67 68

  
68 69

  
70
@pytest.fixture
71
def family_data():
72
    filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/family_info.xml')
73
    with open(filepath) as xml:
74
        content = xml.read()
75
    resp = '''
76
    <?xml version="1.0"?>
77
    <PORTAILSERVICE>
78
      <RESULTAT>
79
        <TYPE>RefFamilleDui</TYPE>
80
        <STATUS>OK</STATUS>
81
        <DATE>10/10/2010 10:10:01</DATE>
82
        <COMMENTAIRES><![CDATA[]]></COMMENTAIRES>
83
      </RESULTAT>
84
      <DATA>
85
        %s
86
      </DATA>
87
    </PORTAILSERVICE>
88
    '''.strip() % content
89
    return ref_famille_dui.response_converter.decode(ET.fromstring(resp))['DATA']['PORTAIL']['DUI']
90

  
91

  
69 92
@pytest.fixture
70 93
def flat_update_params():
71 94
    filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/flat_update_family_info.json')
......
564 587
    ])
565 588

  
566 589

  
567
def test_update_family_info_endpoint_axel_error(app, resource, update_params):
590
def test_update_family_info_endpoint_axel_error(app, resource, update_params, family_data):
568 591
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
592

  
569 593
    with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation:
570 594
        operation.side_effect = AxelError('FooBar')
571
        resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
595
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
596
            resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
572 597
    assert resp.json['err_desc'] == "Axel error: FooBar"
573 598
    assert resp.json['err'] == 'error'
574 599
    assert 'error_post_data' in resp.json['data']
......
580 605
    assert resp.json['err'] == 'not-found'
581 606

  
582 607

  
583
def test_update_family_info_endpoint(app, resource, update_params):
608
def test_update_family_info_endpoint(app, resource, update_params, family_data):
584 609
    link = Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
610

  
585 611
    content = "<PORTAIL/>"
586 612
    with mock_getdata(content, 'FormMajFamilleDui'):
587
        resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
613
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
614
            resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
588 615
    assert resp.json['err'] == 0
589 616
    assert resp.json['dui'] == 'XXX'
590 617
    assert resp.json['updated'] is True
......
594 621

  
595 622
    with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation:
596 623
        operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
597
        resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
624
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
625
            resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
598 626
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX'
599 627
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['DATEDEMANDE'] == datetime.date.today().strftime('%Y-%m-%d')
600 628
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['QUIACTUALISEDUI'] == '1'
......
603 631
    link.save()
604 632
    with mock.patch('passerelle.contrib.toulouse_axel.models.form_maj_famille_dui') as operation:
605 633
        operation.return_value = OperationResult(json_response={}, xml_request='', xml_response='')
606
        resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
634
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
635
            resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=update_params)
607 636
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['IDDUI'] == 'XXX'
608 637
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['DATEDEMANDE'] == datetime.date.today().strftime('%Y-%m-%d')
609 638
    assert operation.call_args_list[0][0][1]['PORTAIL']['DUI']['QUIACTUALISEDUI'] == '2'
610 639

  
611 640

  
612
def test_update_family_info_flat_endpoint(app, resource, flat_update_params):
641
def test_update_family_info_flat_endpoint(app, resource, flat_update_params, family_data):
613 642
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
614 643
    content = "<PORTAIL/>"
615 644
    with mock_getdata(content, 'FormMajFamilleDui'):
616
        resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=flat_update_params)
645
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
646
            resp = app.post_json('/toulouse-axel/test/update_family_info?NameID=yyy', params=flat_update_params)
617 647
    assert resp.json['err'] == 0
618 648
    assert resp.json['dui'] == 'XXX'
619 649
    assert resp.json['updated'] is True
......
622 652
    assert 'xml_response' in resp.json['data']
623 653

  
624 654

  
625
def test_sanitize_update_family_data_adresse(app, resource, update_params):
655
def test_sanitize_update_family_data_missing_rl_fields(app, resource, update_params, family_data):
656
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
657

  
658
    full_update_params = copy.deepcopy(update_params)
659
    for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE']:
660
        assert key not in full_update_params['RL1']
661
        assert key not in full_update_params['RL2']
662

  
663
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
664
        resource.sanitize_update_family_data(name_id='yyy', post_data=full_update_params)
665
    for key in ['IDPERSONNE', 'NOM', 'PRENOM', 'NOMJEUNEFILLE', 'DATENAISSANCE', 'CIVILITE']:
666
        assert full_update_params['RL1'][key] == family_data['RL1'][key]
667
        assert full_update_params['RL2'][key] == family_data['RL2'][key]
668
    assert full_update_params['RL1']['INDICATEURRL'] == '1'
669
    assert full_update_params['RL2']['INDICATEURRL'] == '2'
670

  
671

  
672
def test_sanitize_update_family_data_missing_revenus_fields(app, resource, update_params, family_data):
673
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
674

  
675
    full_update_params = copy.deepcopy(update_params)
676
    assert 'NBENFANTSACHARGE' not in update_params['REVENUS']
677

  
678
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
679
        resource.sanitize_update_family_data(name_id='yyy', post_data=full_update_params)
680
    assert full_update_params['REVENUS']['NBENFANTSACHARGE'] == family_data['REVENUS']['NBENFANTSACHARGE']
681

  
682
    # if revenus are not set in Axel
683
    full_update_params = copy.deepcopy(update_params)
684
    family_data.pop('REVENUS')
685
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
686
        resource.sanitize_update_family_data(name_id='yyy', post_data=full_update_params)
687
    assert full_update_params['REVENUS']['NBENFANTSACHARGE'] is None
688

  
689

  
690
def test_sanitize_update_family_data_adresse(app, resource, update_params, family_data):
626 691
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
627 692

  
628 693
    # test maj:adresse
......
630 695
    partial_update_params['maj:adresse'] = False
631 696
    for key in partial_update_params['ADRESSE'].keys():
632 697
        partial_update_params['ADRESSE'][key] = None  # reset fields
633
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
698
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
699
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
634 700
    for value in partial_update_params['ADRESSE'].values():
635 701
        assert value is None
636 702

  
637 703

  
638
def test_sanitize_update_family_data_revenus(app, resource, update_params):
704
def test_sanitize_update_family_data_revenus(app, resource, update_params, family_data):
639 705
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
640 706

  
641 707
    # test maj:revenus
......
643 709
    partial_update_params['maj:revenus'] = False
644 710
    for key in partial_update_params['REVENUS'].keys():
645 711
        partial_update_params['REVENUS'][key] = None  # reset fields
646
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
712
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
713
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
647 714
    assert 'REVENUS' not in partial_update_params
648 715

  
649 716

  
650
def test_sanitize_update_family_data_rln(app, resource, update_params):
717
def test_sanitize_update_family_data_rln(app, resource, update_params, family_data):
651 718
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
652 719

  
653 720
    # test maj:rln
......
655 722
    partial_update_params['maj:rl1'] = False
656 723
    for key in partial_update_params['RL1'].keys():
657 724
        partial_update_params['RL1'][key] = None  # reset fields
658
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
725
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
726
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
659 727
    assert 'RL1' not in partial_update_params
660 728
    partial_update_params = copy.deepcopy(update_params)
661 729
    partial_update_params['maj:rl2'] = False
662 730
    for key in partial_update_params['RL2'].keys():
663 731
        partial_update_params['RL2'][key] = None  # reset fields
664
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
732
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
733
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
665 734
    assert 'RL2' not in partial_update_params
666 735

  
667 736

  
668
def test_sanitize_update_family_data_rln_adresse_employeur(app, resource, update_params):
737
def test_sanitize_update_family_data_rln_adresse_employeur(app, resource, update_params, family_data):
669 738
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
670 739

  
671 740
    # test maj:rln_adresse_employeur
......
673 742
    partial_update_params['maj:rl1_adresse_employeur'] = False
674 743
    for key in partial_update_params['RL1']['ADREMPLOYEUR'].keys():
675 744
        partial_update_params['RL1']['ADREMPLOYEUR'][key] = None  # reset fields
676
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
745
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
746
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
677 747
    assert 'ADREMPLOYEUR' not in partial_update_params['RL1']
678 748
    partial_update_params = copy.deepcopy(update_params)
679 749
    partial_update_params['maj:rl2_adresse_employeur'] = False
680 750
    for key in partial_update_params['RL2']['ADREMPLOYEUR'].keys():
681 751
        partial_update_params['RL2']['ADREMPLOYEUR'][key] = None  # reset fields
682
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
752
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
753
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
683 754
    assert 'ADREMPLOYEUR' not in partial_update_params['RL2']
684 755
    # combine with maj:rln
685 756
    partial_update_params = copy.deepcopy(update_params)
686 757
    partial_update_params['maj:rl1'] = False
687 758
    partial_update_params['maj:rl1_adresse_employeur'] = False
688
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
759
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
760
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
689 761
    assert 'RL1' not in partial_update_params
690 762
    partial_update_params = copy.deepcopy(update_params)
691 763
    partial_update_params['maj:rl2'] = False
692 764
    partial_update_params['maj:rl2_adresse_employeur'] = False
693
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
765
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
766
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
694 767
    assert 'RL2' not in partial_update_params
695 768

  
696 769
    # test maj:rln_adresse_employeur not set
697 770
    for val in [None, '']:
698 771
        partial_update_params = copy.deepcopy(update_params)
699 772
        partial_update_params['maj:rl1_adresse_employeur'] = val
700
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
773
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
774
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
701 775
        assert 'ADREMPLOYEUR' not in partial_update_params['RL1']
702 776
        partial_update_params = copy.deepcopy(update_params)
703 777
        partial_update_params['maj:rl2_adresse_employeur'] = val
704
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
778
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
779
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
705 780
        assert 'ADREMPLOYEUR' not in partial_update_params['RL2']
706 781

  
707 782

  
708
def test_sanitize_update_family_data_enfant_n(app, resource, update_params):
783
def test_sanitize_update_family_data_enfant_n(app, resource, update_params, family_data):
709 784
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
710 785

  
711 786
    # test maj:enfant_n
......
715 790
        if key == 'IDPERSONNE':
716 791
            continue
717 792
        partial_update_params['ENFANT'][0][key] = None  # reset fields
718
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
793
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
794
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
719 795
    assert len(partial_update_params['ENFANT']) == 1
720 796
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
721 797

  
......
725 801
        if key == 'IDPERSONNE':
726 802
            continue
727 803
        partial_update_params['ENFANT'][1][key] = None  # reset fields
728
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
804
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
805
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
729 806
    assert len(partial_update_params['ENFANT']) == 1
730 807
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
731 808

  
......
734 811
    partial_update_params['maj:enfant_1'] = False
735 812
    for key in partial_update_params['ENFANT'][1].keys():
736 813
        partial_update_params['ENFANT'][1][key] = None  # reset fields
737
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
814
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
815
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
738 816
    assert len(partial_update_params['ENFANT']) == 1
739 817
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
740 818

  
......
742 820
    partial_update_params = copy.deepcopy(update_params)
743 821
    partial_update_params['maj:enfant_0'] = False
744 822
    partial_update_params['maj:enfant_1'] = False
745
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
823
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
824
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
746 825
    assert 'ENFANT' not in partial_update_params
747 826

  
748 827
    # unknown child
749 828
    partial_update_params = copy.deepcopy(update_params)
750 829
    partial_update_params['maj:enfant_5'] = False
751
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
830
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
831
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
752 832
    assert len(partial_update_params['ENFANT']) == 2
753 833

  
754 834

  
755
def test_sanitize_update_family_data_enfant_n_assurance(app, resource, update_params):
835
def test_sanitize_update_family_data_enfant_n_assurance(app, resource, update_params, family_data):
756 836
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
757 837

  
758 838
    # test maj:enfant_n_assurance
......
761 841
    for key in partial_update_params['ENFANT'][1]['ASSURANCE'].keys():
762 842
        partial_update_params['ENFANT'][1]['ASSURANCE'][key] = None  # reset fields
763 843
    partial_update_params['maj:enfant_0'] = False  # check that ordering is not a problem
764
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
844
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
845
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
765 846
    assert len(partial_update_params['ENFANT']) == 1
766 847
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
767 848
    assert 'ASSURANCE' not in partial_update_params['ENFANT'][0]
......
770 851
    partial_update_params['maj:enfant_1'] = False
771 852
    partial_update_params['maj:enfant_1_assurance'] = False
772 853
    partial_update_params['maj:enfant_0'] = False
773
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
854
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
855
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
774 856
    assert 'ENFANT' not in partial_update_params
775 857

  
776 858
    # test maj:enfant_n_assurance not set
777 859
    for val in [None, '']:
778 860
        partial_update_params = copy.deepcopy(update_params)
779 861
        partial_update_params['maj:enfant_1_assurance'] = val
780
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
862
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
863
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
781 864
        assert 'ASSURANCE' not in partial_update_params['ENFANT'][0]
782 865

  
783 866

  
784
def test_sanitize_update_family_data_enfant_n_contact(app, resource, update_params):
867
def test_sanitize_update_family_data_enfant_n_contact(app, resource, update_params, family_data):
785 868
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
786 869

  
787 870
    # test maj:enfant_n_contact
......
791 874
        for key in contact.keys():
792 875
            partial_update_params['ENFANT'][0]['CONTACT'][i][key] = None  # reset fields
793 876
    partial_update_params['maj:enfant_1'] = False
794
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
877
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
878
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
795 879
    assert len(partial_update_params['ENFANT']) == 1
796 880
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
797 881
    assert 'CONTACT' not in partial_update_params['ENFANT'][0]
......
800 884
    partial_update_params['maj:enfant_1'] = False
801 885
    partial_update_params['maj:enfant_1_contact'] = False
802 886
    partial_update_params['maj:enfant_0'] = False
803
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
887
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
888
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
804 889
    assert 'ENFANT' not in partial_update_params
805 890

  
806 891
    # test maj:enfant_n_contact not set
......
808 893
        partial_update_params = copy.deepcopy(update_params)
809 894
        partial_update_params['maj:enfant_0_contact'] = val
810 895
        partial_update_params['maj:enfant_1'] = False
811
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
896
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
897
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
812 898
        assert 'CONTACT' not in partial_update_params['ENFANT'][0]
813 899

  
814 900

  
815
def test_sanitize_update_family_data_enfant_n_sanitaire(app, resource, update_params):
901
def test_sanitize_update_family_data_enfant_n_sanitaire(app, resource, update_params, family_data):
816 902
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
817 903

  
818 904
    # test maj:enfant_n_sanitaire
......
821 907
    for key in partial_update_params['ENFANT'][1]['SANITAIRE'].keys():
822 908
        partial_update_params['ENFANT'][1]['SANITAIRE'][key] = None  # reset fields
823 909
    partial_update_params['maj:enfant_0'] = False
824
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
910
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
911
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
825 912
    assert len(partial_update_params['ENFANT']) == 1
826 913
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
827 914
    assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
......
830 917
    partial_update_params['maj:enfant_1'] = False
831 918
    partial_update_params['maj:enfant_1_sanitaire'] = False
832 919
    partial_update_params['maj:enfant_0'] = False
833
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
920
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
921
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
834 922
    assert 'ENFANT' not in partial_update_params
835 923

  
836 924
    # test maj:enfant_n_sanitaire not set
......
838 926
        partial_update_params = copy.deepcopy(update_params)
839 927
        partial_update_params['maj:enfant_0_sanitaire'] = val
840 928
        partial_update_params['maj:enfant_1_sanitaire'] = val
841
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
929
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
930
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
842 931
        assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
843 932
        assert 'SANITAIRE' not in partial_update_params['ENFANT'][1]
844 933

  
845 934

  
846
def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource, update_params):
935
def test_sanitize_update_family_data_enfant_n_sanitaire_allergie(app, resource, update_params, family_data):
847 936
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
848 937

  
849 938
    # test maj:enfant_n_sanitaire_allergie
......
852 941
    for key in partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'].keys():
853 942
        partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'][key] = None  # reset fields
854 943
    partial_update_params['maj:enfant_0'] = False
855
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
944
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
945
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
856 946
    assert len(partial_update_params['ENFANT']) == 1
857 947
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
858 948
    assert 'ALLERGIE' not in partial_update_params['ENFANT'][0]['SANITAIRE']
......
861 951
    partial_update_params['maj:enfant_1_sanitaire'] = False
862 952
    partial_update_params['maj:enfant_1_sanitaire_allergie'] = False
863 953
    partial_update_params['maj:enfant_0'] = False
864
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
954
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
955
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
865 956
    assert len(partial_update_params['ENFANT']) == 1
866 957
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
867 958
    assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
......
870 961
    partial_update_params['maj:enfant_1'] = False
871 962
    partial_update_params['maj:enfant_1_sanitaire_allergie'] = False
872 963
    partial_update_params['maj:enfant_0'] = False
873
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
964
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
965
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
874 966
    assert 'ENFANT' not in partial_update_params
875 967

  
876 968
    # test maj:enfant_n_sanitaire_allergie not set
......
878 970
        partial_update_params = copy.deepcopy(update_params)
879 971
        partial_update_params['maj:enfant_0_sanitaire_allergie'] = val
880 972
        partial_update_params['maj:enfant_1_sanitaire_allergie'] = val
881
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
973
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
974
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
882 975
        assert 'ALLERGIE' not in partial_update_params['ENFANT'][0]['SANITAIRE']
883 976
        assert 'ALLERGIE' not in partial_update_params['ENFANT'][1]['SANITAIRE']
884 977

  
......
889 982
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['MEDICAMENTEUSES'] = 'NON'
890 983
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = 'NON'
891 984
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = ''
892
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
985
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
986
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
893 987
    assert partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'] == [
894 988
        {'TYPE': 'ASTHME', 'ALLERGIQUE': 'NON', 'NOMALLERGIE': None},
895 989
        {'TYPE': 'MEDICAMENTEUSES', 'ALLERGIQUE': 'NON', 'NOMALLERGIE': None},
......
902 996
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['MEDICAMENTEUSES'] = 'OUI'
903 997
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['ALIMENTAIRES'] = 'OUI'
904 998
    partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE']['AUTRES'] = 'accariens'
905
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
999
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1000
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
906 1001
    assert partial_update_params['ENFANT'][0]['SANITAIRE']['ALLERGIE'] == [
907 1002
        {'TYPE': 'ASTHME', 'ALLERGIQUE': 'OUI', 'NOMALLERGIE': None},
908 1003
        {'TYPE': 'MEDICAMENTEUSES', 'ALLERGIQUE': 'OUI', 'NOMALLERGIE': None},
......
911 1006
    ]
912 1007

  
913 1008

  
914
def test_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resource, update_params):
1009
def test_sanitize_update_family_data_enfant_n_sanitaire_medecin(app, resource, update_params, family_data):
915 1010
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
916 1011

  
917 1012
    # test maj:enfant_n_sanitaire_medecin
......
920 1015
    for key in partial_update_params['ENFANT'][1]['SANITAIRE']['MEDECIN'].keys():
921 1016
        partial_update_params['ENFANT'][1]['SANITAIRE']['MEDECIN'][key] = None  # reset fields
922 1017
    partial_update_params['maj:enfant_0'] = False
923
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1018
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1019
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
924 1020
    assert len(partial_update_params['ENFANT']) == 1
925 1021
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
926 1022
    assert 'MEDECIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
......
929 1025
    partial_update_params['maj:enfant_1_sanitaire'] = False
930 1026
    partial_update_params['maj:enfant_1_sanitaire_medecin'] = False
931 1027
    partial_update_params['maj:enfant_0'] = False
932
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1028
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1029
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
933 1030
    assert len(partial_update_params['ENFANT']) == 1
934 1031
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
935 1032
    assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
......
938 1035
    partial_update_params['maj:enfant_1'] = False
939 1036
    partial_update_params['maj:enfant_1_sanitaire_medecin'] = False
940 1037
    partial_update_params['maj:enfant_0'] = False
941
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1038
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1039
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
942 1040
    assert 'ENFANT' not in partial_update_params
943 1041

  
944 1042
    # test maj:enfant_n_sanitaire_medecin not set
......
946 1044
        partial_update_params = copy.deepcopy(update_params)
947 1045
        partial_update_params['maj:enfant_0_sanitaire_medecin'] = val
948 1046
        partial_update_params['maj:enfant_1_sanitaire_medecin'] = val
949
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1047
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1048
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
950 1049
        assert 'MEDECIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
951 1050
        assert 'MEDECIN' not in partial_update_params['ENFANT'][1]['SANITAIRE']
952 1051

  
953 1052

  
954
def test_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource, update_params):
1053
def test_sanitize_update_family_data_enfant_n_sanitaire_vaccin(app, resource, update_params, family_data):
955 1054
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
956 1055

  
957 1056
    # test maj:enfant_n_sanitaire_vaccin
......
960 1059
    for key in partial_update_params['ENFANT'][1]['SANITAIRE']['VACCIN'].keys():
961 1060
        partial_update_params['ENFANT'][1]['SANITAIRE']['VACCIN'][key] = None  # reset fields
962 1061
    partial_update_params['maj:enfant_0'] = False
963
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1062
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1063
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
964 1064
    assert len(partial_update_params['ENFANT']) == 1
965 1065
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
966 1066
    assert 'VACCIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
......
969 1069
    partial_update_params['maj:enfant_1_sanitaire'] = False
970 1070
    partial_update_params['maj:enfant_1_sanitaire_vaccin'] = False
971 1071
    partial_update_params['maj:enfant_0'] = False
972
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1072
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1073
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
973 1074
    assert len(partial_update_params['ENFANT']) == 1
974 1075
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
975 1076
    assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
......
978 1079
    partial_update_params['maj:enfant_1'] = False
979 1080
    partial_update_params['maj:enfant_1_sanitaire_vaccin'] = False
980 1081
    partial_update_params['maj:enfant_0'] = False
981
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1082
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1083
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
982 1084
    assert 'ENFANT' not in partial_update_params
983 1085

  
984 1086
    # test maj:enfant_n_sanitaire_vaccin not set
......
986 1088
        partial_update_params = copy.deepcopy(update_params)
987 1089
        partial_update_params['maj:enfant_0_sanitaire_vaccin'] = val
988 1090
        partial_update_params['maj:enfant_1_sanitaire_vaccin'] = val
989
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1091
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1092
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
990 1093
        assert 'VACCIN' not in partial_update_params['ENFANT'][0]['SANITAIRE']
991 1094
        assert 'VACCIN' not in partial_update_params['ENFANT'][1]['SANITAIRE']
992 1095

  
993 1096

  
994
def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource, update_params):
1097
def test_sanitize_update_family_data_enfant_n_sanitaire_handicap(app, resource, update_params, family_data):
995 1098
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
996 1099

  
997 1100
    # test maj:enfant_n_contact
998
    filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/family_info.xml')
999
    with open(filepath) as xml:
1000
        content = xml.read()
1001 1101
    partial_update_params = copy.deepcopy(update_params)
1002 1102
    partial_update_params['maj:enfant_0_sanitaire_handicap'] = False
1003 1103
    # reset fields
......
1012 1112
    for key in handicap_fields:
1013 1113
        partial_update_params['ENFANT'][0]['SANITAIRE'][key] = None
1014 1114
    partial_update_params['maj:enfant_1'] = False
1015
    with mock_getdata(content, 'RefFamilleDui'):
1115
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1016 1116
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1017
        original_values = resource.get_family_data(name_id='yyy')['ENFANT'][0]['SANITAIRE']
1018 1117
    assert len(partial_update_params['ENFANT']) == 1
1019 1118
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "4242"
1020 1119
    # fields were set with origin values found in Axel
1021 1120
    new_values = partial_update_params['ENFANT'][0]['SANITAIRE']
1022 1121
    for key in handicap_fields:
1023
        assert new_values[key] == original_values[key]
1122
        assert new_values[key] == family_data['ENFANT'][0]['SANITAIRE'][key]
1024 1123
    # combine with maj:enfant_n_sanitaire
1025 1124
    partial_update_params = copy.deepcopy(update_params)
1026 1125
    partial_update_params['maj:enfant_1_sanitaire'] = False
1027 1126
    partial_update_params['maj:enfant_1_sanitaire_handicap'] = False
1028 1127
    partial_update_params['maj:enfant_0'] = False
1029
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1128
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1129
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1030 1130
    assert len(partial_update_params['ENFANT']) == 1
1031 1131
    assert partial_update_params['ENFANT'][0]['IDPERSONNE'] == "3535"
1032 1132
    assert 'SANITAIRE' not in partial_update_params['ENFANT'][0]
......
1035 1135
    partial_update_params['maj:enfant_1'] = False
1036 1136
    partial_update_params['maj:enfant_1_sanitaire_sanitaire'] = False
1037 1137
    partial_update_params['maj:enfant_0'] = False
1038
    resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1138
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1139
        resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1039 1140
    assert 'ENFANT' not in partial_update_params
1040 1141

  
1041 1142
    # test maj:enfant_n_sanitaire_handicap not set
1042 1143
    for val in [None, '']:
1043 1144
        partial_update_params = copy.deepcopy(update_params)
1044 1145
        partial_update_params['maj:enfant_0_sanitaire_handicap'] = val
1045
        with mock.patch('passerelle.contrib.toulouse_axel.models.ref_famille_dui') as operation:
1146
        partial_update_params['maj:enfant_1'] = False
1147
        # reset fields
1148
        for key in handicap_fields:
1149
            partial_update_params['ENFANT'][0]['SANITAIRE'][key] = None
1150
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_family_data', return_value=family_data):
1046 1151
            resource.sanitize_update_family_data(name_id='yyy', post_data=partial_update_params)
1047
        assert operation.call_args_list == [mock.call(resource, {'PORTAIL': {'DUI': {'IDDUI': u'XXX'}}})]
1048

  
1049

  
1050
def test_sanitize_update_family_data_axel_error(app, resource, update_params):
1152
        new_values = partial_update_params['ENFANT'][0]['SANITAIRE']
1153
        for key in handicap_fields:
1154
            assert new_values[key] == family_data['ENFANT'][0]['SANITAIRE'][key]
1155

  
1156

  
1157
@pytest.mark.parametrize('flags', [
1158
    # get family data to fill handicap fields
1159
    ['maj:enfant_0_sanitaire_handicap', 'maj:revenus', 'maj:rl1', 'maj:rl2'],
1160
    # get family data to fill revenus fields
1161
    ['maj:rl1', 'maj:rl2'],
1162
    # get family data to fill rl1 fields
1163
    ['maj:revenus', 'maj:rl2'],
1164
    # get family data to fill rl2 fields
1165
    ['maj:revenus', 'maj:rl1'],
1166
])
1167
def test_sanitize_update_family_data_axel_error(app, resource, update_params, flags):
1051 1168
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
1052 1169

  
1053 1170
    partial_update_params = copy.deepcopy(update_params)
1054
    partial_update_params['maj:enfant_0_sanitaire_handicap'] = False
1171
    for flag in flags:
1172
        partial_update_params[flag] = False
1055 1173
    with mock.patch('passerelle.contrib.toulouse_axel.models.ref_famille_dui') as operation:
1056 1174
        operation.side_effect = AxelError('FooBar')
1057 1175
        with pytest.raises(APIError, match='Axel error: FooBar'):
1058
-