2615 |
2615 |
assert resp.json['data'][3]['prefill'] is False
|
2616 |
2616 |
assert resp.json['data'][4]['prefill'] is True
|
2617 |
2617 |
|
2618 |
|
with mock_getdata(content, 'ReservationPeriode'):
|
2619 |
|
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
2620 |
|
resp = app.get(
|
2621 |
|
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
|
2622 |
|
'&start_date=2020-01-20&end_date=2020-01-24&activity_type=MAT')
|
2623 |
|
|
2624 |
2618 |
# again - data are in cache
|
2625 |
2619 |
resp = app.get(
|
2626 |
2620 |
'/toulouse-axel/test/clae_booking_activity_possible_days?NameID=yyy&idpersonne=3535'
|
... | ... | |
2674 |
2668 |
assert resp.json['data'][-1]['id'] == '3535:MAT:TOTO:%s' % last_date
|
2675 |
2669 |
|
2676 |
2670 |
|
|
2671 |
@freezegun.freeze_time('2019-09-01')
|
|
2672 |
def test_clae_booking_activity_annual_possible_days_endpoint_axel_error(app, resource):
|
|
2673 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2674 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.enfants_activites') as operation:
|
|
2675 |
operation.side_effect = AxelError('FooBar')
|
|
2676 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2677 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2678 |
assert resp.json['err'] == 'error'
|
|
2679 |
|
|
2680 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2681 |
with open(filepath) as xml:
|
|
2682 |
content = xml.read()
|
|
2683 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2684 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2685 |
operation.side_effect = AxelError('FooBar')
|
|
2686 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2687 |
assert resp.json['err_desc'] == "Axel error: FooBar"
|
|
2688 |
assert resp.json['err'] == 'error'
|
|
2689 |
|
|
2690 |
|
|
2691 |
@freezegun.freeze_time('2019-09-01')
|
|
2692 |
def test_clae_booking_activity_annual_possible_days_endpoint_activity_type(app, resource):
|
|
2693 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2694 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=FOO', status=400)
|
|
2695 |
assert resp.json['err_desc'] == "bad activity_type, should be MAT, MIDI, SOIR or GARD"
|
|
2696 |
assert resp.json['err'] == 'bad-request'
|
|
2697 |
|
|
2698 |
|
|
2699 |
@freezegun.freeze_time('2019-09-01')
|
|
2700 |
def test_clae_booking_activity_annual_possible_days_endpoint_no_result(app, resource, child_activities_data):
|
|
2701 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2702 |
assert resp.json['err_desc'] == "Person not found"
|
|
2703 |
assert resp.json['err'] == 'not-found'
|
|
2704 |
|
|
2705 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2706 |
filepath = os.path.join(os.path.dirname(__file__), 'data/toulouse_axel/child_activities.xml')
|
|
2707 |
with open(filepath) as xml:
|
|
2708 |
content = xml.read()
|
|
2709 |
with mock_getdata(content, 'EnfantsActivites'):
|
|
2710 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2711 |
operation.side_effect = AxelError('FooBar')
|
|
2712 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=4242&activity_type=MAT')
|
|
2713 |
assert resp.json['err_desc'] == "Child not found"
|
|
2714 |
assert resp.json['err'] == 'not-found'
|
|
2715 |
|
|
2716 |
content = """<PORTAIL>
|
|
2717 |
<DUI>
|
|
2718 |
<IDDUI>XXX</IDDUI>
|
|
2719 |
<ENFANT>
|
|
2720 |
<IDPERSONNE>4242</IDPERSONNE>
|
|
2721 |
<ACTIVITE>
|
|
2722 |
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
|
|
2723 |
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
|
2724 |
<JOUR>00000</JOUR>
|
|
2725 |
</ACTIVITE>
|
|
2726 |
</ENFANT>
|
|
2727 |
</DUI>
|
|
2728 |
</PORTAIL>"""
|
|
2729 |
activities = child_activities_data['ENFANT'][0]
|
|
2730 |
with mock_getdata(content, 'ReservationPeriode'):
|
|
2731 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2732 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2733 |
assert resp.json['err_desc'] == "Child not found"
|
|
2734 |
assert resp.json['err'] == 'not-found'
|
|
2735 |
|
|
2736 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_booking_data') as activities_info:
|
|
2737 |
activities_info.return_value = {'ACTIVITE': []}
|
|
2738 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2739 |
assert resp.json['err'] == 0
|
|
2740 |
assert resp.json['data'] == []
|
|
2741 |
|
|
2742 |
|
|
2743 |
@freezegun.freeze_time('2019-09-01')
|
|
2744 |
def test_clae_booking_activity_annual_possible_days_endpoint(app, resource, child_activities_data):
|
|
2745 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2746 |
content = """<PORTAIL>
|
|
2747 |
<DUI>
|
|
2748 |
<IDDUI>XXX</IDDUI>
|
|
2749 |
<ENFANT>
|
|
2750 |
<IDPERSONNE>3535</IDPERSONNE>
|
|
2751 |
<ACTIVITE>
|
|
2752 |
<ANNEEREFERENCE>2019</ANNEEREFERENCE>
|
|
2753 |
<IDACTIVITE>A19P1M1</IDACTIVITE>
|
|
2754 |
<JOUR>10201</JOUR>
|
|
2755 |
</ACTIVITE>
|
|
2756 |
</ENFANT>
|
|
2757 |
</DUI>
|
|
2758 |
</PORTAIL>"""
|
|
2759 |
activities = child_activities_data['ENFANT'][0]
|
|
2760 |
with mock_getdata(content, 'ReservationPeriode'):
|
|
2761 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2762 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2763 |
assert resp.json['err'] == 0
|
|
2764 |
assert len(resp.json['data']) == 5
|
|
2765 |
assert set(resp.json['data'][0].keys()) == set(['id', 'text', 'disabled', 'prefill', 'details'])
|
|
2766 |
assert resp.json['data'][0]['id'] == '3535:MAT:A19P1M1:monday'
|
|
2767 |
assert resp.json['data'][1]['id'] == '3535:MAT:A19P1M1:tuesday'
|
|
2768 |
assert resp.json['data'][2]['id'] == '3535:MAT:A19P1M1:wednesday'
|
|
2769 |
assert resp.json['data'][3]['id'] == '3535:MAT:A19P1M1:thursday'
|
|
2770 |
assert resp.json['data'][4]['id'] == '3535:MAT:A19P1M1:friday'
|
|
2771 |
assert resp.json['data'][0]['text'] == 'Monday'
|
|
2772 |
assert resp.json['data'][1]['text'] == 'Tuesday'
|
|
2773 |
assert resp.json['data'][2]['text'] == 'Wednesday'
|
|
2774 |
assert resp.json['data'][3]['text'] == 'Thursday'
|
|
2775 |
assert resp.json['data'][4]['text'] == 'Friday'
|
|
2776 |
assert resp.json['data'][0]['disabled'] is False
|
|
2777 |
assert resp.json['data'][1]['disabled'] is False
|
|
2778 |
assert resp.json['data'][2]['disabled'] is True
|
|
2779 |
assert resp.json['data'][3]['disabled'] is False
|
|
2780 |
assert resp.json['data'][4]['disabled'] is False
|
|
2781 |
assert resp.json['data'][0]['prefill'] is True
|
|
2782 |
assert resp.json['data'][1]['prefill'] is False
|
|
2783 |
assert resp.json['data'][2]['prefill'] is None
|
|
2784 |
assert resp.json['data'][3]['prefill'] is False
|
|
2785 |
assert resp.json['data'][4]['prefill'] is True
|
|
2786 |
|
|
2787 |
# again - data are in cache
|
|
2788 |
resp = app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2789 |
assert resp.json['err'] == 0
|
|
2790 |
assert len(resp.json['data']) == 5
|
|
2791 |
|
|
2792 |
|
|
2793 |
def test_clae_booking_activity_annual_possible_days_reference_year(app, resource, child_activities_data):
|
|
2794 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
|
2795 |
activities = child_activities_data['ENFANT'][0]
|
|
2796 |
with freezegun.freeze_time('2019-09-01'):
|
|
2797 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2798 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2799 |
operation.return_value = OperationResult(json_response={'DATA': {'PORTAIL': {'DUI': {}}}}, xml_request='', xml_response='')
|
|
2800 |
app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2801 |
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
|
2802 |
assert payload['ENFANT']['ACTIVITE'][0]['ANNEEREFERENCE'] == '2019'
|
|
2803 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDEBUT'] == '2019-09-09'
|
|
2804 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDFIN'] == '2019-09-13'
|
|
2805 |
|
|
2806 |
with freezegun.freeze_time('2020-08-01'):
|
|
2807 |
with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities', return_value=activities):
|
|
2808 |
with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_periode') as operation:
|
|
2809 |
operation.return_value = OperationResult(json_response={'DATA': {'PORTAIL': {'DUI': {}}}}, xml_request='', xml_response='')
|
|
2810 |
app.get('/toulouse-axel/test/clae_booking_activity_annual_possible_days?NameID=yyy&idpersonne=3535&activity_type=MAT')
|
|
2811 |
payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
|
|
2812 |
assert payload['ENFANT']['ACTIVITE'][0]['ANNEEREFERENCE'] == '2020'
|
|
2813 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDEBUT'] == '2020-09-14'
|
|
2814 |
assert payload['ENFANT']['ACTIVITE'][0]['DATEDFIN'] == '2020-09-18'
|
|
2815 |
|
|
2816 |
|
2677 |
2817 |
@freezegun.freeze_time('2019-09-01')
|
2678 |
2818 |
def test_clae_booking_activity_prefill_endpoint_axel_error(app, resource):
|
2679 |
2819 |
Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
|
2680 |
|
-
|