Test _template_folders functions via TemplateList

This is part of the overall migration of the "_template_folders"
methods to the TemplateList class. Moving the existing tests now
will make the actual migration easier to follow.

To emulate the second and third tests, we need to grab a specific
folder from the TemplateList and then look at its folders - these
are set based on "get_template_folders" as before.
This commit is contained in:
Ben Thorner
2022-05-30 15:29:03 +01:00
parent 057b4ee7a5
commit 487dc1b488
3 changed files with 149 additions and 134 deletions

View File

@@ -170,6 +170,7 @@ class TemplateListFolder(TemplateListItem):
super().__init__(folder, ancestors)
self.folder = folder
self.service_id = service_id
self.folders = folders
self.number_of_templates = len(templates)
self.number_of_folders = len(folders)

View File

@@ -1,144 +1,10 @@
import uuid
import pytest
from app.models.organisation import Organisation
from app.models.service import Service
from app.models.user import User
from tests import organisation_json, service_json
from tests.conftest import ORGANISATION_ID, create_folder, create_template
INV_PARENT_FOLDER_ID = '7e979e79-d970-43a5-ac69-b625a8d147b0'
INV_CHILD_1_FOLDER_ID = '92ee1ee0-e4ee-4dcc-b1a7-a5da9ebcfa2b'
VIS_PARENT_FOLDER_ID = 'bbbb222b-2b22-2b22-222b-b222b22b2222'
INV_CHILD_2_FOLDER_ID = 'fafe723f-1d39-4a10-865f-e551e03d8886'
def _get_all_folders(active_user_with_permissions):
return [
{
'name': "Invisible folder",
'id': str(uuid.uuid4()),
'parent_id': None,
'users_with_permission': []
},
{
'name': "Parent 1 - invisible",
'id': INV_PARENT_FOLDER_ID,
'parent_id': None,
'users_with_permission': []
},
{
'name': "1's Visible child",
'id': str(uuid.uuid4()),
'parent_id': INV_PARENT_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "1's Invisible child",
'id': INV_CHILD_1_FOLDER_ID,
'parent_id': INV_PARENT_FOLDER_ID,
'users_with_permission': []
},
{
'name': "1's Visible grandchild",
'id': str(uuid.uuid4()),
'parent_id': INV_CHILD_1_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "Parent 2 - visible",
'id': VIS_PARENT_FOLDER_ID,
'parent_id': None,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "2's Visible child",
'id': str(uuid.uuid4()),
'parent_id': VIS_PARENT_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "2's Invisible child",
'id': INV_CHILD_2_FOLDER_ID,
'parent_id': VIS_PARENT_FOLDER_ID,
'users_with_permission': []
},
{
'name': "2's Visible grandchild",
'id': str(uuid.uuid4()),
'parent_id': INV_CHILD_2_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
]
def test_get_user_template_folders_only_returns_folders_visible_to_user(
notify_admin,
mock_get_template_folders,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
user = User(active_user_with_permissions)
result_folder_names = tuple(
result['name'] for result in
service.get_user_template_folders(user)
)
assert result_folder_names == (
["Parent 1 - invisible", "1's Visible child"],
["Parent 1 - invisible", ["1's Invisible child", "1's Visible grandchild"]],
"2's Visible child",
["2's Invisible child", "2's Visible grandchild"],
"Parent 2 - visible",
)
def test_get_template_folders_shows_user_folders_when_user_id_passed_in(
notify_admin,
mock_get_template_folders,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
user = User(active_user_with_permissions)
result_folder_names = tuple(
result['name'] for result in
service.get_template_folders(parent_folder_id=VIS_PARENT_FOLDER_ID, user=user)
)
assert result_folder_names == (
"2's Visible child",
["2's Invisible child", "2's Visible grandchild"],
)
def test_get_template_folders_shows_all_folders_when_user_id_not_passed_in(
mock_get_template_folders,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
result_folder_names = tuple(
result['name'] for result in
service.get_template_folders(parent_folder_id=VIS_PARENT_FOLDER_ID)
)
assert result_folder_names == (
"2's Invisible child",
"2's Visible child",
)
def test_organisation_type_when_services_organisation_has_no_org_type(mocker, service_one):
service = Service(service_one)

View File

@@ -0,0 +1,148 @@
import uuid
from app.models.service import Service
from app.models.template_list import TemplateList
from app.models.user import User
INV_PARENT_FOLDER_ID = '7e979e79-d970-43a5-ac69-b625a8d147b0'
INV_CHILD_1_FOLDER_ID = '92ee1ee0-e4ee-4dcc-b1a7-a5da9ebcfa2b'
VIS_PARENT_FOLDER_ID = 'bbbb222b-2b22-2b22-222b-b222b22b2222'
INV_CHILD_2_FOLDER_ID = 'fafe723f-1d39-4a10-865f-e551e03d8886'
def _get_all_folders(active_user_with_permissions):
return [
{
'name': "Invisible folder",
'id': str(uuid.uuid4()),
'parent_id': None,
'users_with_permission': []
},
{
'name': "Parent 1 - invisible",
'id': INV_PARENT_FOLDER_ID,
'parent_id': None,
'users_with_permission': []
},
{
'name': "1's Visible child",
'id': str(uuid.uuid4()),
'parent_id': INV_PARENT_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "1's Invisible child",
'id': INV_CHILD_1_FOLDER_ID,
'parent_id': INV_PARENT_FOLDER_ID,
'users_with_permission': []
},
{
'name': "1's Visible grandchild",
'id': str(uuid.uuid4()),
'parent_id': INV_CHILD_1_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "Parent 2 - visible",
'id': VIS_PARENT_FOLDER_ID,
'parent_id': None,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "2's Visible child",
'id': str(uuid.uuid4()),
'parent_id': VIS_PARENT_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
{
'name': "2's Invisible child",
'id': INV_CHILD_2_FOLDER_ID,
'parent_id': VIS_PARENT_FOLDER_ID,
'users_with_permission': []
},
{
'name': "2's Visible grandchild",
'id': str(uuid.uuid4()),
'parent_id': INV_CHILD_2_FOLDER_ID,
'users_with_permission': [active_user_with_permissions['id']],
},
]
def test_template_list_yields_folders_visible_to_user(
notify_admin,
mock_get_template_folders,
mock_get_service_templates,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
user = User(active_user_with_permissions)
result_folder_names = tuple(
result.name for result in
TemplateList(service=service, user=user)
if result.is_folder
)
assert result_folder_names == (
["Parent 1 - invisible", "1's Visible child"],
["Parent 1 - invisible", ["1's Invisible child", "1's Visible grandchild"]],
"Parent 2 - visible",
"2's Visible child",
["2's Invisible child", "2's Visible grandchild"],
)
def test_template_list_folder_yields_user_folders_when_user_id_passed_in(
notify_admin,
mock_get_template_folders,
mock_get_service_templates,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
user = User(active_user_with_permissions)
second_parent = next(
result for result in TemplateList(service=service, user=user)
if result.id == VIS_PARENT_FOLDER_ID
)
result_folder_names = tuple(
result['name'] for result in second_parent.folders
)
assert result_folder_names == (
"2's Visible child",
["2's Invisible child", "2's Visible grandchild"],
)
def test_template_list_folder_yields_all_folders_when_user_id_not_passed_in(
mock_get_template_folders,
mock_get_service_templates,
service_one,
active_user_with_permissions,
mocker
):
mock_get_template_folders.return_value = _get_all_folders(active_user_with_permissions)
service = Service(service_one)
second_parent = next(
result for result in TemplateList(service=service)
if result.id == VIS_PARENT_FOLDER_ID
)
result_folder_names = tuple(
result['name'] for result in second_parent.folders
)
assert result_folder_names == (
"2's Invisible child",
"2's Visible child",
)