diff --git a/server/portal/apps/projects/unit_test.py b/server/portal/apps/projects/unit_test.py index 7ca73c541..8190b1785 100644 --- a/server/portal/apps/projects/unit_test.py +++ b/server/portal/apps/projects/unit_test.py @@ -35,20 +35,20 @@ def mock_service_account(mocker): @pytest.fixture() def mock_owner(django_user_model): - return "owner" + return "owner" # Mock creation of a project # Minimal mocks, only do behavior based testing instead of implementation based testing + @pytest.fixture() def mock_tapis_client(): - with patch( - "tapipy.tapis.Tapis" - ) as mock_client: - + with patch("tapipy.tapis.Tapis") as mock_client: + mock_listing = [] + class DictObj: def __init__(self, **entries): # Recursive conversion of nested dictionaries into object for attribute reference @@ -58,35 +58,41 @@ def __init__(self, **entries): self.__dict__[key] = DictObj(**value) else: self.__dict__[key] = value + # Mock createSystem with the side effect def create_system_side_effect(**system_args): system_created = "2024-10-18T00:00:00Z" - system_args['created'] = system_created + system_args["created"] = system_created system_obj = DictObj(**system_args) - title = getattr(system_obj.notes, "title", None) mock_listing.append(system_obj) + def get_system_side_effect(systemId): - # TODO: Change for multiple systems, tests only one system for now + # TODO: Change for multiple systems, tests only one system for now return mock_listing[0] - mock_client.systems.createSystem = MagicMock(side_effect=create_system_side_effect) + mock_client.systems.createSystem = MagicMock( + side_effect=create_system_side_effect + ) mock_client.systems.getShareInfo = MagicMock() mock_client.systems.getSystem = MagicMock(side_effect=get_system_side_effect) mock_client.files.getPermissions = MagicMock() # TODO: Enable this for the list systems test - #mock_client.systems.getSystems = MagicMock(return_value=mock_listing) + # mock_client.systems.getSystems = MagicMock(return_value=mock_listing) mock_client.systems.getSystems = MagicMock() - - yield mock_client + yield mock_client def test_project_init(mock_tapis_client, mock_owner): with patch( "portal.apps.projects.workspace_operations.shared_workspace_operations.create_workspace_system", - wraps=ws_o.create_workspace_system,),patch( - "portal.apps.projects.workspace_operations.shared_workspace_operations.get_project_user") as mock_get_project_user, patch( - "portal.apps.projects.workspace_operations.shared_workspace_operations.get_project",wraps=ws_o.get_project): + wraps=ws_o.create_workspace_system, + ), patch( + "portal.apps.projects.workspace_operations.shared_workspace_operations.get_project_user" + ) as mock_get_project_user, patch( + "portal.apps.projects.workspace_operations.shared_workspace_operations.get_project", + wraps=ws_o.get_project, + ): "Test project model init." # Assert Defs result_system_id = f"{settings.PORTAL_PROJECTS_SYSTEM_PREFIX}.PRJ-123" @@ -96,7 +102,7 @@ def test_project_init(mock_tapis_client, mock_owner): mock_get_project_user.return_value = {"username": "mock_user"} # Mock Tapis Client - client = mock_tapis_client + client = mock_tapis_client # Create the shared workspace project_id = ws_o.create_workspace_system( client, @@ -119,11 +125,12 @@ def test_project_init(mock_tapis_client, mock_owner): assert project["title"] == result_title assert project["description"] == result_description assert project["created"] == result_created - assert project["projectId"] == "PRJ-123" + assert project["projectId"] == "PRJ-123" assert len(project["members"]) == 1 assert project["members"][0]["user"]["username"] == "mock_user" assert project["members"][0]["access"] == "owner" + @pytest.mark.skip(reason="Needs to be updated with new Mocked Tapis Storage") def test_project_create(setup_mocks, mock_owner): with patch(