Skip to content
Snippets Groups Projects
Commit d35872e3 authored by Nathan Hertz's avatar Nathan Hertz
Browse files

Added tests for `submit_capability_request` view

parent 81cde426
No related branches found
No related tags found
1 merge request!96WS-31: Submit capability request view
Pipeline #618 passed
......@@ -106,4 +106,4 @@ def submit_capability_request(request: Request) -> Response:
return HTTPPreconditionFailed(detail=does_not_exist_msg)
else:
execution = request.capability_service.run_capability(capability_request)
return Response(body=execution.__json__())
return Response(json_body=execution.__json__())
......@@ -5,10 +5,11 @@ import pytest
from pyramid.config import Configurator
from pyramid.testing import DummyRequest, setUp, tearDown
from workspaces.capability.enums import CapabilityRequestState
from workspaces.capability.enums import CapabilityRequestState, ExecutionState
from workspaces.capability.helpers import Parameter
from workspaces.capability.schema import (
Capability,
CapabilityExecution,
CapabilityRequest,
CapabilityVersion,
)
......@@ -58,6 +59,7 @@ class MockCapabilityInfo(MagicMock):
versions=[],
)
]
capability_executions = []
def edit_capability(
self, name: str, steps: str = None, max_jobs: int = None, enabled: bool = None
......@@ -94,6 +96,9 @@ class MockCapabilityInfo(MagicMock):
elif type(entity) is CapabilityRequest:
entity.id = len(self.capability_requests)
self.capability_requests.append(entity)
elif type(entity) is CapabilityExecution:
entity.id = len(self.capability_executions)
self.capability_executions.append(entity)
class MockCapabilityService(MagicMock):
......@@ -127,6 +132,27 @@ class MockCapabilityService(MagicMock):
self.capability_info.save_entity(request)
return request
def run_capability(self, capability_request: CapabilityRequest) -> CapabilityExecution:
"""
Mock run_capability method
:param capability_request: Request to make an execution for
:return: Mocked execution
"""
execution = CapabilityExecution(
state=ExecutionState.Ready.name,
version=CapabilityVersion(
capability_request_id=capability_request.id,
version_number=1,
parameters=capability_request.parameters,
request=capability_request,
),
current_step=0,
steps="test",
)
self.capability_info.save_entity(execution)
return execution
@pytest.fixture(scope="module")
def request_null_capability() -> DummyRequest:
......
......@@ -98,3 +98,40 @@ def test_create_capability_request_error(
response_does_not_exist = create_capability_request(request_null_capability)
assert response_does_not_exist.status_code == 412
assert type(response_does_not_exist) is HTTPPreconditionFailed
def test_submit_capability_request(
test_config: Configurator, request_null_capability: DummyRequest
):
"""
Tests that the submit_capability_request view correctly executes its logic
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import submit_capability_request
request_null_capability.matchdict["capability_name"] = "null"
request_null_capability.matchdict["request_id"] = 0
response = submit_capability_request(request_null_capability)
assert response.status_code == 200
def test_submit_capability_request_error(
test_config: Configurator, request_null_capability: DummyRequest
):
"""
Tests that the submit_capability_request view correctly executes its logic
:param test_config: Dummy Pyramid Configurator object set up for testing
:param request_null_capability: Dummy Pyramid request object set up with mocked DB access
supporting the null capability
"""
from capability.views.capability_request import submit_capability_request
request_null_capability.matchdict["capability_name"] = "null"
request_null_capability.matchdict["request_id"] = -1
response = submit_capability_request(request_null_capability)
assert response.status_code == 412
assert type(response) is HTTPPreconditionFailed
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