From 37fcc2d65af1865c62355350c3b00497aa797930 Mon Sep 17 00:00:00 2001 From: Nicolas ROCHE Date: Wed, 21 Jun 2023 17:25:08 +0200 Subject: [PATCH] toulouse-maelis: [functests] adding tests on capacities (#77634) --- functests/toulouse_maelis/conftest.py | 29 +++++++++ functests/toulouse_maelis/test_06_loisirs.py | 62 +++++++++++++++++++ functests/toulouse_maelis/test_07_extrasco.py | 58 +++++++++++++++++ 3 files changed, 149 insertions(+) diff --git a/functests/toulouse_maelis/conftest.py b/functests/toulouse_maelis/conftest.py index ce7b43f3..33855dac 100644 --- a/functests/toulouse_maelis/conftest.py +++ b/functests/toulouse_maelis/conftest.py @@ -525,6 +525,7 @@ def create_data2(request, conn, reference_year): 'rl1_num': data['RL1']['num'], 'rl2_num': data['RL2']['num'], 'bart_num': data['childList'][0]['num'], + 'lisa_num': data['childList'][1]['num'], 'maggie_num': data['childList'][2]['num'], 'hugo_num': data['childList'][3]['num'], 'data': data, @@ -703,6 +704,20 @@ def get_loisirs_subscribe_info(con, data, year): ) +def get_loisirs_subscribe_info3(con, data, year): + return get_subscription_info( + 'LOISIRS', + # Sigec made this loisirs activity available for functests + 'Vitrail Fusing 1/2 Je Adultes', + 'Inscription annuelle', + 'Centre Culturel ALBAN MINVILLE', + con, + data['name_id'], + data['bart_num'], + year, + ) + + def get_extrasco_subscribe_info(con, data, year): return get_subscription_info( 'EXTRASCO', @@ -745,6 +760,13 @@ def loisirs_subscribe_info2(conn, create_data2, reference_year): return get_loisirs_subscribe_info(conn, create_data2, reference_year) +@pytest.fixture(scope='session') +def loisirs_subscribe_info3(conn, create_data2, reference_year): + unlink(conn, create_data2['name_id']) + link(conn, create_data2) + return get_loisirs_subscribe_info3(conn, create_data2, reference_year) + + @pytest.fixture(scope='session') def extrasco_subscribe_info(conn, create_data, reference_year): unlink(conn, create_data['name_id']) @@ -759,6 +781,13 @@ def extrasco_subscribe_info2(conn, create_data, reference_year): return get_extrasco_subscribe_info2(conn, create_data, reference_year) +@pytest.fixture(scope='session') +def extrasco_subscribe_info3(conn, create_data2, reference_year): + unlink(conn, create_data2['name_id']) + link(conn, create_data2) + return get_extrasco_subscribe_info2(conn, create_data2, reference_year) + + @pytest.fixture(scope='session') def perisco_subscribe_info(conn, create_data, reference_year): '''This fixture is a configuration trick from Sigec diff --git a/functests/toulouse_maelis/test_06_loisirs.py b/functests/toulouse_maelis/test_06_loisirs.py index 9f5e3e4a..f6f28ab2 100644 --- a/functests/toulouse_maelis/test_06_loisirs.py +++ b/functests/toulouse_maelis/test_06_loisirs.py @@ -33,6 +33,7 @@ def test_catalog_general_loisirs(conn, update_data): in labels ) assert 'Promenade forêt enchantée, TEST promenade forêt enchantée, TERRITOIRE OUEST' in labels + assert 'Vitrail Fusing 1/2 Je Adultes, Inscription annuelle, Centre Culturel ALBAN MINVILLE' in labels for item in resp.json()['data']: if ( @@ -197,3 +198,64 @@ def test_subscribe_to_basket(conn, create_data, loisirs_subscribe_info, referenc resp = requests.post(url, json=payload) resp.raise_for_status() assert resp.json()['err'] == 0 + + +@pytest.mark.xfail(run=False) +def test_global_capacity(conn, create_data2, loisirs_subscribe_info3, reference_year): + assert loisirs_subscribe_info3['info']['controlResult']['controlOK'] is True + unlink(conn, create_data2['name_id']) + link(conn, create_data2) + + # subscribe Bart + url = conn + '/add-person-subscription?NameID=%s' % create_data2['name_id'] + # url = conn + '/add-person-basket-subscription?NameID=%s' % create_data2['name_id'] + payload = { + 'person_id': create_data2['bart_num'], + 'activity_id': loisirs_subscribe_info3['activity']['id'], + 'unit_id': loisirs_subscribe_info3['unit']['id'], + 'place_id': loisirs_subscribe_info3['place']['id'], + 'start_date': loisirs_subscribe_info3['unit']['dateStart'][:10], + 'end_date': loisirs_subscribe_info3['unit']['dateEnd'][:10], + } + resp = requests.post(url, json=payload) + resp.raise_for_status() + assert resp.json()['err'] == 0 + # basket_id = resp.json()['data']['basket']['id'] + + # subscribe Lisa + payload['person_id'] = create_data2['lisa_num'] + resp = requests.post(url, json=payload) + resp.raise_for_status() + assert resp.json()['err'] == 0 + + # subscribe Maggie + payload['person_id'] = create_data2['maggie_num'] + resp = requests.post(url, json=payload) + resp.raise_for_status() + assert resp.json()['err'] == 0 + + # can't subscribe Huggo + payload['person_id'] = create_data2['hugo_num'] + resp = requests.post(url, json=payload) + resp.raise_for_status() + assert resp.json()['err'] == 1 + assert resp.json()['err_desc'] == '' + + # check capacity on main catalog + url = conn + '/read-activity-list' + params = {'ref_date': datetime.date.today().strftime('%Y-%m-%d')} + resp = requests.get(url, params=params) + resp.raise_for_status() + assert resp.json()['err'] == 0 + for item in resp.json()['data']: + if item['activity']['libelle'] == 'PUBLIK Vitrail Fusing 1/2 Je Adultes 2022/2023 - Mardi 14h-1': + import pdb + + pdb.set_trace() + + # # remove subscriptions + # url = conn + '/delete-basket?NameID=%s' % create_data['name_id'] + # payload = {'basket_id': basket_id} + # resp = requests.post(url, json=payload) + # resp.raise_for_status() + # assert resp.json()['err'] == 0 diff --git a/functests/toulouse_maelis/test_07_extrasco.py b/functests/toulouse_maelis/test_07_extrasco.py index f673890c..4667f0ac 100644 --- a/functests/toulouse_maelis/test_07_extrasco.py +++ b/functests/toulouse_maelis/test_07_extrasco.py @@ -262,3 +262,61 @@ def test_subscribe_with_agenda(conn, create_data, extrasco_subscribe_info): resp = requests.post(url, json=payload) resp.raise_for_status() assert resp.json()['err'] == 0 + + +@pytest.mark.xfail(run=False) +def test_daily_capacity(conn, create_data2, extrasco_subscribe_info3): + assert extrasco_subscribe_info3['info']['controlResult']['controlOK'] is True + + def subscribe(child): + url = conn + '/add-person-basket-subscription?NameID=%s' % create_data2['name_id'] + payload = { + 'person_id': create_data2['%s_num' % child], + 'activity_id': extrasco_subscribe_info3['activity']['id'], + 'unit_id': extrasco_subscribe_info3['unit']['id'], + 'place_id': extrasco_subscribe_info3['place']['id'], + 'start_date': extrasco_subscribe_info3['unit']['dateStart'][:10], + 'end_date': extrasco_subscribe_info3['unit']['dateEnd'][:10], + } + resp = requests.post(url, json=payload) + resp.raise_for_status() + assert resp.json()['err'] == 0 + return resp.json()['data']['basket']['id'] + + def book(child, slot): + url = conn + '/update-activity-agenda/?NameID=%s' % create_data2['name_id'] + payload = { + 'person_id': create_data2['%s_num' % child], + 'activity_id': extrasco_subscribe_info3['activity']['id'], + 'start_date': extrasco_subscribe_info3['unit']['dateStart'][:10], + 'end_date': extrasco_subscribe_info3['unit']['dateEnd'][:10], + 'booking_list': [slot], + } + resp = requests.post(url, json=payload) + resp.raise_for_status() + return resp + + # subscribe all family childs + basket_id = subscribe('bart') + for child in 'lisa', 'maggie', 'hugo': + assert subscribe(child) == basket_id + + # book all childs on the same day + assert len(extrasco_subscribe_info3['info']['agenda']) > 0 + assert not any(x['prefill'] for x in extrasco_subscribe_info3['info']['agenda']) + slots = [x['id'] for x in extrasco_subscribe_info3['info']['agenda'] if x['disabled'] is False] + for child in 'bart', 'lisa', 'maggie': + resp = book(child, slots[-1]) + assert resp.json()['err'] == 0 + assert resp.json()['updated'] is True + assert [x['booked'] for x in resp.json()['changes']] == [True] + resp = book('hugo', slots[-1]) + assert resp.json()['err'] == 1 + assert resp.json()['err_desc'] == 0 + + # # remove subscriptions + # url = conn + '/delete-basket?NameID=%s' % create_data['name_id'] + # payload = {'basket_id': basket_id} + # resp = requests.post(url, json=payload) + # resp.raise_for_status() + # assert resp.json()['err'] == 0