Skip to content
Snippets Groups Projects
Commit 07aaacdf authored by Janet Goldstein's avatar Janet Goldstein
Browse files

Merge branch 'WS-858-cap-req-followon-debug-2022-01-12' of...

Merge branch 'WS-858-cap-req-followon-debug-2022-01-12' of https://gitlab.nrao.edu/ssa/workspaces into WS-858-cap-req-followon-debug-2022-01-12
parents ec16313f 916caa12
No related branches found
No related tags found
1 merge request!718WS-858: fix bugs in `create_follow_on_capability_request`, hopefully for the last time
Pipeline #4019 failed
......@@ -19,18 +19,34 @@
""" Make sure we've got all the capability routes"""
# pylint: disable=E0401, W0621
import copy
import http
from typing import List
from unittest.mock import patch
import pytest
from capability.views.capability_request import create_follow_on_capability_request
from pyramid.config import Configurator
from pyramid.interfaces import IRoutesMapper
from pyramid.testing import DummyRequest
from workspaces.capability.schema import CapabilityRequest
from workspaces.capability.services.capability_service import CapabilityService
from workspaces.workflow.schema import WorkflowRequest
from workspaces.workflow.services.workflow_service import WorkflowService
pytest_plugins = ["testing.utils.conftest"]
RouteList = List[str]
@pytest.fixture()
def capability_routes() -> RouteList:
"""
All the capability routes (or should be)
:return: list of all available capability routes
"""
return [
"home",
"view_capability",
......@@ -83,3 +99,45 @@ def test_routes_exist(test_config: Configurator, capability_routes: RouteList):
assert route in route_names
assert len(capability_routes) == len(route_names)
def test_create_follow_on_capability_request(
request_null_capability: DummyRequest,
mock_capability_service: CapabilityService,
mock_workflow_service: WorkflowService,
mock_workflow_requests: List[WorkflowRequest],
mock_capability_requests: List[CapabilityRequest],
):
"""
Test for CapabilityRequest.create_follow_on_capability_request
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
:param mock_capability_service: stand-in for CapabilityService
:param mock_workflow_service: stand-in for WorkflowService
:param mock_workflow_requests: WorkflowRequest impostors
:param mock_capability_requests: CapabilityRequest impostors
:return:
"""
capability_request = copy.deepcopy(mock_capability_requests[0])
capability_request.capability_name = "std_cms_imaging"
request_null_capability.matchdict["request_id"] = capability_request.id
request_null_capability.workflow_service = mock_workflow_service
request_null_capability.matchdict["workflow_request_id"] = mock_workflow_requests[0].workflow_request_id
version = mock_capability_service.create_new_version(capability_request_id=capability_request.id)
version.parameters = {"user_email": "jgoldste@nrao.edu", "previous_workflow_request_id": 42}
request_null_capability.matchdict["version_number"] = version.version_number
request_null_capability.matchdict["followon_type"] = capability_request.capability_name
fake_file_content = '{"destinationDirectory": "/var/tmp", "fileSetIds": "[]"}'
with patch(
"workspaces.workflow.services.workflow_service.WorkflowService.retrieve_file_content",
return_value=fake_file_content,
) as mock_retrieve:
response = create_follow_on_capability_request(request=request_null_capability, version=version)
assert response.status_code == http.HTTPStatus.OK
mock_retrieve.assert_called_once()
......@@ -35,6 +35,8 @@ from .conftest import (
clear_test_database,
)
pytest_plugins = ["testing.utils.conftest"]
# Register CapabilityRequest JSON blueprint as a hypothesis type strategy
# To use:
# >>> @given(st.from_type(CapabilityRequest))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment