from spiffworkflow_backend.exceptions.process_entity_not_found_error import ProcessEntityNotFoundError from spiffworkflow_backend.models.process_group import ProcessGroup from spiffworkflow_backend.models.process_model import ProcessModelInfo from spiffworkflow_backend.services.process_model_service import ProcessModelService from tests.spiffworkflow_backend.helpers.example_data import ExampleDataLoader def assure_process_group_exists(process_group_id: str | None = None) -> ProcessGroup: process_group = None if process_group_id is not None: try: process_group = ProcessModelService.get_process_group(process_group_id) except ProcessEntityNotFoundError: process_group = None if process_group is None: process_group_id_to_create = "test_process_group" if process_group_id is not None: process_group_id_to_create = process_group_id process_group = ProcessGroup( id=process_group_id_to_create, display_name="Test Workflows", admin=False, display_order=0, ) ProcessModelService.add_process_group(process_group) return process_group def load_test_spec( process_model_id: str, bpmn_file_name: str | None = None, process_model_source_directory: str | None = None, ) -> ProcessModelInfo: """Loads a bpmn file into the process model dir based on a directory in tests/data.""" if process_model_source_directory is None: raise Exception("You must include a `process_model_source_directory`.") spec = ExampleDataLoader.create_spec( process_model_id=process_model_id, display_name=process_model_id, bpmn_file_name=bpmn_file_name, process_model_source_directory=process_model_source_directory, ) return spec