From 318f452df4d0454cef829e69c3f05487093a2db2 Mon Sep 17 00:00:00 2001
From: Elora-V <elora95.vigo@gmail.com>
Date: Mon, 7 Oct 2024 09:40:45 +0200
Subject: [PATCH] main chain with one node not added as cluster

---
 src/composables/SubgraphForViz.ts             | 11 ++++---
 .../__tests__/SubgraphForViz.test.ts          | 32 +++++++++++++++++++
 2 files changed, 38 insertions(+), 5 deletions(-)

diff --git a/src/composables/SubgraphForViz.ts b/src/composables/SubgraphForViz.ts
index d63934b..af443dd 100644
--- a/src/composables/SubgraphForViz.ts
+++ b/src/composables/SubgraphForViz.ts
@@ -66,12 +66,13 @@ export function addMainChainForViz(vizGraph: Graph, nameMainChain: string, subgr
             });
         }
     
-
-    // push cluster for viz
-    if (!vizGraph.subgraphs) {
-        vizGraph.subgraphs = [];
+    if (clusterViz.nodes && clusterViz.nodes.length>1){ // add subgraph if more than one node
+        // push cluster for viz
+        if (!vizGraph.subgraphs) {
+            vizGraph.subgraphs = [];
+        }
+        vizGraph.subgraphs.push(clusterViz);
     }
-    vizGraph.subgraphs.push(clusterViz);
     return vizGraph;
 }
 
diff --git a/src/composables/__tests__/SubgraphForViz.test.ts b/src/composables/__tests__/SubgraphForViz.test.ts
index ffcb9fe..78de3ad 100644
--- a/src/composables/__tests__/SubgraphForViz.test.ts
+++ b/src/composables/__tests__/SubgraphForViz.test.ts
@@ -91,6 +91,38 @@ describe('SubgraphForViz', () => {
             expect(result).toThrow();
         });
 
+        it("don't add cluster because one node", () => {
+            // DATA
+            mainChain.nodes = ["node2"];
+
+            const vizGraph:Graph = {};
+            
+            // TEST
+            const result = SubgraphForViz.addMainChainForViz(vizGraph, "mainChain", subgraphNetworkWithSubgraphs, false);
+
+            // EXPECT
+            expect(result).toEqual({});
+
+        });
+
+        it("don't add cluster because one node (cycle metanode)", () => {
+            // DATA
+            // all node of main chain also in cycle group
+            if (!nodes.node2.metadataLayout) nodes.node2.metadataLayout = {};
+            nodes.node2.metadataLayout[TypeSubgraph.CYCLEGROUP]="cycleGroup";
+            if (!nodes.node3.metadataLayout) nodes.node3.metadataLayout = {};
+            nodes.node3.metadataLayout[TypeSubgraph.CYCLEGROUP]="cycleGroup";
+
+            const vizGraph:Graph = {};
+            
+            // TEST
+            const result = SubgraphForViz.addMainChainForViz(vizGraph, "mainChain", subgraphNetworkWithSubgraphs, true);
+
+            // EXPECT
+            expect(result).toEqual({});
+
+        });
+
         it('add cluster, with cycle', () => {
             // DATA
             const vizGraph:Graph = {};
-- 
GitLab