This is an automated email from the ASF dual-hosted git repository.

tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new 43d4e5aa97c kie-issues#891: DMN Editor: Removing a Decision from a 
Decision Service (#3211)
43d4e5aa97c is described below

commit 43d4e5aa97c18ef8d2bf96833b590b5098202bee
Author: Aswathi <[email protected]>
AuthorDate: Sat Aug 2 01:01:54 2025 +0530

    kie-issues#891: DMN Editor: Removing a Decision from a Decision Service 
(#3211)
---
 packages/dmn-editor/src/diagram/Diagram.tsx        |  26 +++++++++++++
 .../decision-removed-from-decision-service.png     | Bin 0 -> 28905 bytes
 .../decision-removed-from-decision-service.png     | Bin 0 -> 29607 bytes
 .../decision-removed-from-decision-service.png     | Bin 0 -> 31186 bytes
 .../drds/modelDecisionServicesInDrds.spec.ts       |  41 +++++++++++++++++++--
 5 files changed, 64 insertions(+), 3 deletions(-)

diff --git a/packages/dmn-editor/src/diagram/Diagram.tsx 
b/packages/dmn-editor/src/diagram/Diagram.tsx
index 78fddf9df4c..24056ccd4b1 100644
--- a/packages/dmn-editor/src/diagram/Diagram.tsx
+++ b/packages/dmn-editor/src/diagram/Diagram.tsx
@@ -922,6 +922,32 @@ export const Diagram = React.forwardRef<DiagramRef, { 
container: React.RefObject
                         dsShape["dc:Bounds"]["@_y"] =
                           (parentShape["dc:Bounds"]?.["@_y"] ?? 0) + 
relativePosinCurrentDS.y;
                       }
+                      // Remove decision from decision service
+                      let isInside = true;
+                      if (
+                        node.data.shape["dc:Bounds"] &&
+                        parentShape &&
+                        parentShape["dc:Bounds"] &&
+                        !parentShape["@_isCollapsed"]
+                      ) {
+                        isInside =
+                          node.data.shape["dc:Bounds"]["@_x"] >= 
parentShape["dc:Bounds"]["@_x"] &&
+                          node.data.shape["dc:Bounds"]["@_y"] >= 
parentShape!["dc:Bounds"]["@_y"] &&
+                          node.data.shape["dc:Bounds"]!["@_x"] + 
node.data.shape["dc:Bounds"]["@_width"] <=
+                            parentShape["dc:Bounds"]["@_x"] + 
parentShape!["dc:Bounds"]["@_width"] &&
+                          node.data.shape["dc:Bounds"]["@_y"] + 
node.data.shape["dc:Bounds"]["@_height"] <=
+                            parentShape["dc:Bounds"]["@_y"] + 
parentShape!["dc:Bounds"]["@_height"];
+                      }
+                      const { diagramElements } = addOrGetDrd({
+                        definitions: state.dmn.model.definitions,
+                        drdIndex: i,
+                      });
+                      const dmnShapeIndex = (diagramElements ?? []).findIndex(
+                        (d) => d["@_dmnElementRef"] === 
dsShape?.["@_dmnElementRef"]
+                      );
+                      if (dmnShapeIndex >= 0 && !isInside) {
+                        diagramElements?.splice(dmnShapeIndex, 1);
+                      }
                     }
                   }
                 }
diff --git 
a/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
 
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..c9e93fdff5d
Binary files /dev/null and 
b/packages/dmn-editor/tests-e2e/__screenshots__/Google-Chrome/drds/decision-removed-from-decision-service.png
 differ
diff --git 
a/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
 
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..bca99a443f0
Binary files /dev/null and 
b/packages/dmn-editor/tests-e2e/__screenshots__/chromium/drds/decision-removed-from-decision-service.png
 differ
diff --git 
a/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
 
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
new file mode 100644
index 00000000000..95e42c9abcf
Binary files /dev/null and 
b/packages/dmn-editor/tests-e2e/__screenshots__/webkit/drds/decision-removed-from-decision-service.png
 differ
diff --git 
a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts 
b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
index 8fd2bf489ca..8e9fd218e37 100644
--- a/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
+++ b/packages/dmn-editor/tests-e2e/drds/modelDecisionServicesInDrds.spec.ts
@@ -491,13 +491,48 @@ test.describe("Model Decision Services - DRD", () => {
     await 
expect(diagram.get()).toHaveScreenshot("decision_added_to_decision_service_collapsedDS.png");
   });
 
-  test("891 remove node from DS, check its removed form DS in all DRDs", async 
({ drds }) => {
-    test.skip(true, 
"https://github.com/apache/incubator-kie-issues/issues/891";);
+  test("Removing node from Decision Service removes from all DRDs", async ({
+    drds,
+    nodes,
+    drgNodes,
+    palette,
+    diagram,
+  }) => {
     test.info().annotations.push({
       type: TestAnnotations.REGRESSION,
       description: "https://github.com/apache/incubator-kie-issues/issues/891";,
     });
-    // TODO, question, isn't this the same as 889 - syncing depiction of DS in 
all DRDs?
+    await drds.toggle();
+    await drds.create({ name: "First DRD" });
+    await drgNodes.toggle();
+
+    await palette.dragNewNode({
+      type: NodeType.DECISION_SERVICE,
+      targetPosition: { x: 400, y: 200 },
+      thenRenameTo: "DS1",
+    });
+    await expect(nodes.get({ name: "DS1" })).toBeAttached();
+    await palette.dragNewNode({
+      type: NodeType.DECISION,
+      targetPosition: { x: 200, y: 200 },
+      thenRenameTo: "D1",
+    });
+    await expect(nodes.get({ name: "D1" })).toBeAttached();
+    await nodes.move({ name: "D1", targetPosition: { x: 500, y: 300 } });
+    await expect(nodes.get({ name: "D1" })).toBeAttached();
+
+    await drds.toggle();
+    await drds.create({ name: "Second DRD" });
+    await drgNodes.dragNode({ name: "DS1", targetPosition: { x: 400, y: 200 } 
});
+    await expect(nodes.get({ name: "DS1" })).toBeAttached();
+    await nodes.move({ name: "D1", targetPosition: { x: 700, y: 500 } });
+    await drgNodes.toggle();
+
+    await drds.toggle();
+    await drds.navigateTo({ name: "First DRD" });
+    await drds.toggle();
+    await expect(nodes.get({ name: "D1" })).not.toBeAttached();
+    await 
expect(diagram.get()).toHaveScreenshot("decision_removed_from_decision_service.png");
   });
 
   test("893 collapsed external DS, synced in all DRDs", async ({ drds }) => {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to