1
0
Fork 0

GraphViewer: Added Spec for Search by Attribute on the GraphViewerUI

This commit is contained in:
Michael Hackstein 2013-04-16 12:00:45 +02:00
parent 5557dbc729
commit 211ee118c3
2 changed files with 92 additions and 20 deletions

View File

@ -127,32 +127,32 @@ function JSONAdapter(jsonPath, nodes, edges, width, height) {
}); });
}; };
self.loadNodeFromTreeByAttributeValue = function(attribute, value, callback){ self.loadNodeFromTreeByAttributeValue = function(attribute, value, callback) {
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.createEdge = function(edgeToCreate, callback){ self.createEdge = function(edgeToCreate, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.deleteEdge = function(edgeToDelete, callback){ self.deleteEdge = function(edgeToDelete, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.patchEdge = function(edgeToPatch, patchData, callback){ self.patchEdge = function(edgeToPatch, patchData, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.createNode = function(nodeToCreate, callback){ self.createNode = function(nodeToCreate, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.deleteNode = function(nodeToDelete, callback){ self.deleteNode = function(nodeToDelete, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };
self.patchNode = function(nodeToPatch, patchData, callback){ self.patchNode = function(nodeToPatch, patchData, callback){
alert("Sorry this adapter is read-only"); throw "Sorry this adapter is read-only";
}; };

View File

@ -42,9 +42,23 @@
var div, var div,
ui, ui,
adapterConfig; adapterConfig,
adapterMockCall;
beforeEach(function() { beforeEach(function() {
//Mock for jsonAdapter
var tmp = JSONAdapter;
JSONAdapter = function (jsonPath, nodes, edges, width, height) {
var r = new tmp(jsonPath, nodes, edges, width, height);
r.loadNodeFromTreeByAttributeValue = function(attribute, value, callback) {
adapterMockCall = {
attribute: attribute,
value: value
}
}
return r;
}
div = document.createElement("div"); div = document.createElement("div");
div.id = "contentDiv"; div.id = "contentDiv";
div.style.width = "200px"; div.style.width = "200px";
@ -194,12 +208,13 @@
*/ */
it('should contain a field to load a node by attribute', function() { it('should contain a field to load a node by attribute', function() {
expect($("#contentDiv #menubar #attribute").length).toEqual(1); var barSelector = "#contentDiv #menubar";
expect($("#contentDiv #menubar #value").length).toEqual(1); expect($(barSelector + " #attribute").length).toEqual(1);
expect($("#contentDiv #menubar #loadnode").length).toEqual(1); expect($(barSelector + " #value").length).toEqual(1);
var attrfield = $("#contentDiv #menubar #attribute")[0], expect($(barSelector + " #loadnode").length).toEqual(1);
valfield = $("#contentDiv #menubar #value")[0], var attrfield = $(barSelector + " #attribute")[0],
btn = $("#contentDiv #menubar #loadnode")[0]; valfield = $(barSelector + " #value")[0],
btn = $(barSelector + " #loadnode")[0];
expect(attrfield).toBeTag("input"); expect(attrfield).toBeTag("input");
expect(attrfield.type).toEqual("text"); expect(attrfield.type).toEqual("text");
expect(attrfield.className).toEqual("searchInput"); expect(attrfield.className).toEqual("searchInput");
@ -280,9 +295,68 @@
}); });
}); });
describe('checking to load a graph', function() {
var waittime = 100;
beforeEach(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;
}
});
});
it('should load the graph by _id', function() {
runs(function() {
$("#contentDiv #menubar #value").attr("value", "0");
helper.simulateMouseEvent("click", "loadnode");
});
waits(waittime);
runs(function() {
expect([0, 1, 2, 3, 4]).toBeDisplayed();
});
});
it('should load the graph by attribute and value', function() {
runs(function() {
adapterMockCall = {};
$("#contentDiv #menubar #attribute").attr("value", "name");
$("#contentDiv #menubar #value").attr("value", "0");
helper.simulateMouseEvent("click", "loadnode");
expect(adapterMockCall).toEqual({
attribute: "name",
value: "0"
});
});
});
});
describe('set up with jsonAdapter and click Expand rest default', function() { describe('set up with jsonAdapter and click Expand rest default', function() {
// This waittime is rather opcimistic, on a slow machine this has to be increased // This waittime is rather optimistic, on a slow machine this has to be increased
var waittime = 100, var waittime = 100,
clickOnNode = function(id) { clickOnNode = function(id) {
@ -346,7 +420,7 @@
}); });
runs (function() { runs (function() {
$("#contentDiv #menubar #nodeid").attr("value", "0"); $("#contentDiv #menubar #value").attr("value", "0");
helper.simulateMouseEvent("click", "loadnode"); helper.simulateMouseEvent("click", "loadnode");
helper.simulateMouseEvent("click", "control_expand"); helper.simulateMouseEvent("click", "control_expand");
}); });
@ -355,9 +429,7 @@
}); });
it('should have loaded the graph', function() {
expect([0, 1, 2, 3, 4]).toBeDisplayed();
});
it("should be able to expand a node", function() { it("should be able to expand a node", function() {