From 35304307873216559d131ae45bbd974ba9b189cd Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 11 Jul 2022 16:16:19 +0200 Subject: [PATCH] atos_genesys; add dossier-by-pair endpoint (#67250) --- passerelle/apps/atos_genesys/models.py | 36 +++++ tests/test_atos_genesys.py | 193 +++++++++++++++++++++++++ 2 files changed, 229 insertions(+) diff --git a/passerelle/apps/atos_genesys/models.py b/passerelle/apps/atos_genesys/models.py index 25bcc1fc..186b5753 100644 --- a/passerelle/apps/atos_genesys/models.py +++ b/passerelle/apps/atos_genesys/models.py @@ -526,6 +526,42 @@ class Resource(BaseResource, HTTPResource): link, created = Link.objects.get_or_create(resource=self, name_id=NameID, id_per=id_per) return {'link_id': link.pk, 'new': created} + @endpoint( + name='dossier-by-pair', + description=_('Get dossier data with two integers'), + perm='can_access', + parameters={ + 'p1': { + 'description': _('First integer'), + 'example_value': '1234', + }, + 'p2': { + 'description': _('Second integer'), + 'example_value': '6789', + }, + }, + ) + def dossier_by_pair(self, request, p1, p2): + try: + p1 = int(p1) + p2 = int(p2) + if p1 < 0: + raise ValueError + if p2 < 0: + raise ValueError + if p1 <= p2: + raise ValueError + except ValueError: + raise APIError('p1 and p2 MUST be positive integers') + id_per = p1 // p2 + dossier = self.call_select_usager(id_per) + return { + 'data': { + 'id_per': id_per, + 'dossier': dossier, + } + } + class Link(models.Model): resource = models.ForeignKey(Resource, on_delete=models.CASCADE) diff --git a/tests/test_atos_genesys.py b/tests/test_atos_genesys.py index 5b7374be..d1587f73 100644 --- a/tests/test_atos_genesys.py +++ b/tests/test_atos_genesys.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import os +import random import mock import pytest @@ -489,3 +490,195 @@ def test_ws_link_by_id_per(app, genesys): assert response.json['already_paired'] is True assert response.json['link_id'] == link.id assert len(response.json['data']) == 3 + + +def test_ws_dossier_by_pair(app, genesys): + url = '/atos-genesys/test1/dossier-by-pair/' + with tests.utils.mock_url(FAKE_URL, RESPONSE_SELECT_USAGER) as mock: + id_per = 57879 + p2 = random.randint(100, 999) + p1 = id_per * p2 + response = app.get(url + f'?p1={p1}&p2={p2}') + assert response.json == { + 'data': { + 'dossier': { + 'DEMANDES': { + 'AD': [ + { + 'CATEGORIE': 'Décision', + 'CD_CODMES_MES': 'ADAPD ', + 'CODE_CATEGORIE': 'DEC_APA', + 'CODE_ETAPE': 'DEC_APA01', + 'COD_APPLI': 'AD', + 'DT_DMD': '08/12/2016', + 'DT_DMD_ORDER': '2016-12-08 ' '00:00:00.0', + 'DT_FIN': '31/12/2019', + 'DT_MINI_DMD': '01/01/2015', + 'ETAPE': 'Décision', + 'GROUPE': 'BANDEAU', + 'ID_MES': '1234', + 'LISTE_ETAPES': [ + { + 'A_SURLIGNER': 'N', + 'CATEGORIE': 'Instruction ' 'administrative ' 'de ' 'la ' 'demande', + 'CODE_CATEGORIE': 'INDMD', + 'GROUPE': 'BANDEAU', + 'ID_EGST_MES': '1234', + 'LIBELLE_MES': 'A.P.A. ' 'à ' 'Domicile ' '- ' 'Révision', + 'NUM_CAT': '1', + 'REF_EXT_MES': '1234', + }, + { + 'A_SURLIGNER': 'N', + 'CATEGORIE': 'Évaluation ' 'médico-sociale ' 'de ' 'la ' 'demande', + 'CODE_CATEGORIE': 'EVMSD', + 'GROUPE': 'BANDEAU', + 'ID_EGST_MES': '1234', + 'LIBELLE_MES': 'A.P.A. ' 'à ' 'Domicile ' '- ' 'Révision', + 'NUM_CAT': '2', + 'REF_EXT_MES': '1234', + }, + { + 'A_SURLIGNER': 'O', + 'CATEGORIE': 'Décision', + 'CATEGORIE_ETP': 'Décision', + 'CD_ETP': 'DEC_APA01', + 'CODE_CATEGORIE': 'DEC_APA', + 'ETP': [ + { + 'CODE_CHAMP': 'LABEL1', + 'ETAPE': 'Décision', + 'LIBELLE_CHAMP': 'Votre ' + 'demande ' + 'a ' + 'fait ' + "l'objet " + "d'une " + 'décision ' + 'qui ' + 'vous ' + 'sera ' + 'adressée, ' + 'prochainement, ' + 'par ' + 'voie ' + 'postale.', + 'NUM_CHAMP': '1', + 'TYP_CHAMP': 'L', + } + ], + 'GROUPE': 'BANDEAU', + 'ID_EGST_MES': '1234', + 'LB_ETP': 'Décision', + 'LIBELLE_MES': 'A.P.A. ' 'à ' 'Domicile ' '- ' 'Révision', + 'NUM_CAT': '3', + 'REF_EXT_MES': '1234', + }, + ], + 'REF_EXT_MES': '1234', + 'TYPE_MESURE': 'A.P.A. à Domicile - ' 'Révision', + } + ] + }, + 'DEMARCHES': [{'COD_FORM': 'F_RNV_APA'}], + 'DROITS': { + 'PH': [ + { + 'COD_APPLI': 'PH', + 'DATE_DEBUT': '01/01/2017', + 'DATE_FIN': '31/12/2019', + 'ID_PRE': '1234', + 'LIBELLE': 'Un service prestataire ', + 'PRESTATAIRE': 'CLUB AZUR SERVICES ', + 'TYPPREST': 'Aide à domicile PA-PH', + } + ] + }, + 'IDENTIFICATION': [ + { + 'CAISSE_RETRAITE': 'CRAM CAGNES SUR ' 'MER', + 'CD_CMU_NAIS': '12345', + 'CD_COD_VOIE_ADR': 'BLD', + 'CD_PAY_ADR': '100 ', + 'CD_SIT_FAM': 'SITFAM_C', + 'CIVILITE': 'Madame', + 'CMU_NAIS': 'NICE', + 'CODE_POSTAL': '06000', + 'CODPOS_NAIS': '12345', + 'COMPLEMENT_ADRESSE': 'RESIDENCE ' 'BLABLA', + 'CONJOINT': [ + { + 'CAISSE_RETRAITE': 'CRAM ' 'CAGNES ' 'SUR ' 'MER', + 'CD_COD_VOIE_ADR': 'BLD', + 'CODE_POSTAL': '06000', + 'COMPLEMENT_ADRESSE': 'RESIDENCE ' 'ALSACE ', + 'DATE_NAISSANCE': '01/01/1960', + 'LB_COD_BTQ_ADR': 'Bis', + 'LB_COD_VOIE_ADR': 'Boulevard', + 'LB_VOIE_ADR': 'du ' 'Revestel', + 'MAIL': 'test@sirus.fr', + 'NATIONALITE': 'FRANCE', + 'NOM': 'NOM conjoint', + 'NOM_NAISSANCE': 'NOM ', + 'NSS': '253077507300584', + 'NUM_AFFILIATION': '123456789', + 'NU_VOIE_ADR': '65', + 'PRENOM': 'Prénom', + 'TEL_FIXE': '06.61.75.69.51', + 'TEL_MOBILE': '06.61.75.69.51', + 'VILLE': 'NICE', + } + ], + 'CONTACTS': [ + { + 'CD_COD_VOIE_ADR': 'BLD', + 'CODE_POSTAL': '06000', + 'COMPLEMENT_ADRESSE': 'RESIDENCE ' 'BLABLA', + 'LB_COD_BTQ_ADR': 'Bis', + 'LB_COD_VOIE_ADR': 'Boulevard', + 'LB_VOIE_ADR': 'GAMBETTA', + 'MAIL': 'test@sirus.fr', + 'NOM': 'NOM ', + 'NU_VOIE_ADR': '65', + 'PRENOM': 'Prénom', + 'RELATION': 'TYP_CNT_AID', + 'TEL_FIXE': '06.22.22.22.22', + 'TEL_MOBILE': '06.11.11.11.11', + 'VILLE': 'NICE', + } + ], + 'DATE_NAISSANCE': '01/01/1923', + 'DPT_NAIS': 'ALPES-MARITMES', + 'IDDOS': '12345', + 'ID_PER': '1234', + 'LB_COD_BTQ_ADR': 'Bis', + 'LB_COD_VOIE_ADR': 'Boulevard', + 'LB_PAY_ADR': 'FRANCE', + 'LB_VOIE_ADR': 'du Revestel', + 'MAIL': 'test@sirus.fr', + 'NATIONALITE': 'Française (Valeurs ' + 'Possibles\xa0: ' + 'Française, ' + 'Européenne,Autre)', + 'NOM': 'DOE', + 'NOM_NAISSANCE': 'TEST', + 'NSS': '253077507312383', + 'NUM_AFFILIATION': '123456789', + 'NU_VOIE_ADR': '65', + 'PAYS_NAIS': 'FRANCE', + 'PRENOM': 'John', + 'REF_PH_DOS': '123456', + 'REF_UTI_DOS': '123456', + 'SEXE': 'F', + 'SIT_FAM': 'Célibat', + 'TEL_FIXE': '06.44.44.44.44', + 'TEL_MOBILE': '06.55.55.55.55', + 'VILLE': 'NICE', + } + ], + }, + 'id_per': 57879, + }, + 'err': 0, + } + assert f'idPer={id_per}&' in mock.handlers[0].call['requests'][0].url