From e21225cb2657c0b8462b7807fd9d9c8085e7e4a9 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 4 Jan 2021 10:26:14 -0500 Subject: [PATCH 1/4] add failing test for loop characteristics id required Co-Authored-By: Justin Struk Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- test-diagrams/loop-characteristics.valid.bpmn | 99 +++++++++++++++++++ test.js | 3 + 2 files changed, 102 insertions(+) create mode 100644 test-diagrams/loop-characteristics.valid.bpmn diff --git a/test-diagrams/loop-characteristics.valid.bpmn b/test-diagrams/loop-characteristics.valid.bpmn new file mode 100644 index 0000000..ec1b830 --- /dev/null +++ b/test-diagrams/loop-characteristics.valid.bpmn @@ -0,0 +1,99 @@ + + + + + node_4 + + + node_4 + node_5 + + + + node_5 + + + + + node_9 + node_12 + + + + node_9 + + + + node_12 + + + + node_15 + + + node_15 + node_17 + + + + + node_17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test.js b/test.js index 932e796..106e173 100644 --- a/test.js +++ b/test.js @@ -89,6 +89,9 @@ RuleTester.verify('id-required', idRequiredRule, { }, { moddleElement: readModdle('./test-diagrams/event-definitions.valid.bpmn') + }, + { + moddleElement: readModdle('./test-diagrams/loop-characteristics.valid.bpmn') } ], invalid: [ From 75660b3fa173b624b76489f2772b3f08a709f3ef Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 4 Jan 2021 10:30:41 -0500 Subject: [PATCH 2/4] skip `ID required` for loop characteristics Co-Authored-By: Justin Struk Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- rules/id-required.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/rules/id-required.js b/rules/id-required.js index 576e992..e952c33 100644 --- a/rules/id-required.js +++ b/rules/id-required.js @@ -26,8 +26,15 @@ module.exports = function() { ]); } + function isLoopCharacteristic(node) { + return isAny(node, [ + 'bpmn:MultiInstanceLoopCharacteristics', + 'bpmn:StandardLoopCharacteristics', + ]); + } + function check(node, reporter) { - if (is(node, 'bpmn:Definitions') || isNonBpmnType(node) || isEventDefinition(node)) { + if (is(node, 'bpmn:Definitions') || isNonBpmnType(node) || isEventDefinition(node) || isLoopCharacteristic(node)) { return; } From 60c0747587b8c4f5516f6ebd70df1a07fe128297 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 4 Jan 2021 10:33:21 -0500 Subject: [PATCH 3/4] add failing test for documentation missing required ID Co-Authored-By: Justin Struk Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- test-diagrams/documentation.valid.bpmn | 39 ++++++++++++++++++++++++++ test.js | 3 ++ 2 files changed, 42 insertions(+) create mode 100644 test-diagrams/documentation.valid.bpmn diff --git a/test-diagrams/documentation.valid.bpmn b/test-diagrams/documentation.valid.bpmn new file mode 100644 index 0000000..aef47d4 --- /dev/null +++ b/test-diagrams/documentation.valid.bpmn @@ -0,0 +1,39 @@ + + + + + node_4 + + + <p>Test documentation</p> + node_4 + node_5 + + + node_5 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test.js b/test.js index 106e173..f8e5f67 100644 --- a/test.js +++ b/test.js @@ -92,6 +92,9 @@ RuleTester.verify('id-required', idRequiredRule, { }, { moddleElement: readModdle('./test-diagrams/loop-characteristics.valid.bpmn') + }, + { + moddleElement: readModdle('./test-diagrams/documentation.valid.bpmn') } ], invalid: [ From d4a212229b216d8ab3f104e934bfe62840b5b6e1 Mon Sep 17 00:00:00 2001 From: vehikl-jacare Date: Mon, 4 Jan 2021 10:38:50 -0500 Subject: [PATCH 4/4] skip 'ID Required' for documentation Co-Authored-By: Justin Struk Co-Authored-By: Robert Komaromi Co-Authored-By: Gerrie Swart --- rules/id-required.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/rules/id-required.js b/rules/id-required.js index e952c33..7a19aa1 100644 --- a/rules/id-required.js +++ b/rules/id-required.js @@ -33,8 +33,18 @@ module.exports = function() { ]); } + function isDocumentation(node) { + return isAny(node, [ + 'bpmn:Documentation', + ]); + } + function check(node, reporter) { - if (is(node, 'bpmn:Definitions') || isNonBpmnType(node) || isEventDefinition(node) || isLoopCharacteristic(node)) { + if (is(node, 'bpmn:Definitions') + || isDocumentation(node) + || isEventDefinition(node) + || isLoopCharacteristic(node) + || isNonBpmnType(node)) { return; }