diff --git a/shared/workspaces/test/test_capability_service.py b/shared/workspaces/test/test_capability_service.py index 95d58648ee2cf75ed5271299685f8200d89a54bb..84e2e4696b09649315bbc1e4920193e7da7e9f7e 100644 --- a/shared/workspaces/test/test_capability_service.py +++ b/shared/workspaces/test/test_capability_service.py @@ -1,21 +1,22 @@ """ Unit tests for Capability Service """ - from unittest.mock import patch + # pylint: disable=C0301, E0401, R0201 import pytest -from workspaces.capability.schema import CapabilityExecution, CapabilityVersion +from workspaces.capability.schema import CapabilityExecution from workspaces.capability.services.capability_info import CapabilityInfo from workspaces.capability.services.capability_service import CapabilityService -from workspaces.workflow.schema import WorkflowRequest pytest_plugins = ["testing.utils.conftest"] @pytest.mark.usefixtures("mock_capability_service") class TestCapabilityService: + """Tests for CapabilityService methods""" + @pytest.mark.skip("Broken due to queue/messenger rework") def test_on_ingestion_complete( self, @@ -45,18 +46,19 @@ class TestCapabilityService: self, mock_capability_service: CapabilityService, mock_capability_info: CapabilityInfo, + mock_capability_execution: CapabilityExecution, ): """ - Are we catching the "carta-ready" message? + Are we catching the "carta-ready" message and saving the metadata + to the capability request version? :param mock_capability_service: stand-in for capability service :param mock_capability_info: stand-in for capability info + :param mock_capability_execution: stand-in for capability execution :return: """ wf_request_id = -1 - fake_request = WorkflowRequest(workflow_name="carta", workflow_request_id=wf_request_id) - fake_cr_version = CapabilityVersion(capability_request_id=wf_request_id) carta_url = "decartes_image_carta_url" fake_carta_ready_msg = { "service": "capability", @@ -64,21 +66,18 @@ class TestCapabilityService: "carta_url": carta_url, "subject": "Your CARTA Session is ready!", "type": "carta-ready", - "wf_request_id": wf_request_id, } save_entity_old_call_count = mock_capability_info.save_entity.call_count + + with patch( - "workspaces.capability.services.capability_info.CapabilityInfo.lookup_capability_request", - return_value=fake_request, + "workspaces.capability.services.capability_info.CapabilityInfo.lookup_execution_by_workflow_request_id", + return_value=mock_capability_execution, ): - with patch( - "workspaces.capability.services.capability_info.CapabilityInfo.lookup_capability_request_version", - return_value=fake_cr_version, - ) as mock_cr_version: - mock_capability_service.on_carta_ready(**fake_carta_ready_msg) - assert mock_capability_info.save_entity.call_count == save_entity_old_call_count + 1 - mock_cr_version.assert_called() - - (request,) = mock_capability_info.save_entity.call_args.args - assert request.carta_url == carta_url + mock_capability_service.on_carta_ready(wf_request_id, **fake_carta_ready_msg) + assert mock_capability_info.save_entity.call_count == save_entity_old_call_count + 1 + + (request_version,) = mock_capability_info.save_entity.call_args.args + assert request_version.version_number > 0 + assert request_version.workflow_metadata["carta_url"] == carta_url diff --git a/shared/workspaces/workspaces/capability/services/capability_info.py b/shared/workspaces/workspaces/capability/services/capability_info.py index 8d60da94146e35c0946afa8dca38a74c0dbcf69c..fb7fef6fc496a16d0ce41b019f50db0707458a7a 100644 --- a/shared/workspaces/workspaces/capability/services/capability_info.py +++ b/shared/workspaces/workspaces/capability/services/capability_info.py @@ -196,16 +196,6 @@ class CapabilityInfo(CapabilityInfoIF): """ return self.session.query(CapabilityRequest).filter_by(id=request_id).first() - def lookup_capability_request_version(self, request_id: int) -> CapabilityVersion: - """ - Finds the capability request version with the provided request ID - - :param request_id: capability request ID of interest - - :return: - """ - return self.session.query(CapabilityVersion).filter_by(capability_request_id=request_id).first() - def lookup_capability_execution(self, execution_id: int) -> CapabilityExecution: """ Finds the capability execution with the provided request ID diff --git a/shared/workspaces/workspaces/capability/services/capability_service.py b/shared/workspaces/workspaces/capability/services/capability_service.py index ad7b0dd1061a4b89c854d26a4eaf37a336f38d09..a0c05f22fd54ddabad101a37158b54f8150316bf 100644 --- a/shared/workspaces/workspaces/capability/services/capability_service.py +++ b/shared/workspaces/workspaces/capability/services/capability_service.py @@ -162,7 +162,7 @@ class CapabilityService(CapabilityServiceIF): self.capability_info.save_entity(request) @on_message(type="carta-ready") - def on_carta_ready(self, **message: Dict[str, str]): + def on_carta_ready(self, wf_request_id: int, **message: Dict[str, str]): """ Catch the RH-flavored event and save it to the capability request version metadata @@ -170,14 +170,13 @@ class CapabilityService(CapabilityServiceIF): :return: """ logger.info(f"RECEIVED CARTA READY MESSAGE: {message}") - wf_request_id = int(message["wf_request_id"]) - request = self.capability_info.lookup_capability_request(wf_request_id) - request_version = self.capability_info.lookup_capability_request_version(wf_request_id) - request.version_number = request_version - request.carta_url = message["carta_url"] + execution = self.capability_info.lookup_execution_by_workflow_request_id(wf_request_id) + request = execution.capability_request + request_version = request.current_version + request_version.workflow_metadata = {"carta_url": message["carta_url"]} - self.capability_info.save_entity(request) + self.capability_info.save_entity(request_version) class CapabilityLauncher: diff --git a/shared/workspaces/workspaces/capability/services/interfaces.py b/shared/workspaces/workspaces/capability/services/interfaces.py index 236693fa9cad03b93d84ae2063868018cdd10c57..9005f9b95762ac6c051d4242e1c89954c0430eb8 100644 --- a/shared/workspaces/workspaces/capability/services/interfaces.py +++ b/shared/workspaces/workspaces/capability/services/interfaces.py @@ -169,9 +169,6 @@ class CapabilityInfoIF(QueueReporterIF, metaclass=ABCMeta): def lookup_capability_request(self, request_id) -> CapabilityRequestIF: raise NotImplementedError - @abstractmethod - def lookup_capability_request_version(self, request_id) -> CapabilityRequestIF: - raise NotImplementedError @abstractmethod def lookup_execution(self, execution_id: int) -> CapabilityExecutionIF: