diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/models/script_attributes_context.py b/spiffworkflow-backend/src/spiffworkflow_backend/models/script_attributes_context.py index 5a06ab19..9405c8b3 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/models/script_attributes_context.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/models/script_attributes_context.py @@ -1,5 +1,6 @@ """Script_attributes_context.""" from dataclasses import dataclass +from typing import Optional from SpiffWorkflow.task import Task as SpiffTask # type: ignore @@ -8,7 +9,7 @@ from SpiffWorkflow.task import Task as SpiffTask # type: ignore class ScriptAttributesContext: """ScriptAttributesContext.""" - task: SpiffTask + task: Optional[SpiffTask] environment_identifier: str process_instance_id: int process_model_identifier: str diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/scripts/get_data_sizes.py b/spiffworkflow-backend/src/spiffworkflow_backend/scripts/get_data_sizes.py index ea474674..5f28e2d6 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/scripts/get_data_sizes.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/scripts/get_data_sizes.py @@ -10,6 +10,10 @@ from spiffworkflow_backend.services.process_instance_processor import ( ) +class TaskNotGivenToScriptError(Exception): + pass + + class GetDataSizes(Script): """GetDataSizes.""" @@ -30,6 +34,11 @@ class GetDataSizes(Script): **kwargs: Any ) -> Any: """Run.""" + if script_attributes_context.task is None: + raise TaskNotGivenToScriptError( + "The task was not given to script 'get_data_sizes'. " + "This script needs to be run from within the context of a task." + ) workflow = script_attributes_context.task.workflow task_data_size = ProcessInstanceProcessor.get_task_data_size(workflow) task_data_keys_by_task = { diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py index d5b2ed69..20df2b7e 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_processor.py @@ -316,7 +316,7 @@ class CustomBpmnScriptEngine(PythonScriptEngine): # type: ignore super().__init__(environment=environment) - def __get_augment_methods(self, task: SpiffTask) -> Dict[str, Callable]: + def __get_augment_methods(self, task: Optional[SpiffTask]) -> Dict[str, Callable]: """__get_augment_methods.""" tld = current_app.config["THREAD_LOCAL_DATA"] @@ -356,9 +356,7 @@ class CustomBpmnScriptEngine(PythonScriptEngine): # type: ignore external_methods: Optional[Dict[str, Any]] = None, ) -> Any: """_evaluate.""" - methods = {} - if task: - methods = self.__get_augment_methods(task) + methods = self.__get_augment_methods(task) if external_methods: methods.update(external_methods) diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/scripts/test_get_env.py b/spiffworkflow-backend/tests/spiffworkflow_backend/scripts/test_get_env.py new file mode 100644 index 00000000..f97c3a7a --- /dev/null +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/scripts/test_get_env.py @@ -0,0 +1,28 @@ +"""Test_environment_var_script.""" +from flask import Flask +from tests.spiffworkflow_backend.helpers.base_test import BaseTest + +from spiffworkflow_backend.models.script_attributes_context import ( + ScriptAttributesContext, +) +from spiffworkflow_backend.scripts.get_env import GetEnv + + +class TestGetEnv(BaseTest): + def test_get_env_script( + self, + app: Flask, + with_db_and_bpmn_file_cleanup: None, + ) -> None: + process_model_identifier = "test_process_model" + process_instance_id = 1 + script_attributes_context = ScriptAttributesContext( + task=None, + environment_identifier="unit_testing", + process_instance_id=process_instance_id, + process_model_identifier=process_model_identifier, + ) + result = GetEnv().run( + script_attributes_context, + ) + assert result == "unit_testing" diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_environment_var_script.py b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_environment_var_script.py deleted file mode 100644 index 1d2afd01..00000000 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_environment_var_script.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Test_environment_var_script.""" -from flask import Flask -from tests.spiffworkflow_backend.helpers.base_test import BaseTest - -from spiffworkflow_backend.services.process_instance_processor import ( - ProcessInstanceProcessor, -) - - -class TestEnvironmentVarScript(BaseTest): - """TestEnvironmentVarScript.""" - - # it's not totally obvious we want to keep this test/file - def test_script_engine_can_use_custom_scripts( - self, - app: Flask, - with_db_and_bpmn_file_cleanup: None, - ) -> None: - """Test_script_engine_takes_data_and_returns_expected_results.""" - with app.app_context(): - script_engine = ProcessInstanceProcessor._script_engine - result = script_engine._evaluate("get_env()", {}) - assert result == "unit_testing"