From b88daef4fa04500ddd756b05c7705838bb75f242 Mon Sep 17 00:00:00 2001 From: mike cullerton Date: Tue, 31 Aug 2021 16:17:52 -0400 Subject: [PATCH 1/2] Added task name to the error message, for configurators --- crc/services/workflow_service.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crc/services/workflow_service.py b/crc/services/workflow_service.py index 806d8a54..df58e151 100755 --- a/crc/services/workflow_service.py +++ b/crc/services/workflow_service.py @@ -220,8 +220,9 @@ class WorkflowService(object): # A task should only have default_value **or** value expression, not both. if field.has_property(Task.FIELD_PROP_VALUE_EXPRESSION) and (hasattr(field, 'default_value') and field.default_value): - raise ApiError(code='default value and value_expression', - message='This task has both a default_value and value_expression. Please fix this to only have one or the other.') + raise ApiError.from_task(code='default value and value_expression', + message=f'This task ({task.get_name()}) has both a default_value and value_expression. Please fix this to only have one or the other.', + task=task) # If we have a default_value or value_expression, try to set the default if field.has_property(Task.FIELD_PROP_VALUE_EXPRESSION) or (hasattr(field, 'default_value') and field.default_value): form_data[field.id] = WorkflowService.get_default_value(field, task) From e6a2b9d642b3f9399722fee2de6739ac39516f9c Mon Sep 17 00:00:00 2001 From: mike cullerton Date: Tue, 31 Aug 2021 16:18:29 -0400 Subject: [PATCH 2/2] New test and BPMN for changes --- .../default_value_expression.bpmn | 84 +++++++++++++++++++ .../test_workflow_value_expression.py | 9 ++ 2 files changed, 93 insertions(+) create mode 100644 tests/data/default_value_expression/default_value_expression.bpmn diff --git a/tests/data/default_value_expression/default_value_expression.bpmn b/tests/data/default_value_expression/default_value_expression.bpmn new file mode 100644 index 00000000..3a73f8f5 --- /dev/null +++ b/tests/data/default_value_expression/default_value_expression.bpmn @@ -0,0 +1,84 @@ + + + + + SequenceFlow_0efs0fk + + + + + + + + + + + + + SequenceFlow_0efs0fk + SequenceFlow_0wor210 + + + + + + + + + + + + + SequenceFlow_0wor210 + SequenceFlow_1fu62xl + + + + # Hello +Hello {{ name }} + + + SequenceFlow_1fu62xl + SequenceFlow_15apauw + + + SequenceFlow_15apauw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/workflow/test_workflow_value_expression.py b/tests/workflow/test_workflow_value_expression.py index 47751b1c..bdb8cfe8 100644 --- a/tests/workflow/test_workflow_value_expression.py +++ b/tests/workflow/test_workflow_value_expression.py @@ -33,3 +33,12 @@ class TestValueExpression(BaseTest): self.assertEqual('black', second_task.data['value_expression_value']) self.assertIn('color', second_task.data) self.assertEqual('black', second_task.data['color']['value']) + + def test_validate_task_with_both_default_and_expression(self): + # This actually fails validation. + # We are testing the error message is correct. + self.load_example_data() + spec_model = self.load_test_spec('default_value_expression') + rv = self.app.get('/v1.0/workflow-specification/%s/validate' % spec_model.id, headers=self.logged_in_headers()) + self.assertEqual('default value and value_expression', rv.json[0]['code']) + self.assertIn('Task_GetName', rv.json[0]['message'])