From 252dfd5035189a8a6a1ff0c748f224291840e4e7 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 16 Nov 2020 12:01:06 +0100 Subject: [PATCH 3/4] rsa13: add action endpoint --- passerelle/contrib/rsa13/models.py | 53 ++++++++++++++++++++++++++++++ tests/test_rsa13.py | 40 +++++++++++++++++++--- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/passerelle/contrib/rsa13/models.py b/passerelle/contrib/rsa13/models.py index c17353a9..c33eb05b 100644 --- a/passerelle/contrib/rsa13/models.py +++ b/passerelle/contrib/rsa13/models.py @@ -790,3 +790,56 @@ class RSA13Resource(BaseResource, HTTPResource): email=email, ip=ip, ) + + @endpoint( + name='platform', + pattern=r'^(?P[0-9]{1,10})/' + r'beneficiaire/(?P[0-9]{1,10})/' + r'action/$', + example_pattern='{platform_id}/beneficiaire/{beneficiary_id}/action/', + description=_('Get beneficiary actions'), + perm='can_access', + parameters=parameters( + { + 'platform_id': { + 'description': _('Platform numeric identifier'), + 'example_value': '11', + }, + 'beneficiary_id': { + 'description': _('Beneficiary numeric identifier'), + 'example_value': '12', + }, + } + ), + display_category=_('Platform'), + display_order=9, + json_schema_response=response_schema( + { + 'type': 'object', + 'required': [ + 'id', + 'contrat_id', + ], + 'properties': { + 'id': {'type': 'integer'}, + 'contrat_id': {'type': 'integer'}, + 'libelle': {'type': 'string'}, + 'date_preconisation': DATE_SCHEMA, + 'date_deb': DATE_SCHEMA, + 'date_fin': DATE_SCHEMA, + 'validation': { + 'enum': ['En cours', 'Oui', 'Non'], + }, + 'clos': OUI_NON_ENUM, + }, + } + ), + ) + def platform_beneficiaire_action( + self, request, platform_id, beneficiary_id, email, ip=None + ): + return self.get( + 'platform/%s/beneficiaire/%s/action/' % (platform_id, beneficiary_id), + email=email, + ip=ip, + ) diff --git a/tests/test_rsa13.py b/tests/test_rsa13.py index 95f32bfe..9bf6e9c5 100644 --- a/tests/test_rsa13.py +++ b/tests/test_rsa13.py @@ -17,7 +17,7 @@ import functools import json -from urllib.parse import urlparse, parse_qs +from urllib.parse import parse_qs import httmock import pytest @@ -331,9 +331,7 @@ def test_platform_beneficiaire_detail(app, rsa13, url): BENEFICIAIRE_TRANSPORT = {'cumuls': [{'duree': 54, 'type': 'GTU'}]} -@mock_response( - ['/api/platform/11/beneficiaire/386981/transport/', {'err': 0, 'data': BENEFICIAIRE_TRANSPORT}] -) +@mock_response(['/api/platform/11/beneficiaire/386981/transport/', {'err': 0, 'data': BENEFICIAIRE_TRANSPORT}]) def test_platform_beneficiaire_transport(app, rsa13, url): response = app.get(url + 'platform/11/beneficiaire/386981/transport/') assert response.json == {'err': 0, 'data': BENEFICIAIRE_TRANSPORT} @@ -387,6 +385,7 @@ def test_platform_beneficiaire_contrat(app, rsa13, url): 'data': BENEFICIAIRE_CONTRAT, } + BENEFICIAIRE_CONTRAT_DETAIL = { 'commentaire': 'Gratuité RTM refusée. En tant que bénéficiaire de la ' 'CMUC vous pouvez obtenir un tarif préférentiel sur ' @@ -415,3 +414,36 @@ def test_platform_beneficiaire_contrat_detail(app, rsa13, url): 'err': 0, 'data': BENEFICIAIRE_CONTRAT_DETAIL, } + + +BENEFICIAIRE_ACTION = [ + { + 'clos': 'Oui', + 'contrat_id': 4, + 'date_deb': None, + 'date_fin': None, + 'date_preconisation': '2011-11-18', + 'id': 663774, + 'libelle': "Recherche autonome d'emploi", + 'validation': 'Non', + }, + { + 'clos': 'Oui', + 'contrat_id': 0, + 'date_deb': '2009-04-03', + 'date_fin': '2009-10-02', + 'date_preconisation': '2009-09-05', + 'id': 7435, + 'libelle': 'Ne plus utilisé-Reprise historique Logiform', + 'validation': 'Oui', + }, +] + + +@mock_response(['/api/platform/11/beneficiaire/386981/action/', {'err': 0, 'data': BENEFICIAIRE_ACTION}]) +def test_platform_beneficiaire_action(app, rsa13, url): + response = app.get(url + 'platform/11/beneficiaire/386981/action/') + assert response.json == { + 'err': 0, + 'data': BENEFICIAIRE_ACTION, + } -- 2.29.2