diff --git a/html/admin/js/graphViewer/graph/nodeShaper.js b/html/admin/js/graphViewer/graph/nodeShaper.js index 5c0a945bc4..97d69e46ee 100644 --- a/html/admin/js/graphViewer/graph/nodeShaper.js +++ b/html/admin/js/graphViewer/graph/nodeShaper.js @@ -138,6 +138,7 @@ function NodeShaper(parent, flags, idfunc) { updateNodes = function () { var nodes = self.parent.selectAll(".node"); + addDistortion(); nodes.attr("transform", function(d) { return "translate(" + d.position.x + "," + d.position.y + ")"; }); diff --git a/html/admin/js/graphViewer/graphViewer.js b/html/admin/js/graphViewer/graphViewer.js index 0eaf615fd7..675eb42589 100644 --- a/html/admin/js/graphViewer/graphViewer.js +++ b/html/admin/js/graphViewer/graphViewer.js @@ -122,8 +122,8 @@ function GraphViewer(svg, width, height, self.start = function() { self.layouter.stop(); - self.edgeShaper.drawEdges(edges); self.nodeShaper.drawNodes(nodes); + self.edgeShaper.drawEdges(edges); self.layouter.start(); }; diff --git a/html/admin/js/graphViewer/jasmine_test/helper/objectsHelper.js b/html/admin/js/graphViewer/jasmine_test/helper/objectsHelper.js new file mode 100644 index 0000000000..bf0b9a881e --- /dev/null +++ b/html/admin/js/graphViewer/jasmine_test/helper/objectsHelper.js @@ -0,0 +1,51 @@ +/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true */ +/*global _*/ +/*global document, window*/ + +//////////////////////////////////////////////////////////////////////////////// +/// @brief Graph functionality +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2010-2012 triagens GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Michael Hackstein +/// @author Copyright 2011-2013, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +var helper = helper || {}; + +(function objectsHelper() { + "use strict"; + + helper.createSimpleNodes = function (ids) { + var nodes = []; + _.each(ids, function(i) { + nodes.push({ + _id: i, + position: { + x: 1, + y: 1, + z: 1 + } + }); + }); + return nodes; + }; +}()); \ No newline at end of file diff --git a/html/admin/js/graphViewer/jasmine_test/runnerAll.html b/html/admin/js/graphViewer/jasmine_test/runnerAll.html index 88ef27806c..d112cbdec8 100644 --- a/html/admin/js/graphViewer/jasmine_test/runnerAll.html +++ b/html/admin/js/graphViewer/jasmine_test/runnerAll.html @@ -19,6 +19,7 @@ + diff --git a/html/admin/js/graphViewer/jasmine_test/runnerEdgeShaper.html b/html/admin/js/graphViewer/jasmine_test/runnerEdgeShaper.html index 7f5a393ea6..00dd0e8615 100644 --- a/html/admin/js/graphViewer/jasmine_test/runnerEdgeShaper.html +++ b/html/admin/js/graphViewer/jasmine_test/runnerEdgeShaper.html @@ -19,6 +19,7 @@ + diff --git a/html/admin/js/graphViewer/jasmine_test/runnerEventDispatcher.html b/html/admin/js/graphViewer/jasmine_test/runnerEventDispatcher.html index 7d35a74096..e712b76ba0 100644 --- a/html/admin/js/graphViewer/jasmine_test/runnerEventDispatcher.html +++ b/html/admin/js/graphViewer/jasmine_test/runnerEventDispatcher.html @@ -20,6 +20,7 @@ + diff --git a/html/admin/js/graphViewer/jasmine_test/specEdgeShaper/edgeShaperSpec.js b/html/admin/js/graphViewer/jasmine_test/specEdgeShaper/edgeShaperSpec.js index bc8bc2526f..fa0a7173e4 100644 --- a/html/admin/js/graphViewer/jasmine_test/specEdgeShaper/edgeShaperSpec.js +++ b/html/admin/js/graphViewer/jasmine_test/specEdgeShaper/edgeShaperSpec.js @@ -38,15 +38,10 @@ describe('Edge Shaper', function() { - var svg, defaultPosition; + var svg; beforeEach(function () { svg = document.createElement("svg"); - defaultPosition = { - x: 1, - y: 1, - z: 1 - }; document.body.appendChild(svg); }); @@ -56,21 +51,16 @@ it('should be able to draw an edge', function () { - var source = { - "_id": 1, - position: defaultPosition - }, - target = { - "_id": 2, - position: defaultPosition - }, - edges = [ - { - "source": source, - "target": target - } - ], - shaper = new EdgeShaper(d3.select("svg")); + var nodes = helper.createSimpleNodes([1, 2]), + source = nodes[0], + target = nodes[1], + edges = [ + { + "source": source, + "target": target + } + ], + shaper = new EdgeShaper(d3.select("svg")); shaper.drawEdges(edges); expect($("svg .link line").length).toEqual(1); expect($("svg .link line")[0]).toBeDefined(); @@ -78,38 +68,23 @@ }); it('should be able to draw many edges', function () { - var one = { - "_id": 1, - position: defaultPosition - }, - two = { - "_id": 2, - position: defaultPosition - }, - three = { - "_id": 3, - position: defaultPosition - }, - four = { - "_id": 4, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { - "source": one, - "target": two + "source": nodes[0], + "target": nodes[1] }, { - "source": two, - "target": three + "source": nodes[1], + "target": nodes[2] }, { - "source": three, - "target": four + "source": nodes[2], + "target": nodes[3] }, { - "source": four, - "target": one + "source": nodes[3], + "target": nodes[0] } ], shaper = new EdgeShaper(d3.select("svg")); @@ -118,38 +93,23 @@ }); it('should be able to add an event', function () { - var one = { - "_id": 1, - position: defaultPosition - }, - two = { - "_id": 2, - position: defaultPosition - }, - three = { - "_id": 3, - position: defaultPosition - }, - four = { - "_id": 4, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { - "source": one, - "target": two + "source": nodes[0], + "target": nodes[1] }, { - "source": two, - "target": three + "source": nodes[1], + "target": nodes[2] }, { - "source": three, - "target": four + "source": nodes[2], + "target": nodes[3] }, { - "source": four, - "target": one + "source": nodes[3], + "target": nodes[0] } ], clicked = [], @@ -173,38 +133,23 @@ }); it('should be able to unbind all events', function() { - var one = { - "_id": 1, - position: defaultPosition - }, - two = { - "_id": 2, - position: defaultPosition - }, - three = { - "_id": 3, - position: defaultPosition - }, - four = { - "_id": 4, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { - "source": one, - "target": two + "source": nodes[0], + "target": nodes[1] }, { - "source": two, - "target": three + "source": nodes[1], + "target": nodes[2] }, { - "source": three, - "target": four + "source": nodes[2], + "target": nodes[3] }, { - "source": four, - "target": one + "source": nodes[3], + "target": nodes[0] } ], clicked = [], @@ -234,18 +179,11 @@ }); it('should be able to add an arrow on target side', function() { - var one = { - "_id": 1, - position: defaultPosition - }, - two = { - "_id": 2, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2]), edges = [ { - "source": one, - "target": two + "source": nodes[0], + "target": nodes[1] } ], shaper = new EdgeShaper(d3.select("svg"), { @@ -339,15 +277,7 @@ describe('testing for colours', function() { it('should have a default colouring of no colour flag is given', function() { - var nodes = [ - { - _id: 1, - position: defaultPosition - }, { - _id: 2, - position: defaultPosition - } - ], + var nodes = helper.createSimpleNodes([1, 2]), edges = [{ source: nodes[0], target: nodes[1] @@ -363,20 +293,13 @@ }); it('should be able to use the same colour for all edges', function() { - var s = { - _id: 1, - position: defaultPosition - }, - t = { - _id: 2, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2]), edges = [{ - source: s, - target: t + source: nodes[0], + target: nodes[1] },{ - source: t, - target: s + source: nodes[1], + target: nodes[0] }], shaper = new EdgeShaper(d3.select("svg"), { @@ -393,22 +316,11 @@ }); it('should be able to use a colour based on attribute value', function() { - var n1 = { - _id: 1, - position: defaultPosition - }, - n2 = { - _id: 2, - position: defaultPosition - }, - n3 = { - _id: 3, - position: defaultPosition - }, - n4 = { - _id: 4, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), + n1 = nodes[0], + n2 = nodes[1], + n3 = nodes[2], + n4 = nodes[3], edges = [{ source: n1, target: n2, @@ -464,17 +376,10 @@ }); it('should be able to use a gradient colour', function() { - var s = { - _id: 1, - position: defaultPosition - }, - t = { - _id: 2, - position: defaultPosition - }, + var nodes = helper.createSimpleNodes([1, 2]), edges = [{ - source: s, - target: t + source: nodes[0], + target: nodes[1] }], shaper = new EdgeShaper(d3.select("svg"), { @@ -517,20 +422,13 @@ var shaper; beforeEach(function() { - var one = { - "_id": 1, - position: defaultPosition - }, - two = { - "_id": 2, - position: defaultPosition - }, - edges = [ - { - "source": one, - "target": two - } - ]; + var nodes = helper.createSimpleNodes([1, 2]), + edges = [ + { + "source": nodes[0], + "target": nodes[1] + } + ]; shaper = new EdgeShaper(d3.select("svg"), { shape: { type: EdgeShaper.shapes.ARROW @@ -576,24 +474,7 @@ shaper; beforeEach(function() { - nodes = [ - { - _id: 1, - position: defaultPosition - }, - { - _id: 2, - position: defaultPosition - }, - { - _id: 3, - position: defaultPosition - }, - { - _id: 4, - position: defaultPosition - } - ]; + nodes = helper.createSimpleNodes([1, 2, 3, 4]); edges = [ {_id: 1, source: nodes[0], target: nodes[1]}, {_id: 2, source: nodes[1], target: nodes[2]}, @@ -671,21 +552,7 @@ }); it('should display the correct label', function() { - var nodes = [ - { - "_id": 1, - position: defaultPosition - }, { - "_id": 2, - position: defaultPosition - }, { - "_id": 3, - position: defaultPosition - }, { - "_id": 4, - position: defaultPosition - } - ], + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { "source": nodes[0], @@ -758,21 +625,7 @@ }); it('should ignore other attributes', function() { - var nodes = [ - { - "_id": 1, - position: defaultPosition - }, { - "_id": 2, - position: defaultPosition - }, { - "_id": 3, - position: defaultPosition - }, { - "_id": 4, - position: defaultPosition - } - ], + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { "source": nodes[0], @@ -812,15 +665,7 @@ }); it('should be able to switch to another label', function() { - var nodes = [ - { - "_id": 1, - position: defaultPosition - }, { - "_id": 2, - position: defaultPosition - } - ], + var nodes = helper.createSimpleNodes([1, 2]), edges = [ { "source": nodes[0], @@ -868,21 +713,7 @@ }); it('should display the correct label', function() { - var nodes = [ - { - "_id": 1, - position: defaultPosition - }, { - "_id": 2, - position: defaultPosition - }, { - "_id": 3, - position: defaultPosition - }, { - "_id": 4, - position: defaultPosition - } - ], + var nodes = helper.createSimpleNodes([1, 2, 3, 4]), edges = [ { "source": nodes[0], @@ -918,21 +749,7 @@ beforeEach(function () { shaper = new EdgeShaper(d3.select("svg")); - nodes = [ - { - "_id": 1, - position: defaultPosition - }, { - "_id": 2, - position: defaultPosition - }, { - "_id": 3, - position: defaultPosition - }, { - "_id": 4, - position: defaultPosition - } - ]; + nodes = helper.createSimpleNodes([1, 2, 3, 4]); edges = [ { "source": nodes[0], @@ -1022,14 +839,9 @@ .append("svg") .append("g"), shaper = new EdgeShaper(internalObject), - source = { - "_id": 1, - position: defaultPosition - }, - target = { - "_id": 2, - position: defaultPosition - }, + nodes = helper.createSimpleNodes([1, 2]), + source = nodes[0], + target = nodes[1], edges = [ { "source": source, diff --git a/html/admin/js/graphViewer/jasmine_test/specEvents/eventDispatcherSpec.js b/html/admin/js/graphViewer/jasmine_test/specEvents/eventDispatcherSpec.js index b8d5d8cc04..2aea9bda5f 100644 --- a/html/admin/js/graphViewer/jasmine_test/specEvents/eventDispatcherSpec.js +++ b/html/admin/js/graphViewer/jasmine_test/specEvents/eventDispatcherSpec.js @@ -52,7 +52,7 @@ nodeEditorConfig, edgeEditorConfig, svg, - + defaultPosition, bindSpies = function() { spyOn(layouter, "drag"); @@ -77,6 +77,12 @@ this.loadNode = function() {}; spyOn(this, "loadNode"); + defaultPosition = { + x: 1, + y: 1, + z: 1 + }; + expandConfig = { edges: edges, nodes: nodes, @@ -213,8 +219,8 @@ var called; runs(function() { - var nodes = [{_id: 1}, {_id:2}], - callback = function() { + nodes = helper.createSimpleNodes([1, 2]); + var callback = function() { called++; }; called = 0; @@ -240,16 +246,17 @@ runs(function() { - var n1 = {_id: 1}, - n2 = {_id: 2}, - n3 = {_id: 3}, - edges = [ - {source: n1, target: n2}, - {source: n2, target: n3} - ], - callback = function() { - called++; - }; + nodes = helper.createSimpleNodes([1, 2, 3]); + var n1 = nodes[0], + n2 = nodes[1], + n3 = nodes[2], + edges = [ + {source: n1, target: n2}, + {source: n2, target: n3} + ], + callback = function() { + called++; + }; called = 0; edgeShaper.drawEdges(edges); dispatcher.bind("edges", "click", callback); @@ -276,7 +283,7 @@ var called; runs(function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), callback = function() { called = true; }; @@ -300,7 +307,7 @@ var called; runs(function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), callback = function() { called = true; }; @@ -324,7 +331,7 @@ var called; runs(function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), callback = function() { called = true; }; @@ -348,7 +355,7 @@ var called; runs(function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), callback = function() { called = true; }; @@ -373,7 +380,7 @@ var called; runs(function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), callback = function() { called = true; }; @@ -397,8 +404,8 @@ var called; runs(function() { - var nodes = [{_id: 1}], - callback = function() { + nodes = helper.createSimpleNodes([1]); + var callback = function() { called = true; }; called = false; @@ -423,7 +430,7 @@ it('should be able to bind the expand event', function() { runs(function() { - nodes = [{_id: 1}]; + nodes = helper.createSimpleNodes([1]); nodeShaper.drawNodes(nodes); dispatcher.bind("nodes", "click", dispatcher.events.EXPAND); helper.simulateMouseEvent("click", "1"); @@ -449,7 +456,7 @@ it('should be able to bind the drag event', function() { runs(function() { - nodes = [{_id: 1}]; + nodes = helper.createSimpleNodes([1]); nodeShaper.drawNodes(nodes); dispatcher.bind("nodes", "drag", dispatcher.events.DRAG); @@ -490,7 +497,7 @@ it('should be able to bind the patch node event', function() { runs(function() { - nodes = [{_id: 1}]; + nodes = helper.createSimpleNodes([1]); dispatcher.bind($("svg"), "click", dispatcher.events.PATCHNODE( nodes[0], function() { @@ -521,7 +528,7 @@ it('should be able to bind the delete node event', function() { runs(function() { - nodes = [{_id: 1}]; + nodes = helper.createSimpleNodes([1]); nodeShaper.drawNodes(nodes); dispatcher.bind("nodes", "click", dispatcher.events.DELETENODE( function(node) { @@ -545,7 +552,7 @@ }); it('should be able to bind the events to create an edge', function() { - nodes = [{_id: 1}, {_id: 2}, {_id: 3}]; + nodes = helper.createSimpleNodes([1, 2, 3]); edges = [{source: nodes[0], target: nodes[2]}]; nodeShaper.drawNodes(nodes); edgeShaper.drawEdges(edges); @@ -602,11 +609,7 @@ it('should be able to bind the patch edge event', function() { runs(function() { - nodes = [{ - _id: 1 - },{ - _id: 2 - }]; + nodes = helper.createSimpleNodes([1, 2]); edges = [{source: nodes[0], target: nodes[1]}]; dispatcher.bind($("svg"), "click", dispatcher.events.PATCHEDGE( edges[0], @@ -638,11 +641,7 @@ it('should be able to bind the delete edge event', function() { runs(function() { - nodes = [{ - _id: 1 - },{ - _id: 2 - }]; + nodes = helper.createSimpleNodes([1, 2]); edges = [{source: nodes[0], target: nodes[1]}]; edgeShaper.drawEdges(edges); dispatcher.bind("edges", "click", dispatcher.events.DELETEEDGE( @@ -699,7 +698,7 @@ }); it('should be able to overwrite the event of all nodes', function() { - var nodes = [{_id: 1}], + var nodes = helper.createSimpleNodes([1]), falseCalled = false, called = false, falseCallback = function() { @@ -728,20 +727,20 @@ }); it('should be able to overwrite the event of all edges', function() { - - var n1 = {_id: 1}, - n2 = {_id: 2}, - edges = [ - {source: n1, target: n2} - ], - falseCalled = false, - called = false, - falseCallback = function() { - falseCalled = true; - }, - callback = function() { - called = true; - }; + nodes = helper.createSimpleNodes([1, 2]); + var n1 = nodes[0], + n2 = nodes[1], + edges = [ + {source: n1, target: n2} + ], + falseCalled = false, + called = false, + falseCallback = function() { + falseCalled = true; + }, + callback = function() { + called = true; + }; runs(function() { edgeShaper.drawEdges(edges); @@ -769,7 +768,7 @@ var falseCalls, called; runs(function() { - var nodes = [{_id: 1}, {_id:2}], + var nodes = helper.createSimpleNodes([1, 2]), callback = function() { called++; }, @@ -806,9 +805,10 @@ var falseCalls, called; runs(function() { - var n1 = {_id: 1}, - n2 = {_id: 2}, - n3 = {_id: 3}, + nodes = helper.createSimpleNodes([1, 2, 3]); + var n1 = nodes[0], + n2 = nodes[1], + n3 = nodes[2], edges = [ {source: n1, target: n2}, {source: n2, target: n3} diff --git a/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js b/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js index bd9b0d0c09..aea06c2e3b 100644 --- a/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js +++ b/html/admin/js/graphViewer/jasmine_test/specGraphViewer/graphViewerSpec.js @@ -55,12 +55,6 @@ describe("Graph Viewer", function() { describe('set up process', function() { - var adapterConfig; - - beforeEach(function() { - adapterConfig = {type: "json", path: "../test_data/"}; - }); - it('should throw an error if the svg is not given or incorrect', function() { expect( function() { @@ -109,6 +103,7 @@ describe("Graph Viewer", function() { }); it('should not throw an error if everything is given', function() { + var adapterConfig = {type: "json", path: "../test_data/"}; expect( function() { var t = new GraphViewer(svg, 10, 10, adapterConfig); @@ -116,125 +111,127 @@ describe("Graph Viewer", function() { ).not.toThrow(); }); - describe('GraphViewer set up correctly', function() { - - var viewer; - - beforeEach(function() { - viewer = new GraphViewer(svg, 10, 10, adapterConfig); - }); - - it('should offer the nodeShaper', function() { - expect(viewer.nodeShaper).toBeDefined(); - }); - - it('should offer the edgeShaper', function() { - expect(viewer.edgeShaper).toBeDefined(); - }); - - it('should offer the startFunction', function() { - expect(viewer.start).toBeDefined(); - }); - - it('should offer the adapter', function() { - expect(viewer.adapter).toBeDefined(); - }); - - it('should offer the layouter', function() { - expect(viewer.layouter).toBeDefined(); - }); - - it('should offer the complete config for the event dispatcher', function() { - expect(viewer.dispatcherConfig).toBeDefined(); - expect(viewer.dispatcherConfig).toEqual({ - expand: { - edges: [], - nodes: [], - startCallback: jasmine.any(Function), - loadNode: jasmine.any(Function), - reshapeNodes: jasmine.any(Function) - }, - drag: { - layouter: jasmine.any(Object) - }, - nodeEditor: { - nodes: [], - adapter: jasmine.any(Object) - }, - edgeEditor: { - edges: [], - adapter: jasmine.any(Object) - } - }); - expect(viewer.dispatcherConfig.expand).toEqual({ + + + }); + + describe('GraphViewer set up correctly', function() { + + var viewer, adapterConfig; + + beforeEach(function() { + adapterConfig = {type: "json", path: "../test_data/"}; + viewer = new GraphViewer(svg, 10, 10, adapterConfig); + }); + + it('should offer the nodeShaper', function() { + expect(viewer.nodeShaper).toBeDefined(); + }); + + it('should offer the edgeShaper', function() { + expect(viewer.edgeShaper).toBeDefined(); + }); + + it('should offer the startFunction', function() { + expect(viewer.start).toBeDefined(); + }); + + it('should offer the adapter', function() { + expect(viewer.adapter).toBeDefined(); + }); + + it('should offer the layouter', function() { + expect(viewer.layouter).toBeDefined(); + }); + + it('should offer the complete config for the event dispatcher', function() { + expect(viewer.dispatcherConfig).toBeDefined(); + expect(viewer.dispatcherConfig).toEqual({ + expand: { edges: [], nodes: [], startCallback: jasmine.any(Function), loadNode: jasmine.any(Function), reshapeNodes: jasmine.any(Function) - }); - expect(viewer.dispatcherConfig.drag).toEqual({ + }, + drag: { layouter: jasmine.any(Object) - }); - expect(viewer.dispatcherConfig.nodeEditor).toEqual({ + }, + nodeEditor: { nodes: [], adapter: jasmine.any(Object) - }); - expect(viewer.dispatcherConfig.edgeEditor).toEqual({ + }, + edgeEditor: { edges: [], adapter: jasmine.any(Object) - }); - - + } + }); + expect(viewer.dispatcherConfig.expand).toEqual({ + edges: [], + nodes: [], + startCallback: jasmine.any(Function), + loadNode: jasmine.any(Function), + reshapeNodes: jasmine.any(Function) + }); + expect(viewer.dispatcherConfig.drag).toEqual({ + layouter: jasmine.any(Object) + }); + expect(viewer.dispatcherConfig.nodeEditor).toEqual({ + nodes: [], + adapter: jasmine.any(Object) + }); + expect(viewer.dispatcherConfig.edgeEditor).toEqual({ + edges: [], + adapter: jasmine.any(Object) }); - it('should offer to load a new graph', function() { - expect(viewer.loadGraph).toBeDefined(); - }); - - it('should offer to load a new graph by attribute value', function() { - expect(viewer.loadGraphWithAttributeValue).toBeDefined(); - }); - - - it("should be able to load a root node", function() { - runs (function() { - this.addMatchers({ - toBeDisplayed: function() { - var nodes = this.actual, - nonDisplayed = []; - this.message = function(){ - var msg = "Nodes: ["; - _.each(nonDisplayed, function(n) { - msg += n + " "; - }); - msg += "] are not displayed."; - return msg; - }; - _.each(nodes, function(n) { - if ($("svg #" + n)[0] === undefined) { - nonDisplayed.push(n); - } - }); - return nonDisplayed.length === 0; - } - }); - - viewer.loadGraph(0); - }); - - // Give it a second to load - // Unfortunately there is no handle to check for changes - waits(waittime); - - runs (function() { - expect([0, 1, 2, 3, 4]).toBeDisplayed(); - }); - }); }); - }); + it('should offer to load a new graph', function() { + expect(viewer.loadGraph).toBeDefined(); + }); + + it('should offer to load a new graph by attribute value', function() { + expect(viewer.loadGraphWithAttributeValue).toBeDefined(); + }); + + + it("should be able to load a root node", function() { + runs (function() { + this.addMatchers({ + toBeDisplayed: function() { + var nodes = this.actual, + nonDisplayed = []; + this.message = function(){ + var msg = "Nodes: ["; + _.each(nonDisplayed, function(n) { + msg += n + " "; + }); + msg += "] are not displayed."; + return msg; + }; + _.each(nodes, function(n) { + if ($("svg #" + n)[0] === undefined) { + nonDisplayed.push(n); + } + }); + return nonDisplayed.length === 0; + } + }); + + viewer.loadGraph(0); + }); + // Give it a second to load + // Unfortunately there is no handle to check for changes + waits(waittime); + + runs (function() { + expect([0, 1, 2, 3, 4]).toBeDisplayed(); + }); + }); + + }); }); \ No newline at end of file