diff --git a/Pipfile.lock b/Pipfile.lock index 3298cbfd..8a4ff381 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -550,10 +550,10 @@ }, "packaging": { "hashes": [ - "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236", - "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376" + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" ], - "version": "==20.7" + "version": "==20.8" }, "pandas": { "hashes": [ @@ -781,11 +781,11 @@ }, "soupsieve": { "hashes": [ - "sha256:1634eea42ab371d3d346309b93df7870a88610f0725d47528be902a0d95ecc55", - "sha256:a59dc181727e95d25f781f0eb4fd1825ff45590ec8ff49eadfd7f1a537cc0232" + "sha256:4bb21a6ee4707bf43b61230e80740e71bfe56e55d1f1f50924b087bb2975c851", + "sha256:6dc52924dc0bc710a5d16794e6b3480b2c7c08b07729505feab2b2c16661ff6e" ], "markers": "python_version >= '3.0'", - "version": "==2.0.1" + "version": "==2.1" }, "sphinx": { "hashes": [ @@ -839,7 +839,7 @@ }, "spiffworkflow": { "git": "https://github.com/sartography/SpiffWorkflow.git", - "ref": "71f75612779822166f3fc97ca39bb4630202af9d" + "ref": "b81a9f26a3a4533690d80235811633b809c98b88" }, "sqlalchemy": { "hashes": [ @@ -944,11 +944,11 @@ }, "xlrd": { "hashes": [ - "sha256:546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2", - "sha256:e551fb498759fa3a5384a94ccd4c3c02eb7c00ea424426e212ac0c57be9dfbde" + "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd", + "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88" ], "index": "pypi", - "version": "==1.2.0" + "version": "==2.0.1" }, "xlsxwriter": { "hashes": [ @@ -1016,10 +1016,10 @@ }, "packaging": { "hashes": [ - "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236", - "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376" + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" ], - "version": "==20.7" + "version": "==20.8" }, "pbr": { "hashes": [ @@ -1038,10 +1038,10 @@ }, "py": { "hashes": [ - "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", - "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" + "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3", + "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a" ], - "version": "==1.9.0" + "version": "==1.10.0" }, "pyparsing": { "hashes": [ @@ -1052,11 +1052,11 @@ }, "pytest": { "hashes": [ - "sha256:4288fed0d9153d9646bfcdf0c0428197dba1ecb27a33bb6e031d002fa88653fe", - "sha256:c0a7e94a8cdbc5422a51ccdad8e6f1024795939cc89159a0ae7f0b316ad3823e" + "sha256:b12e09409c5bdedc28d308469e156127004a436b41e9b44f9bff6446cbab9152", + "sha256:d69e1a80b34fe4d596c9142f35d9e523d98a2838976f1a68419a8f051b24cec6" ], "index": "pypi", - "version": "==6.1.2" + "version": "==6.2.0" }, "toml": { "hashes": [ diff --git a/crc/models/api_models.py b/crc/models/api_models.py index 00c040b6..90991dd5 100644 --- a/crc/models/api_models.py +++ b/crc/models/api_models.py @@ -158,10 +158,12 @@ class NavigationItemSchema(ma.Schema): state = data.pop('state', None) task_id = data.pop('task_id', None) children = data.pop('children', []) + spec_type = data.pop('spec_type', None) item = NavItem(**data) item.state = state item.task_id = task_id item.children = children + item.spec_type = spec_type return item class WorkflowApi(object): diff --git a/tests/test_tasks_api.py b/tests/test_tasks_api.py index bd2b300f..f9794051 100644 --- a/tests/test_tasks_api.py +++ b/tests/test_tasks_api.py @@ -68,7 +68,7 @@ class TestTasksApi(BaseTest): # get the first form in the two form workflow. workflow_api = self.get_workflow_api(workflow) self.assertEqual('two_forms', workflow_api.workflow_spec_id) - self.assertEqual(4, len(workflow_api.navigation)) + self.assertEqual(5, len(workflow_api.navigation)) self.assertIsNotNone(workflow_api.next_task.form) self.assertEqual("UserTask", workflow_api.next_task.type) self.assertEqual("StepOne", workflow_api.next_task.name) @@ -113,7 +113,7 @@ class TestTasksApi(BaseTest): self.assertIsNotNone(workflow_api.navigation) nav = workflow_api.navigation - self.assertEqual(3, len(nav)) + self.assertEqual(4, len(nav)) self.assertEqual("Do You Have Bananas", nav[1].description) self.assertEqual("Bananas?", nav[2].description) self.assertEqual("LIKELY", nav[2].state) @@ -135,7 +135,7 @@ class TestTasksApi(BaseTest): workflow_api = self.get_workflow_api(workflow) self.assertIsNotNone(workflow_api.navigation) nav = workflow_api.navigation - self.assertEqual(6, len(nav)) + self.assertEqual(7, len(nav)) self.assertEqual("Task 1", nav[1].description) self.assertEqual("Which Branch?", nav[2].description) self.assertEqual("a", nav[2].children[0].description) @@ -276,7 +276,7 @@ class TestTasksApi(BaseTest): # get the first form in the two form workflow. workflow = self.get_workflow_api(workflow) navigation = self.get_workflow_api(workflow).navigation - self.assertEqual(4, len(navigation)) # Start task, form_task, multi_task, end task + self.assertEqual(5, len(navigation)) # Start task, form_task, multi_task, end task self.assertEqual("UserTask", workflow.next_task.type) self.assertEqual(MultiInstanceType.sequential.value, workflow.next_task.multi_instance_type) self.assertEqual(5, workflow.next_task.multi_instance_count) @@ -394,7 +394,7 @@ class TestTasksApi(BaseTest): navigation = workflow_api.navigation task = workflow_api.next_task - self.assertEqual(4, len(navigation)) + self.assertEqual(5, len(navigation)) self.assertEqual("UserTask", task.type) self.assertEqual("Activity_A", task.name) self.assertEqual("My Sub Process", task.process_name) @@ -461,7 +461,7 @@ class TestTasksApi(BaseTest): workflow = self.create_workflow('multi_instance_parallel') workflow_api = self.get_workflow_api(workflow) - self.assertEqual(8, len(workflow_api.navigation)) + self.assertEqual(9, len(workflow_api.navigation)) ready_items = [nav for nav in workflow_api.navigation if nav.state == "READY"] self.assertEqual(5, len(ready_items)) diff --git a/tests/workflow/test_workflow_processor_multi_instance.py b/tests/workflow/test_workflow_processor_multi_instance.py index 72af78b3..927588b6 100644 --- a/tests/workflow/test_workflow_processor_multi_instance.py +++ b/tests/workflow/test_workflow_processor_multi_instance.py @@ -158,7 +158,7 @@ class TestWorkflowProcessorMultiInstance(BaseTest): self.assertEqual(3, len(next_user_tasks)) # There should be six tasks in the navigation: start event, the script task, end event, and three tasks # for the three executions of hte multi-instance. - self.assertEqual(6, len(processor.bpmn_workflow.get_flat_nav_list())) + self.assertEqual(7, len(processor.bpmn_workflow.get_flat_nav_list())) # We can complete the tasks out of order. task = next_user_tasks[2] @@ -176,7 +176,7 @@ class TestWorkflowProcessorMultiInstance(BaseTest): task.update_data({"investigator": {"email": "dhf8r@virginia.edu"}}) processor.complete_task(task) processor.do_engine_steps() - self.assertEqual(6, len(processor.bpmn_workflow.get_flat_nav_list())) + self.assertEqual(7, len(processor.bpmn_workflow.get_flat_nav_list())) task = next_user_tasks[0] api_task = WorkflowService.spiff_task_to_api_task(task) @@ -184,7 +184,7 @@ class TestWorkflowProcessorMultiInstance(BaseTest): task.update_data({"investigator":{"email":"asd3v@virginia.edu"}}) processor.complete_task(task) processor.do_engine_steps() - self.assertEqual(6, len(processor.bpmn_workflow.get_flat_nav_list())) + self.assertEqual(7, len(processor.bpmn_workflow.get_flat_nav_list())) task = next_user_tasks[1] api_task = WorkflowService.spiff_task_to_api_task(task) @@ -192,7 +192,7 @@ class TestWorkflowProcessorMultiInstance(BaseTest): task.update_data({"investigator":{"email":"asdf32@virginia.edu"}}) processor.complete_task(task) processor.do_engine_steps() - self.assertEqual(6, len(processor.bpmn_workflow.get_flat_nav_list())) + self.assertEqual(7, len(processor.bpmn_workflow.get_flat_nav_list())) # Completing the tasks out of order, still provides the correct information. expected = self.mock_investigator_response @@ -203,4 +203,4 @@ class TestWorkflowProcessorMultiInstance(BaseTest): task.data['StudyInfo']['investigators']) self.assertEqual(WorkflowStatus.complete, processor.get_status()) - self.assertEqual(6, len(processor.bpmn_workflow.get_flat_nav_list())) + self.assertEqual(7, len(processor.bpmn_workflow.get_flat_nav_list()))