Projet

Général

Profil

0001-toulouse-axel-booking-for-next-year-44727.patch

Lauréline Guérin, 02 juillet 2020 14:58

Télécharger (5,21 ko)

Voir les différences:

Subject: [PATCH 1/2] toulouse-axel: booking for next year (#44727)

 passerelle/contrib/toulouse_axel/models.py |  6 +--
 tests/test_toulouse_axel.py                | 44 ++++++++++++++++++++++
 2 files changed, 47 insertions(+), 3 deletions(-)
passerelle/contrib/toulouse_axel/models.py
1275 1275

  
1276 1276
        # check dates
1277 1277
        today = datetime.date.today()
1278
        reference_year = utils.get_reference_year_from_date(today)
1279 1278
        start_date_min = today + datetime.timedelta(days=8)
1280
        end_date_max = datetime.date(reference_year+1, 7, 31)
1281 1279
        start_date = datetime.datetime.strptime(post_data['booking_start_date'], utils.json_date_format).date()
1280
        reference_year = utils.get_reference_year_from_date(start_date)
1281
        end_date_max = datetime.date(reference_year + 1, 7, 31)
1282 1282
        end_date = datetime.datetime.strptime(post_data['booking_end_date'], utils.json_date_format).date()
1283 1283
        if start_date > end_date:
1284 1284
            raise APIError('booking_start_date should be before booking_end_date', err_code='bad-request', http_status=400)
......
1288 1288
            raise APIError('booking_end_date max value: %s' % end_date_max, err_code='bad-request', http_status=400)
1289 1289

  
1290 1290
        # get known activities for this child, to have the ids
1291
        child_activities_info = self.get_child_activities(link.dui, reference_year, post_data['child_id'])
1291
        child_activities_info = self.get_child_activities(dui=link.dui, reference_year=reference_year, child_id=post_data['child_id'])
1292 1292
        child_known_activities_by_type = {a['TYPEACTIVITE']: a for a in child_activities_info.get('ACTIVITE', [])}
1293 1293

  
1294 1294
        # build activity list to post
tests/test_toulouse_axel.py
3398 3398
    assert resp.json['err_desc'] == "booking_end_date max value: 2020-07-31"
3399 3399
    assert resp.json['err'] == 'bad-request'
3400 3400

  
3401
    booking_params['booking_start_date'] = '2021-01-01'
3402
    booking_params['booking_end_date'] = '2021-12-31'
3403
    with freezegun.freeze_time('2019-09-01'):
3404
        resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params, status=400)
3405
    assert resp.json['err_desc'] == "booking_end_date max value: 2021-07-31"
3406
    assert resp.json['err'] == 'bad-request'
3407

  
3401 3408

  
3402 3409
def test_clae_booking_endpoint_no_result(app, resource, booking_params):
3403 3410
    resp = app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
......
3602 3609
        assert payload['ENFANT'][0]['REGIME'] == 'SV'
3603 3610

  
3604 3611

  
3612
@freezegun.freeze_time('2019-09-01')
3613
def test_clae_booking_endpoint_next_year(app, resource, child_activities_data):
3614
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
3615
    activities = child_activities_data['ENFANT'][0]
3616
    for activity in activities['ACTIVITE']:
3617
        activity['DATEDEBUT'] = '2020-08-01'
3618
        activity['DATEENTREE'] = '2020-08-01'
3619
        activity['DATEFIN'] = '2021-07-31'
3620
        activity['DATESORTIE'] = '2021-07-31'
3621
    booking_params = {
3622
        'booking_start_date': '2020-09-01',
3623
        'booking_end_date': '2020-09-04',
3624
        'booking_list_MAT': [],
3625
        'booking_list_MIDI': None,
3626
        'booking_list_SOIR': None,
3627
        'booking_list_GARD': None,
3628
        'child_id': '3535',
3629
        'regime': 'AV',
3630
    }
3631
    with mock.patch('passerelle.contrib.toulouse_axel.models.ToulouseAxel.get_child_activities') as mock_activities:
3632
        mock_activities.return_value = activities
3633
        with mock.patch('passerelle.contrib.toulouse_axel.schemas.reservation_annuelle') as operation:
3634
            operation.return_value = schemas.OperationResult(json_response={}, xml_request='', xml_response='')
3635
            app.post_json('/toulouse-axel/test/clae_booking?NameID=yyy', params=booking_params)
3636
    assert mock_activities.call_args_list == [
3637
        mock.call(child_id='3535', dui='XXX', reference_year=2020),
3638
    ]
3639
    payload = operation.call_args_list[0][0][1]['PORTAIL']['DUI']
3640
    assert len(payload['ENFANT']) == 1
3641
    assert payload['ENFANT'][0]['IDPERSONNE'] == '3535'
3642
    assert len(payload['ENFANT'][0]['ACTIVITE']) == 1
3643
    activity = payload['ENFANT'][0]['ACTIVITE'][0]
3644
    assert len(activity['PERIODE']) == 1
3645
    assert activity['PERIODE'][0]['DATEDEBUT'] == '2020-09-01'
3646
    assert activity['PERIODE'][0]['DATEDFIN'] == '2020-09-04'
3647

  
3648

  
3605 3649
@freezegun.freeze_time('2019-09-01')
3606 3650
def test_clae_booking_annual_endpoint_axel_error(app, resource, annual_booking_params):
3607 3651
    Link.objects.create(resource=resource, name_id='yyy', dui='XXX', person_id='42')
3608
-