2612 |
2612 |
assert resp.json['data'][3]['prefill'] is False
|
2613 |
2613 |
assert resp.json['data'][4]['prefill'] is True
|
2614 |
2614 |
|
2615 |
|
with mock_getdata(content, 'ReservationPeriode'):
|
2616 |
|
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
2617 |
|
resp = app.get(
|
2618 |
|
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
|
2619 |
|
'&start_date=2020-01-20&end_date=2020-01-24&activity_type=MAT')
|
2620 |
|
|
2621 |
2615 |
# again - data are in cache
|
2622 |
2616 |
resp = app.get(
|
2623 |
2617 |
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
|
... | ... | |
2671 |
2665 |
assert resp.json['data'][-1]['id'] == '3535:MAT:TOTO:%s' % last_date
|
2672 |
2666 |
|
2673 |
2667 |
|
|
2668 |
@freezegun.freeze_time('2019-09-01')
|
|
2669 |
def test_clae_booking_activity_annual_possible_days_endpoint_axel_error(app, resource):
|
|
2670 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2671 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
|
2672 |
operation.side_effect = AxelError('FooBar')
|
|
2673 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2674 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2675 |
assert resp.json['err'] == 'error'
|
|
2676 |
|
|
2677 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2678 |
with open(filepath) as xml:
|
|
2679 |
content = xml.read()
|
|
2680 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2681 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2682 |
operation.side_effect = AxelError('FooBar')
|
|
2683 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2684 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2685 |
assert resp.json['err'] == 'error'
|
|
2686 |
|
|
2687 |
|
|
2688 |
@freezegun.freeze_time('2019-09-01')
|
|
2689 |
def test_clae_booking_activity_annual_possible_days_endpoint_activity_type(app, resource):
|
|
2690 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2691 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=FOO', status=400)
|
|
2692 |
assert resp.json['err_desc'] == "bad activity_type, should be MAT, MIDI, SOIR or GARD"
|
|
2693 |
assert resp.json['err'] == 'bad-request'
|
|
2694 |
|
|
2695 |
|
|
2696 |
@freezegun.freeze_time('2019-09-01')
|
|
2697 |
def test_clae_booking_activity_annual_possible_days_endpoint_no_result(app, resource, child_activities_data):
|
|
2698 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2699 |
assert resp.json['err_desc'] == "Person not found"
|
|
2700 |
assert resp.json['err'] == 'not-found'
|
|
2701 |
|
|
2702 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2703 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2704 |
with open(filepath) as xml:
|
|
2705 |
content = xml.read()
|
|
2706 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2707 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2708 |
operation.side_effect = AxelError('FooBar')
|
|
2709 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=4242&activity_type=MAT')
|
|
2710 |
assert resp.json['err_desc'] == "Child not found"
|
|
2711 |
assert resp.json['err'] == 'not-found'
|
|
2712 |
|
|
2713 |
content = """<PORTAIL>
|
|
2714 |
<DUI>
|
|
2715 |
<IDDUI>XXX</IDDUI>
|
|
2716 |
<ENFANT>
|
|
2717 |
<IDPERSONNE>4242</IDPERSONNE>
|
|
2718 |
<ACTIVITE>
|
|
2719 |
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
|
|
2720 |
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
|
2721 |
<JOUR>00000</JOUR>
|
|
2722 |
</ACTIVITE>
|
|
2723 |
</ENFANT>
|
|
2724 |
</DUI>
|
|
2725 |
</PORTAIL>"""
|
|
2726 |
activities = child_activities_data['ENFANT'][0]
|
|
2727 |
with mock_getdata(content, 'ReservationPeriode'):
|
|
2728 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2729 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2730 |
assert resp.json['err_desc'] == "Child not found"
|
|
2731 |
assert resp.json['err'] == 'not-found'
|
|
2732 |
|
|
2733 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_booking_data') as activities_info:
|
|
2734 |
activities_info.return_value = {'ACTIVITE': []}
|
|
2735 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2736 |
assert resp.json['err'] == 0
|
|
2737 |
assert resp.json['data'] == []
|
|
2738 |
|
|
2739 |
|
|
2740 |
@freezegun.freeze_time('2019-09-01')
|
|
2741 |
def test_clae_booking_activity_annual_possible_days_endpoint(app, resource, child_activities_data):
|
|
2742 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2743 |
content = """<PORTAIL>
|
|
2744 |
<DUI>
|
|
2745 |
<IDDUI>XXX</IDDUI>
|
|
2746 |
<ENFANT>
|
|
2747 |
<IDPERSONNE>3535</IDPERSONNE>
|
|
2748 |
<ACTIVITE>
|
|
2749 |
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
|
|
2750 |
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
|
2751 |
<JOUR>10201</JOUR>
|
|
2752 |
</ACTIVITE>
|
|
2753 |
</ENFANT>
|
|
2754 |
</DUI>
|
|
2755 |
</PORTAIL>"""
|
|
2756 |
activities = child_activities_data['ENFANT'][0]
|
|
2757 |
with mock_getdata(content, 'ReservationPeriode'):
|
|
2758 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2759 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2760 |
assert resp.json['err'] == 0
|
|
2761 |
assert len(resp.json['data']) == 5
|
|
2762 |
assert set(resp.json['data'][0].keys()) == set(['id', 'text', 'disabled', 'prefill', 'details'])
|
|
2763 |
assert resp.json['data'][0]['id'] == '3535:MAT:A19P1M1:monday'
|
|
2764 |
assert resp.json['data'][1]['id'] == '3535:MAT:A19P1M1:tuesday'
|
|
2765 |
assert resp.json['data'][2]['id'] == '3535:MAT:A19P1M1:wednesday'
|
|
2766 |
assert resp.json['data'][3]['id'] == '3535:MAT:A19P1M1:thursday'
|
|
2767 |
assert resp.json['data'][4]['id'] == '3535:MAT:A19P1M1:friday'
|
|
2768 |
assert resp.json['data'][0]['text'] == 'Monday'
|
|
2769 |
assert resp.json['data'][1]['text'] == 'Tuesday'
|
|
2770 |
assert resp.json['data'][2]['text'] == 'Wednesday'
|
|
2771 |
assert resp.json['data'][3]['text'] == 'Thursday'
|
|
2772 |
assert resp.json['data'][4]['text'] == 'Friday'
|
|
2773 |
assert resp.json['data'][0]['disabled'] is False
|
|
2774 |
assert resp.json['data'][1]['disabled'] is False
|
|
2775 |
assert resp.json['data'][2]['disabled'] is True
|
|
2776 |
assert resp.json['data'][3]['disabled'] is False
|
|
2777 |
assert resp.json['data'][4]['disabled'] is False
|
|
2778 |
assert resp.json['data'][0]['prefill'] is True
|
|
2779 |
assert resp.json['data'][1]['prefill'] is False
|
|
2780 |
assert resp.json['data'][2]['prefill'] is None
|
|
2781 |
assert resp.json['data'][3]['prefill'] is False
|
|
2782 |
assert resp.json['data'][4]['prefill'] is True
|
|
2783 |
|
|
2784 |
# again - data are in cache
|
|
2785 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2786 |
assert resp.json['err'] == 0
|
|
2787 |
assert len(resp.json['data']) == 5
|
|
2788 |
|
|
2789 |
|
|
2790 |
def test_clae_booking_activity_annual_possible_days_reference_year(app, resource, child_activities_data):
|
|
2791 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2792 |
activities = child_activities_data['ENFANT'][0]
|
|
2793 |
with freezegun.freeze_time('2019-09-01'):
|
|
2794 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2795 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2796 |
operation.return_value = OperationResult(json_response={'DATA': {'PORTAIL': {'DUI': {}}}}, xml_request='', xml_response='')
|
|
2797 |
app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2798 |
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
|
2799 |
assert payload['ENFANT']['ACTIVITE'][0]['ANNEEREFERENCE'] == '2019'
|
|
2800 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDEBUT'] == '2019-09-09'
|
|
2801 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDFIN'] == '2019-09-13'
|
|
2802 |
|
|
2803 |
with freezegun.freeze_time('2020-08-01'):
|
|
2804 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2805 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2806 |
operation.return_value = OperationResult(json_response={'DATA': {'PORTAIL': {'DUI': {}}}}, xml_request='', xml_response='')
|
|
2807 |
app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2808 |
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
|
2809 |
assert payload['ENFANT']['ACTIVITE'][0]['ANNEEREFERENCE'] == '2020'
|
|
2810 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDEBUT'] == '2020-09-14'
|
|
2811 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDFIN'] == '2020-09-18'
|
|
2812 |
|
|
2813 |
|
2674 |
2814 |
@freezegun.freeze_time('2019-09-01')
|
2675 |
2815 |
def test_clae_booking_activity_prefill_endpoint_axel_error(app, resource):
|
2676 |
2816 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
... | ... | |
2807 |
2947 |
assert resp.json['data'] == ['3535:MAT:A19P1M1:2020-01-20', '3535:MAT:A19P1M1:2020-01-24']
|
2808 |
2948 |
|
2809 |
2949 |
|
|
2950 |
@freezegun.freeze_time('2019-09-01')
|
|
2951 |
def test_clae_booking_activity_annual_prefill_endpoint_axel_error(app, resource):
|
|
2952 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2953 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
|
2954 |
operation.side_effect = AxelError('FooBar')
|
|
2955 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2956 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2957 |
assert resp.json['err'] == 'error'
|
|
2958 |
|
|
2959 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2960 |
with open(filepath) as xml:
|
|
2961 |
content = xml.read()
|
|
2962 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2963 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2964 |
operation.side_effect = AxelError('FooBar')
|
|
2965 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2966 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2967 |
assert resp.json['err'] == 'error'
|
|
2968 |
|
|
2969 |
|
|
2970 |
@freezegun.freeze_time('2019-09-01')
|
|
2971 |
def test_clae_booking_activity_annual_prefill_endpoint_activity_type(app, resource):
|
|
2972 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2973 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=FOO', status=400)
|
|
2974 |
assert resp.json['err_desc'] == "bad activity_type, should be MAT, MIDI, SOIR or GARD"
|
|
2975 |
assert resp.json['err'] == 'bad-request'
|
|
2976 |
|
|
2977 |
|
|
2978 |
@freezegun.freeze_time('2019-09-01')
|
|
2979 |
def test_clae_booking_activity_annual_prefill_endpoint_no_result(app, resource, child_activities_data):
|
|
2980 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2981 |
assert resp.json['err_desc'] == "Person not found"
|
|
2982 |
assert resp.json['err'] == 'not-found'
|
|
2983 |
|
|
2984 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2985 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2986 |
with open(filepath) as xml:
|
|
2987 |
content = xml.read()
|
|
2988 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2989 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2990 |
operation.side_effect = AxelError('FooBar')
|
|
2991 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=4242&activity_type=MAT')
|
|
2992 |
assert resp.json['err_desc'] == "Child not found"
|
|
2993 |
assert resp.json['err'] == 'not-found'
|
|
2994 |
|
|
2995 |
content = """<PORTAIL>
|
|
2996 |
<DUI>
|
|
2997 |
<IDDUI>XXX</IDDUI>
|
|
2998 |
<ENFANT>
|
|
2999 |
<IDPERSONNE>4242</IDPERSONNE>
|
|
3000 |
<ACTIVITE>
|
|
3001 |
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
|
|
3002 |
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
|
3003 |
<JOUR>00000</JOUR>
|
|
3004 |
</ACTIVITE>
|
|
3005 |
</ENFANT>
|
|
3006 |
</DUI>
|
|
3007 |
</PORTAIL>"""
|
|
3008 |
activities = child_activities_data['ENFANT'][0]
|
|
3009 |
with mock_getdata(content, 'ReservationPeriode'):
|
|
3010 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
3011 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
3012 |
assert resp.json['err_desc'] == "Child not found"
|
|
3013 |
assert resp.json['err'] == 'not-found'
|
|
3014 |
|
|
3015 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.clae_booking_activity_annual_possible_days') as possible_days:
|
|
3016 |
possible_days.return_value = {'data': []}
|
|
3017 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
3018 |
assert resp.json['err'] == 0
|
|
3019 |
assert resp.json['data'] == []
|
|
3020 |
|
|
3021 |
|
|
3022 |
def test_clae_booking_activity_annual_prefill_endpoint(app, resource):
|
|
3023 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
3024 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.clae_booking_activity_annual_possible_days') as possible_days:
|
|
3025 |
possible_days.return_value = {
|
|
3026 |
'data': [
|
|
3027 |
{
|
|
3028 |
'id': '3535:MAT:A19P1M1:monday',
|
|
3029 |
'prefill': True,
|
|
3030 |
},
|
|
3031 |
{
|
|
3032 |
'id': '3535:MAT:A19P1M1:tuesday',
|
|
3033 |
'prefill': False,
|
|
3034 |
},
|
|
3035 |
{
|
|
3036 |
'id': '3535:MAT:A19P1M1:wednesday',
|
|
3037 |
'prefill': None,
|
|
3038 |
},
|
|
3039 |
{
|
|
3040 |
'id': '3535:MAT:A19P1M1:thursday',
|
|
3041 |
'prefill': False,
|
|
3042 |
},
|
|
3043 |
{
|
|
3044 |
'id': '3535:MAT:A19P1M1:friday',
|
|
3045 |
'prefill': True,
|
|
3046 |
},
|
|
3047 |
]
|
|
3048 |
}
|
|
3049 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_prefill?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
3050 |
assert resp.json['err'] == 0
|
|
3051 |
assert resp.json['data'] == ['3535:MAT:A19P1M1:monday', '3535:MAT:A19P1M1:friday']
|
|
3052 |
|
|
3053 |
|
2810 |
3054 |
def test_are_children_registered_axel_error(resource):
|
2811 |
3055 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
2812 |
3056 |
operation.side_effect = AxelError('FooBar')
|
2813 |
|
-
|