Merge pull request #2750 from alphagov/get-single-contact-list

Endpoint to return a ServiceContactList for a given id.
This commit is contained in:
Rebecca Law
2020-03-16 09:22:24 +00:00
committed by GitHub
3 changed files with 55 additions and 1 deletions

View File

@@ -2,6 +2,15 @@ from app import db
from app.models import ServiceContactList
def dao_get_contact_list_by_id(service_id, contact_list_id):
contact_list = ServiceContactList.query.filter_by(
service_id=service_id,
id=contact_list_id
).one()
return contact_list
def dao_get_contact_lists(service_id):
contact_lists = ServiceContactList.query.filter_by(
service_id=service_id

View File

@@ -36,7 +36,8 @@ from app.dao.returned_letters_dao import (
fetch_returned_letter_summary,
fetch_returned_letters,
)
from app.dao.service_contact_list_dao import dao_get_contact_lists, save_service_contact_list
from app.dao.service_contact_list_dao import dao_get_contact_lists, save_service_contact_list, \
dao_get_contact_list_by_id
from app.dao.service_data_retention_dao import (
fetch_service_data_retention,
fetch_service_data_retention_by_id,
@@ -1023,6 +1024,16 @@ def get_contact_list(service_id):
return jsonify([x.serialize() for x in contact_lists])
@service_blueprint.route('/<uuid:service_id>/contact-list/<uuid:contact_list_id>', methods=['GET'])
def get_contact_list_by_id(service_id, contact_list_id):
contact_list = dao_get_contact_list_by_id(
service_id=service_id,
contact_list_id=contact_list_id
)
return jsonify(contact_list.serialize())
@service_blueprint.route('/<uuid:service_id>/contact-list', methods=['POST'])
def create_contact_list(service_id):
service_contact_list = validate(request.get_json(), create_service_contact_list_schema)

View File

@@ -79,3 +79,37 @@ def test_get_contact_list_returns_for_service(admin_request, notify_db_session):
assert len(response) == 2
assert response[0] == expected_list_2.serialize()
assert response[1] == expected_list_1.serialize()
def test_dao_get_contact_list_by_id(admin_request, sample_service):
service_1 = create_service(service_name='Service under test')
expected_list_1 = create_service_contact_list(service=service_1)
create_service_contact_list(service=service_1)
response = admin_request.get(
'service.get_contact_list_by_id',
service_id=service_1.id,
contact_list_id=expected_list_1.id
)
assert response == expected_list_1.serialize()
def test_dao_get_contact_list_by_id_does_not_return_if_contact_list_id_for_another_service(
admin_request, sample_service
):
service_1 = create_service(service_name='Service requesting list')
service_2 = create_service(service_name='Service that owns the list')
create_service_contact_list(service=service_1)
list_2 = create_service_contact_list(service=service_2)
response = admin_request.get(
'service.get_contact_list_by_id',
service_id=service_1.id,
contact_list_id=list_2.id,
_expected_status=404
)
assert response['message'] == "No result found"