From 413220db6b888bde7a7d1bd5d5cf87bad590c191 Mon Sep 17 00:00:00 2001 From: David Kaltschmidt Date: Thu, 29 Oct 2015 14:43:15 +0000 Subject: [PATCH] Fixed bug in unseen nodes detection --- .../charts/__tests__/node-layout-test.js | 25 +++++++++++++++++++ client/app/scripts/charts/nodes-layout.js | 10 +++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/client/app/scripts/charts/__tests__/node-layout-test.js b/client/app/scripts/charts/__tests__/node-layout-test.js index 078a16958..69aba50a1 100644 --- a/client/app/scripts/charts/__tests__/node-layout-test.js +++ b/client/app/scripts/charts/__tests__/node-layout-test.js @@ -74,6 +74,31 @@ describe('NodesLayout', () => { }; }); + it('detects unseen nodes', () => { + const set1 = fromJS({ + n1: {id: 'n1'} + }); + const set12 = fromJS({ + n1: {id: 'n1'}, + n2: {id: 'n2'} + }); + const set13 = fromJS({ + n1: {id: 'n1'}, + n3: {id: 'n3'} + }); + let hasUnseen; + hasUnseen = NodesLayout.hasUnseenNodes(set12, set1); + expect(hasUnseen).toBeTruthy(); + hasUnseen = NodesLayout.hasUnseenNodes(set13, set1); + expect(hasUnseen).toBeTruthy(); + hasUnseen = NodesLayout.hasUnseenNodes(set1, set12); + expect(hasUnseen).toBeFalsy(); + hasUnseen = NodesLayout.hasUnseenNodes(set1, set13); + expect(hasUnseen).toBeFalsy(); + hasUnseen = NodesLayout.hasUnseenNodes(set12, set13); + expect(hasUnseen).toBeTruthy(); + }); + it('lays out initial nodeset in a rectangle', () => { const result = NodesLayout.doLayout( nodeSets.initial4.nodes, diff --git a/client/app/scripts/charts/nodes-layout.js b/client/app/scripts/charts/nodes-layout.js index 0dfae60ae..635bfd64f 100644 --- a/client/app/scripts/charts/nodes-layout.js +++ b/client/app/scripts/charts/nodes-layout.js @@ -144,9 +144,13 @@ function setSimpleEdgePoints(edge, nodeCache) { * @param {Map} cache old Map of nodes * @return {Boolean} True if nodes had node ids that are not in cache */ -function hasUnseenNodes(nodes, cache) { - return (nodes.size > cache.size - || !ImmSet.fromKeys(nodes).isSubset(ImmSet.fromKeys(nodes))); +export function hasUnseenNodes(nodes, cache) { + const hasUnseen = nodes.size > cache.size + || !ImmSet.fromKeys(nodes).isSubset(ImmSet.fromKeys(cache)); + if (hasUnseen) { + debug('unseen nodes:', ...ImmSet.fromKeys(nodes).subtract(ImmSet.fromKeys(cache)).toJS()); + } + return hasUnseen; } /**