From 109037cf2c736ad82fc1caf9adfbe0362979231d Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 10 Jan 2023 12:32:10 +0100 Subject: [PATCH] toulouse-maelis: add endpoint for school pre-registration with sibling (#73136) --- .../contrib/toulouse_maelis/family_schemas.py | 44 +++++++++++++++++++ passerelle/contrib/toulouse_maelis/models.py | 15 +++++++ ...d_school_pre_registration_with_sibling.xml | 27 ++++++++++++ tests/test_toulouse_maelis.py | 27 +++++++++++- 4 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 tests/data/toulouse_maelis/R_create_child_school_pre_registration_with_sibling.xml diff --git a/passerelle/contrib/toulouse_maelis/family_schemas.py b/passerelle/contrib/toulouse_maelis/family_schemas.py index 14a32f02..b7e12197 100644 --- a/passerelle/contrib/toulouse_maelis/family_schemas.py +++ b/passerelle/contrib/toulouse_maelis/family_schemas.py @@ -893,3 +893,47 @@ SCHOOL_PRE_REGISTRATION_WITH_EXEMPTION_SCHEMA = { 'unflatten': True, 'additionalProperties': False, } + + +SCHOOL_PRE_REGISTRATION_WITH_SIBLING_SCHEMA = { + '$schema': 'http://json-schema.org/draft-04/schema#', + 'title': 'School pre-registration', + 'description': 'Crée une pré-inscription scolaire pour un enfant avec rapprochement de fratrie', + 'type': 'object', + 'required': [ + 'numPerson', + 'schoolYear', + 'datePresubscribe', + 'levelCode', + 'idSchoolRequested', + 'numPersonSibling', + ], + 'properties': { + 'numPerson': { + 'description': "Numéro de l'enfant", + 'type': 'string', + }, + 'schoolYear': { + 'description': "Année scolaire", + 'type': 'string', + }, + 'datePresubscribe': { + 'description': "Date d'inscription", + 'type': 'string', + }, + 'levelCode': { + 'description': "Le code du niveau scolaire", + 'type': 'string', + }, + 'idSchoolRequested': { + 'description': "Identifiant de l'établissement demandé", + 'type': 'string', + }, + 'numPersonSibling': { + 'description': "Identifiant du membre de la fratrie pour lequel le rapprochement est demandé", + 'type': 'string', + }, + }, + 'unflatten': True, + 'additionalProperties': False, +} diff --git a/passerelle/contrib/toulouse_maelis/models.py b/passerelle/contrib/toulouse_maelis/models.py index 9baf5c24..020270cc 100644 --- a/passerelle/contrib/toulouse_maelis/models.py +++ b/passerelle/contrib/toulouse_maelis/models.py @@ -2028,6 +2028,21 @@ class ToulouseMaelis(BaseResource, HTTPResource): response = self.call('Family', 'presubscribeSchoolDerog', **post_data) return {'data': serialize_object(response)} + @endpoint( + display_category='Inscriptions', + description="Création d'une pré-inscription scolaire avec rapprochement de fratrie", + name='create-child-school-pre-registration-with-sibling', + perm='can_access', + post={ + 'request_body': { + 'schema': {'application/json': family_schemas.SCHOOL_PRE_REGISTRATION_WITH_SIBLING_SCHEMA} + } + }, + ) + def create_child_school_pre_registration_with_sibling(self, request, post_data): + response = self.call('Family', 'presubscribeSchoolSibling', **post_data) + return {'data': serialize_object(response)} + class Link(models.Model): resource = models.ForeignKey(ToulouseMaelis, on_delete=models.CASCADE) diff --git a/tests/data/toulouse_maelis/R_create_child_school_pre_registration_with_sibling.xml b/tests/data/toulouse_maelis/R_create_child_school_pre_registration_with_sibling.xml new file mode 100644 index 00000000..19f4873a --- /dev/null +++ b/tests/data/toulouse_maelis/R_create_child_school_pre_registration_with_sibling.xml @@ -0,0 +1,27 @@ + + + + + S10053187965 + 2023 + 2435 + DUPONT PIERRE ELEMENTAIRE + + CM1 + Cours moyen 1 + + GRANDE-RUE SAINT MICHEL + FOURCADE MARIE-SYLVIE + 2023-09-01T00:00:00+02:00 + 2023-09-01T00:00:00+02:00 + true + MO_FRATERIE + GRU + true + 01PRIO-5 + E + SERGHEI3 LISA + + + + diff --git a/tests/test_toulouse_maelis.py b/tests/test_toulouse_maelis.py index 6a46f041..61ba4f6a 100644 --- a/tests/test_toulouse_maelis.py +++ b/tests/test_toulouse_maelis.py @@ -4376,10 +4376,35 @@ def test_create_child_school_pre_registration_with_exemption(family_service, con }, ) assert resp.json['err'] == 0 - print(resp.json['data']) assert resp.json['data']['idSchool'] == '2435' assert resp.json['data']['schoolName'] == 'DUPONT PIERRE ELEMENTAIRE' assert resp.json['data']['isWaitList'] assert resp.json['data']['isDerog'] assert resp.json['data']['derogReason'] == '11DERO-1' assert resp.json['data']['derogComment'] == 'exemption comment' + + +def test_create_child_school_pre_registration_with_sibling(family_service, con, app): + family_service.add_soap_response( + 'presubscribeSchoolSibling', get_xml_file('R_create_child_school_pre_registration_with_sibling.xml') + ) + url = get_endpoint('create-child-school-pre-registration-with-sibling') + resp = app.post_json( + url, + params={ + 'numPerson': '248565', + 'schoolYear': '2023', + 'levelCode': 'CM1', + 'datePresubscribe': '2023-09-01T00:00:00+02:00', + 'idSchoolRequested': '2435', + 'numPersonSibling': '248562', + }, + ) + assert resp.json['err'] == 0 + assert resp.json['data']['idSchool'] == '2435' + assert resp.json['data']['schoolName'] == 'DUPONT PIERRE ELEMENTAIRE' + assert resp.json['data']['isWaitList'] + assert resp.json['data']['isDerog'] + assert resp.json['data']['codeWait'] == 'MO_FRATERIE' + assert resp.json['data']['derogReason'] == '01PRIO-5' + assert resp.json['data']['derogComment'] == 'SERGHEI3 LISA' -- 2.39.2