Projet

Général

Profil

0001-toulouse-axel-remove-all-about-next-year-41406.patch

Lauréline Guérin, 07 avril 2020 10:23

Télécharger (9,12 ko)

Voir les différences:

Subject: [PATCH] toulouse-axel: remove all about next year (#41406)

 passerelle/contrib/toulouse_axel/models.py | 23 ++---------
 tests/test_toulouse_axel.py                | 46 ++++++----------------
 2 files changed, 17 insertions(+), 52 deletions(-)
passerelle/contrib/toulouse_axel/models.py
518 518
        current_reference_year = utils.get_reference_year_from_date(today)
519 519
        next_reference_year = current_reference_year + 1
520 520
        if check_registrations:
521
            children_registred_for_current_year = self.are_children_registered(
522
                dui=dui,
523
                reference_year=current_reference_year)
524
            children_registred_for_next_year = self.are_children_registered(
525
                dui=dui,
526
                reference_year=next_reference_year)
521
            children_registred = self.are_children_registered(dui=dui)
527 522

  
528 523
            for child in family_data.get('ENFANT', []):
529
                child['clae_cantine_current'] = children_registred_for_current_year.get(child['IDPERSONNE'])
530
                child['clae_cantine_next'] = children_registred_for_next_year.get(child['IDPERSONNE'])
524
                child['clae_cantine_current'] = children_registred.get(child['IDPERSONNE'])
531 525

  
532 526
        if with_management_dates:
533 527
            family_data['management_dates'] = self.get_management_dates()
......
1043 1037

  
1044 1038
        return children_activities[child_id]
1045 1039

  
1046
    def are_children_registered(self, dui, reference_year):
1040
    def are_children_registered(self, dui):
1047 1041
        # check reference_year
1048 1042
        today = datetime.date.today()
1049
        current_reference_year = utils.get_reference_year_from_date(today)
1050
        # don't check registration for other years than current and next
1051
        if reference_year not in [current_reference_year, current_reference_year + 1]:
1052
            return {}
1053
        # if next year, check dates.
1054
        # check registration for next year only in june or july
1055
        if reference_year == current_reference_year + 1 and today.month not in [6, 7]:
1056
            return {}
1057

  
1058
        # ok, check registrations
1043
        reference_year = utils.get_reference_year_from_date(today)
1059 1044
        try:
1060 1045
            children_activities = self.get_children_activities(dui=dui, reference_year=reference_year)
1061 1046
        except APIError:
tests/test_toulouse_axel.py
52 52
    csp_mapping,
53 53
    lien_parente_mapping,
54 54
    type_regime_mapping,
55
    get_reference_year_from_date,
56 55
    upperize,
57 56
)
58 57
from passerelle.utils.jsonresponse import APIError
......
777 776
    assert resp.json['data']['annee_reference_label'] == '2019/2020'
778 777

  
779 778
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.are_children_registered') as registered:
780
        registered.side_effect = [{'4242': True}, {}]
779
        registered.return_value = {'4242': True}
781 780
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_management_dates') as management_dates:
782 781
            management_dates.return_value = {'foo': 'bar'}
783 782
            with mock_getdata(content, 'RefFamilleDui'):
784 783
                resp = app.get('/toulouse-axel/test/family_info?NameID=yyy')
785 784
    assert resp.json['err'] == 0
786 785
    assert resp.json['data']['ENFANT'][0]['clae_cantine_current'] is True
787
    assert resp.json['data']['ENFANT'][0]['clae_cantine_next'] is None
788 786
    assert resp.json['data']['ENFANT'][1]['clae_cantine_current'] is None
789
    assert resp.json['data']['ENFANT'][1]['clae_cantine_next'] is None
790 787

  
791 788
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.are_children_registered') as registered:
792
        registered.side_effect = [{}, {'4242': False, '3535': True}]
789
        registered.return_value = {}
793 790
        with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_management_dates') as management_dates:
794 791
            management_dates.return_value = {'foo': 'bar'}
795 792
            with mock_getdata(content, 'RefFamilleDui'):
796 793
                resp = app.get('/toulouse-axel/test/family_info?NameID=yyy')
797 794
    assert resp.json['err'] == 0
798 795
    assert resp.json['data']['ENFANT'][0]['clae_cantine_current'] is None
799
    assert resp.json['data']['ENFANT'][0]['clae_cantine_next'] is False
800 796
    assert resp.json['data']['ENFANT'][1]['clae_cantine_current'] is None
801
    assert resp.json['data']['ENFANT'][1]['clae_cantine_next'] is True
