diff --git a/app/models.py b/app/models.py index 7bc0d2c45..eaf73396c 100644 --- a/app/models.py +++ b/app/models.py @@ -754,7 +754,8 @@ class TemplateFolder(db.Model): 'id': self.id, 'name': self.name, 'parent_id': self.parent_id, - 'service_id': self.service_id + 'service_id': self.service_id, + 'users_with_permission': self.get_users_with_permission() } def is_parent_of(self, other): @@ -764,6 +765,12 @@ class TemplateFolder(db.Model): other = other.parent return False + def get_users_with_permission(self): + service_users = self.users + users_with_permission = [str(service_user.user_id) for service_user in service_users] + + return users_with_permission + template_folder_map = db.Table( 'template_folder_map', diff --git a/tests/app/template_folder/test_template_folder_rest.py b/tests/app/template_folder/test_template_folder_rest.py index ff861f0de..b304b6fc3 100644 --- a/tests/app/template_folder/test_template_folder_rest.py +++ b/tests/app/template_folder/test_template_folder_rest.py @@ -2,9 +2,10 @@ import uuid import pytest +from app.dao.service_user_dao import dao_get_service_user from app.models import TemplateFolder -from tests.app.db import create_service, create_template_folder, create_template +from tests.app.db import create_service, create_template_folder, create_template, create_user def test_get_folders_for_service(admin_request, notify_db_session): @@ -19,8 +20,8 @@ def test_get_folders_for_service(admin_request, notify_db_session): resp = admin_request.get('template_folder.get_template_folders_for_service', service_id=s1.id) assert set(resp.keys()) == {'template_folders'} assert sorted(resp['template_folders'], key=lambda x: x['id']) == sorted([ - {'id': str(tf1.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None}, - {'id': str(tf2.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None}, + {'id': str(tf1.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None, 'users_with_permission': []}, + {'id': str(tf2.id), 'name': 'foo', 'service_id': str(s1.id), 'parent_id': None, 'users_with_permission': []}, ], key=lambda x: x['id']) @@ -29,6 +30,28 @@ def test_get_folders_for_service_with_no_folders(sample_service, admin_request): assert resp == {'template_folders': []} +def test_get_folders_returns_users_with_permission(admin_request, sample_service): + user_1 = create_user(email='one@gov.uk') + user_2 = create_user(email='two@gov.uk') + user_3 = create_user(email='three@gov.uk') + template_folder = create_template_folder(sample_service) + + sample_service.users = [user_1, user_2, user_3] + + service_user_1 = dao_get_service_user(user_1.id, sample_service.id) + service_user_2 = dao_get_service_user(user_2.id, sample_service.id) + + service_user_1.folders = [template_folder] + service_user_2.folders = [template_folder] + + resp = admin_request.get('template_folder.get_template_folders_for_service', service_id=sample_service.id) + users_with_permission = resp['template_folders'][0]['users_with_permission'] + + assert len(users_with_permission) == 2 + assert str(user_1.id) in users_with_permission + assert str(user_2.id) in users_with_permission + + @pytest.mark.parametrize('has_parent', [True, False]) def test_create_template_folder(admin_request, sample_service, has_parent): existing_folder = create_template_folder(sample_service)