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: ...@@ -106,4 +106,4 @@ def submit_capability_request(request: Request) -> Response:
return HTTPPreconditionFailed(detail=does_not_exist_msg) return HTTPPreconditionFailed(detail=does_not_exist_msg)
else: else:
execution = request.capability_service.run_capability(capability_request) 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 ...@@ -5,10 +5,11 @@ import pytest
from pyramid.config import Configurator from pyramid.config import Configurator
from pyramid.testing import DummyRequest, setUp, tearDown 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.helpers import Parameter
from workspaces.capability.schema import ( from workspaces.capability.schema import (
Capability, Capability,
CapabilityExecution,
CapabilityRequest, CapabilityRequest,
CapabilityVersion, CapabilityVersion,
) )
...@@ -58,6 +59,7 @@ class MockCapabilityInfo(MagicMock): ...@@ -58,6 +59,7 @@ class MockCapabilityInfo(MagicMock):
versions=[], versions=[],
) )
] ]
capability_executions = []
def edit_capability( def edit_capability(
self, name: str, steps: str = None, max_jobs: int = None, enabled: bool = None self, name: str, steps: str = None, max_jobs: int = None, enabled: bool = None
...@@ -94,6 +96,9 @@ class MockCapabilityInfo(MagicMock): ...@@ -94,6 +96,9 @@ class MockCapabilityInfo(MagicMock):
elif type(entity) is CapabilityRequest: elif type(entity) is CapabilityRequest:
entity.id = len(self.capability_requests) entity.id = len(self.capability_requests)
self.capability_requests.append(entity) self.capability_requests.append(entity)
elif type(entity) is CapabilityExecution:
entity.id = len(self.capability_executions)
self.capability_executions.append(entity)
class MockCapabilityService(MagicMock): class MockCapabilityService(MagicMock):
...@@ -127,6 +132,27 @@ class MockCapabilityService(MagicMock): ...@@ -127,6 +132,27 @@ class MockCapabilityService(MagicMock):
self.capability_info.save_entity(request) self.capability_info.save_entity(request)
return 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") @pytest.fixture(scope="module")
def request_null_capability() -> DummyRequest: def request_null_capability() -> DummyRequest:
......
...@@ -98,3 +98,40 @@ def test_create_capability_request_error( ...@@ -98,3 +98,40 @@ def test_create_capability_request_error(
response_does_not_exist = create_capability_request(request_null_capability) response_does_not_exist = create_capability_request(request_null_capability)
assert response_does_not_exist.status_code == 412 assert response_does_not_exist.status_code == 412
assert type(response_does_not_exist) is HTTPPreconditionFailed 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