802 797

  
803 798
    assert resp.json['data']['SITUATIONFAMILIALE'] == 'S'
804 799
    assert resp.json['data']['SITUATIONFAMILIALE_label'] == 'Séparé (e)'
......
899 894
        'SANITAIRE',
900 895
        'SEXE',
901 896
        'clae_cantine_current',
902
        'clae_cantine_next',
903 897
    ])
904 898
    assert resp.json['data']['id'] == '4242'
905 899
    assert resp.json['data']['text'] == 'foo foo'
......
911 905
    assert resp.json['data']['CONTACT'][2]['text'] == 'foo foo'
912 906

  
913 907
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.are_children_registered') as registered:
914
        registered.side_effect = [{'4242': True}, {}]
908
        registered.return_value = {'4242': True}
915 909
        with mock_getdata(content, 'RefFamilleDui'):
916 910
            resp = app.get('/toulouse-axel/test/child_info?NameID=yyy&idpersonne=4242')
917 911
    assert resp.json['err'] == 0
918 912
    assert resp.json['data']['clae_cantine_current'] is True
919
    assert resp.json['data']['clae_cantine_next'] is None
920 913

  
921 914
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.are_children_registered') as registered:
922
        registered.side_effect = [{}, {'4242': False}]
915
        registered.return_value = {}
923 916
        with mock_getdata(content, 'RefFamilleDui'):
924 917
            resp = app.get('/toulouse-axel/test/child_info?NameID=yyy&idpersonne=4242')
925 918
    assert resp.json['err'] == 0
926 919
    assert resp.json['data']['clae_cantine_current'] is None
927
    assert resp.json['data']['clae_cantine_next'] is False
928 920

  
929 921
    assert resp.json['data']['CONTACT'][0]['LIENPARENTE'] == 'GRP1'
930 922
    assert resp.json['data']['CONTACT'][0]['LIENPARENTE_label'] == 'Grands-parents paternels'
......
2773 2765
def test_are_children_registered_axel_error(resource):
2774 2766
    with mock.patch('passerelle.contrib.toulouse_axel.models.enfants_activites') as operation:
2775 2767
        operation.side_effect = AxelError('FooBar')
2776
        assert resource.are_children_registered(dui='XXX', reference_year=42) == {}
2777

  
2778

  
2779
@pytest.mark.parametrize('date_value, year, expected', [
2780
    # neither current year nor next year
2781
    ('2020-01-01', 2018, {}),
2782
    ('2020-01-01', 2021, {}),
2783
    # current year
2784
    ('2019-08-01', 2019, {'3535': True}),
2785
    ('2020-07-31', 2019, {'3535': True}),
2786
    # too early for next_year
2787
    ('2019-08-01', 2020, {}),
2788
    ('2020-01-01', 2020, {}),
2789
    ('2020-05-31', 2020, {}),
2790
    # good period for next year
2791
    ('2020-06-01', 2020, {'3535': True}),
2792
    ('2020-07-31', 2020, {'3535': True}),
2768
        assert resource.are_children_registered(dui='XXX') == {}
2769

  
2770

  
2771
@pytest.mark.parametrize('date_value, expected', [
2772
    ('2019-08-01', {'3535': True}),
2773
    ('2020-07-31', {'3535': True}),
2793 2774
])
2794
def test_are_children_registered_reference_year(resource, date_value, year, expected):
2775
def test_are_children_registered_reference_year(resource, date_value, expected):
2795 2776
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_children_activities') as get_children_activities:
2796 2777
        get_children_activities.return_value = {'3535': {'ACTIVITE': [{}]}}
2797 2778
        with freezegun.freeze_time(date_value):
2798
            assert resource.are_children_registered(dui='XXX', reference_year=year) == expected
2779
            assert resource.are_children_registered(dui='XXX') == expected
2799 2780

  
2800 2781

  
2801 2782
@pytest.mark.parametrize('activities, expected', [
......
2805 2786
    ({'3535': {'ACTIVITE': [{}]}, '4242': {}}, {'3535': True, '4242': False}),
2806 2787
])
2807 2788
def test_are_children_registered(resource, activities, expected):
2808
    today = datetime.date.today()
2809 2789
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_children_activities') as get_children_activities:
2810 2790
        get_children_activities.return_value = activities
2811
        assert resource.are_children_registered(dui='XXX', reference_year=get_reference_year_from_date(today)) == expected
2791
        assert resource.are_children_registered(dui='XXX') == expected
2812 2792

  
2813 2793

  
2814 2794
def test_clae_booking_endpoint_axel_error(app, resource, booking_params):
2815
-