toulouse_maelis: add a basket id parameter to basket endpoints (#75535)
gitea/passerelle/pipeline/head This commit looks good
Details
gitea/passerelle/pipeline/head This commit looks good
Details
This commit is contained in:
parent
2b5eb786dc
commit
57b9c49afb
|
@ -145,15 +145,33 @@ SUBSCRIPTION_SCHEMA = {
|
|||
'unflatten': True,
|
||||
}
|
||||
|
||||
DELETE_BASKET_LINE_SCHEMA = {
|
||||
BASKET_SCHEMA = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'line_id': {
|
||||
'basket_id': {
|
||||
'type': 'string',
|
||||
'pattern': '[A-Za-z0-9]+',
|
||||
'pattern': '^[A-Za-z0-9]+$',
|
||||
},
|
||||
},
|
||||
'required': [
|
||||
'basket_id',
|
||||
],
|
||||
}
|
||||
|
||||
BASKET_LINE_SCHEMA = {
|
||||
'type': 'object',
|
||||
'properties': {
|
||||
'basket_id': {
|
||||
'type': 'string',
|
||||
'pattern': '^[A-Za-z0-9]+$',
|
||||
},
|
||||
'line_id': {
|
||||
'type': 'string',
|
||||
'pattern': '^[A-Za-z0-9]+$',
|
||||
},
|
||||
},
|
||||
'required': [
|
||||
'basket_id',
|
||||
'line_id',
|
||||
],
|
||||
}
|
||||
|
|
|
@ -582,6 +582,12 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
or []
|
||||
)
|
||||
|
||||
def get_basket_raw(self, family_id, basket_id):
|
||||
for basket in self.get_baskets_raw(family_id):
|
||||
if basket['id'] == basket_id:
|
||||
return basket
|
||||
raise APIError("no '%s' basket on family" % basket_id)
|
||||
|
||||
@endpoint(
|
||||
display_category='Famille',
|
||||
description='Lister les catégories',
|
||||
|
@ -3117,15 +3123,13 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
methods=['post'],
|
||||
post={'request_body': {'schema': {'application/json': activity_schemas.BASKET_SCHEMA}}},
|
||||
)
|
||||
def update_basket_time(self, request, NameID=None, family_id=None):
|
||||
def update_basket_time(self, request, post_data, NameID=None, family_id=None):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
basket = self.get_basket_raw(family_id)
|
||||
if not basket or not basket.get('id'):
|
||||
raise APIError("no basket on '%s' family" % family_id)
|
||||
self.get_basket_raw(family_id, post_data['basket_id'])
|
||||
|
||||
self.call('Activity', 'updateBasketTime', idBasket=basket['id'])
|
||||
self.call('Activity', 'updateBasketTime', idBasket=post_data['basket_id'])
|
||||
return {'data': 'ok'}
|
||||
|
||||
@endpoint(
|
||||
|
@ -3137,25 +3141,22 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
post={'request_body': {'schema': {'application/json': activity_schemas.DELETE_BASKET_LINE_SCHEMA}}},
|
||||
post={'request_body': {'schema': {'application/json': activity_schemas.BASKET_LINE_SCHEMA}}},
|
||||
)
|
||||
def delete_basket_line(self, request, post_data, NameID=None, family_id=None):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
basket = self.get_basket_raw(family_id)
|
||||
line_id = post_data['line_id']
|
||||
if not basket or not basket.get('id'):
|
||||
raise APIError("no basket on '%s' family" % family_id)
|
||||
basket = self.get_basket_raw(family_id, post_data['basket_id'])
|
||||
for line in basket['lignes']:
|
||||
if line['id'] == line_id:
|
||||
if line['id'] == post_data['line_id']:
|
||||
break
|
||||
else:
|
||||
raise APIError("no '%s' basket line on '%s' family" % (line_id, family_id))
|
||||
raise APIError("no '%s' basket line on basket" % post_data['line_id'])
|
||||
|
||||
response = self.call(
|
||||
'Activity',
|
||||
'deletePersonUnitBasket',
|
||||
deletePersonUnitBasketRequestBean={
|
||||
'idBasketLine': line_id,
|
||||
'idBasketLine': post_data['line_id'],
|
||||
},
|
||||
)
|
||||
return {'data': response}
|
||||
|
@ -3169,19 +3170,17 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
methods=['post'],
|
||||
post={'request_body': {'schema': {'application/json': activity_schemas.BASKET_SCHEMA}}},
|
||||
)
|
||||
def delete_basket(self, request, NameID=None, family_id=None):
|
||||
def delete_basket(self, request, post_data, NameID=None, family_id=None):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
basket = self.get_basket_raw(family_id)
|
||||
if not basket or not basket.get('id'):
|
||||
raise APIError("no basket on '%s' family" % family_id)
|
||||
self.get_basket_raw(family_id, post_data['basket_id'])
|
||||
|
||||
self.call(
|
||||
'Activity',
|
||||
'deleteBasket',
|
||||
deleteBasketRequestBean={
|
||||
'idBasket': basket['id'],
|
||||
'idBasket': post_data['basket_id'],
|
||||
'idUtilisat': NameID or 'Middle-office',
|
||||
},
|
||||
)
|
||||
|
@ -3196,19 +3195,17 @@ class ToulouseMaelis(BaseResource, HTTPResource):
|
|||
'NameID': {'description': 'Publik NameID'},
|
||||
'family_id': {'description': 'Numéro de DUI'},
|
||||
},
|
||||
methods=['post'],
|
||||
post={'request_body': {'schema': {'application/json': activity_schemas.BASKET_SCHEMA}}},
|
||||
)
|
||||
def validate_basket(self, request, NameID=None, family_id=None):
|
||||
def validate_basket(self, request, post_data, NameID=None, family_id=None):
|
||||
family_id = family_id or self.get_link(NameID).family_id
|
||||
basket = self.get_basket_raw(family_id)
|
||||
if not basket or not basket.get('id'):
|
||||
raise APIError("no basket on '%s' family" % family_id)
|
||||
self.get_basket_raw(family_id, post_data['basket_id'])
|
||||
|
||||
response = self.call(
|
||||
'Activity',
|
||||
'validateBasket',
|
||||
validateBasketRequestBean={
|
||||
'idBasket': basket['id'],
|
||||
'idBasket': post_data['basket_id'],
|
||||
},
|
||||
)
|
||||
return {'data': response}
|
||||
|
|
|
@ -7400,45 +7400,54 @@ def test_get_baskets_no_basket(activity_service, con, app):
|
|||
assert resp.json['data'] == []
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_update_basket_time(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
activity_service.add_soap_response('updateBasketTime', get_xml_file('R_update_basket_time.xml'))
|
||||
url = get_endpoint('update-basket-time')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='311352', name_id='local')
|
||||
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['data'] == 'ok'
|
||||
|
||||
|
||||
def test_update_basket_time_not_linked_error(con, app):
|
||||
url = get_endpoint('update-basket-time')
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_update_basket_time_basket_not_found(activity_service, con, app):
|
||||
def test_update_basket_time_no_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket_empty.xml'))
|
||||
url = get_endpoint('update-basket-time')
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no basket on '311352' family"
|
||||
assert resp.json['err_desc'] == "no 'S10053200723' basket on family"
|
||||
|
||||
|
||||
def test_update_basket_time_basket_not_found(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
url = get_endpoint('update-basket-time')
|
||||
params = {'basket_id': 'plop'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no 'plop' basket on family"
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_delete_basket_line(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
activity_service.add_soap_response(
|
||||
'deletePersonUnitBasket', get_xml_file('R_delete_person_unit_basket.xml')
|
||||
)
|
||||
url = get_endpoint('delete-basket-line')
|
||||
params = {'line_id': 'S10053203120'}
|
||||
params = {'basket_id': 'S10053200723', 'line_id': 'S10053203120'}
|
||||
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
|
@ -7446,39 +7455,45 @@ def test_delete_basket_line(activity_service, con, app):
|
|||
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert len(resp.json['data']['lignes']) == 2
|
||||
assert len(resp.json['data']['lignes']) == 2 # return the basket
|
||||
assert 'S10053203120' not in [x['id'] for x in resp.json['data']['lignes']]
|
||||
|
||||
|
||||
def test_delete_basket_line_not_linked_error(con, app):
|
||||
url = get_endpoint('delete-basket-line')
|
||||
params = {'line_id': 'S10053203120'}
|
||||
params = {'basket_id': 'S10053200723', 'line_id': 'S10053203120'}
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_delete_basket_line_basket_not_found(activity_service, con, app):
|
||||
def test_delete_basket_line_no_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket_empty.xml'))
|
||||
url = get_endpoint('delete-basket-line')
|
||||
params = {'line_id': 'S10053203120'}
|
||||
params = {'basket_id': 'S10053200723', 'line_id': 'S10053203120'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no basket on '311352' family"
|
||||
assert resp.json['err_desc'] == "no 'S10053200723' basket on family"
|
||||
|
||||
|
||||
def test_delete_basket_line_basket_not_found(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
url = get_endpoint('delete-basket-line')
|
||||
params = {'basket_id': 'plop', 'line_id': 'S10053203120'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no 'plop' basket on family"
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_delete_basket_line_line_not_found(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
url = get_endpoint('delete-basket-line')
|
||||
params = {'line_id': 'plop'}
|
||||
params = {'basket_id': 'S10053200723', 'line_id': 'plop'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no 'plop' basket line on '311352' family"
|
||||
assert resp.json['err_desc'] == "no 'plop' basket line on basket"
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_delete_basket(activity_service, con, app):
|
||||
def request_check(request):
|
||||
assert request.idUtilisat in ('local', 'Middle-office')
|
||||
|
@ -7490,66 +7505,86 @@ def test_delete_basket(activity_service, con, app):
|
|||
request_check=request_check,
|
||||
)
|
||||
url = get_endpoint('delete-basket')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='311352', name_id='local')
|
||||
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['data'] == 'ok'
|
||||
|
||||
|
||||
def test_delete_basket_not_linked_error(con, app):
|
||||
url = get_endpoint('delete-basket')
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_delete_basket_not_found(activity_service, con, app):
|
||||
def test_delete_basket_no_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket_empty.xml'))
|
||||
url = get_endpoint('delete-basket')
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no basket on '311352' family"
|
||||
assert resp.json['err_desc'] == "no 'S10053200723' basket on family"
|
||||
|
||||
|
||||
def test_delete_basket_not_found(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
url = get_endpoint('delete-basket')
|
||||
params = {'basket_id': 'plop'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no 'plop' basket on family"
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_validate_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
activity_service.add_soap_response('validateBasket', get_xml_file('R_validate_basket.xml'))
|
||||
url = get_endpoint('validate-basket')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
Link.objects.create(resource=con, family_id='311352', name_id='local')
|
||||
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['data'] == {
|
||||
'idFam': 'S10053183425',
|
||||
'idFactureLst': [],
|
||||
'factureLst': [],
|
||||
'idInsLst': ['S10053203103', 'S10053200721'],
|
||||
'paramUrlReglement': [],
|
||||
}
|
||||
|
||||
|
||||
def test_validate_basket_not_linked_error(con, app):
|
||||
url = get_endpoint('validate-basket')
|
||||
resp = app.post_json(url + '?NameID=local')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?NameID=local', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == 'User not linked to family'
|
||||
|
||||
|
||||
@pytest.mark.xfail(run=False)
|
||||
def test_validate_basket_not_found(activity_service, con, app):
|
||||
def test_validate_basket_no_basket(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket_empty.xml'))
|
||||
url = get_endpoint('validate-basket')
|
||||
resp = app.post_json(url + '?family_id=311352')
|
||||
params = {'basket_id': 'S10053200723'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no basket on '311352' family"
|
||||
assert resp.json['err_desc'] == "no 'S10053200723' basket on family"
|
||||
|
||||
|
||||
def test_validate_basket_not_found(activity_service, con, app):
|
||||
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
|
||||
url = get_endpoint('validate-basket')
|
||||
params = {'basket_id': 'plop'}
|
||||
resp = app.post_json(url + '?family_id=311352', params=params)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['err_desc'] == "no 'plop' basket on family"
|
||||
|
||||
|
||||
def test_read_nursery_list(con, app):
|
||||
|
|
Loading…
Reference in New Issue