diff --git a/html/admin/js/graphViewer/jasmine_test/specAdapter/arangoAdapterSpec.js b/html/admin/js/graphViewer/jasmine_test/specAdapter/arangoAdapterSpec.js
index 11727f4fc0..13f6e5acea 100644
--- a/html/admin/js/graphViewer/jasmine_test/specAdapter/arangoAdapterSpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specAdapter/arangoAdapterSpec.js
@@ -4,7 +4,7 @@
/*global runs, spyOn, waitsFor, waits */
/*global window, eb, loadFixtures, document */
/*global $, _, d3*/
-/*global describeInterface*/
+/*global describeInterface, describeIntegeration*/
/*global ArangoAdapter*/
////////////////////////////////////////////////////////////////////////////////
@@ -45,6 +45,59 @@
edgeCollection: ""
}));
+ describeIntegeration(function() {
+ spyOn($, "ajax").andCallFake(function(req) {
+ var node1 = {_id: 1},
+ node2 = {_id: 2},
+ edge = {_id: "1-2", _from: 1, _to: 2};
+
+ switch(req.type) {
+ case "DELETE":
+ req.success();
+ break;
+ case "POST":
+ if (req.url.match(/_api\/cursor$/)) {
+ req.success({result:
+ [
+ [{
+ vertex: node1,
+ path: {
+ edges: [],
+ vertices: [
+ node1
+ ]
+ }
+
+ },{
+ vertex: node2,
+ path: {
+ edges: [
+ edge
+ ],
+ vertices: [
+ node1,
+ node2
+ ]
+ }
+ }]
+ ]});
+ } else if (req.url.match(/_api\/edge/)) {
+ req.success({_id: "1-2"});
+ } else {
+ req.success({_id: 1});
+ }
+ break;
+ default:
+ req.success();
+ }
+ });
+
+ return new ArangoAdapter([], [], {
+ nodeCollection: "",
+ edgeCollection: ""
+ });
+ });
+
var adapter,
nodes,
edges,
@@ -1707,7 +1760,7 @@
});
-
+
});
diff --git a/html/admin/js/graphViewer/jasmine_test/specAdapter/interfaceSpec.js b/html/admin/js/graphViewer/jasmine_test/specAdapter/interfaceSpec.js
index 1b41efa18d..22529ca120 100644
--- a/html/admin/js/graphViewer/jasmine_test/specAdapter/interfaceSpec.js
+++ b/html/admin/js/graphViewer/jasmine_test/specAdapter/interfaceSpec.js
@@ -1,5 +1,6 @@
/*jslint indent: 2, nomen: true, maxlen: 100, white: true plusplus: true */
-/*global it, expect, describe*/
+/*global it, expect, describe, beforeEach*/
+/*global spyOn, jasmine, window*/
////////////////////////////////////////////////////////////////////////////////
@@ -76,7 +77,127 @@ var describeInterface = function (testee) {
};
-var describeIntegeration = function(testee) {
+/**
+* Expectations on constructor:
+* loadNode -> Adds {_id: 1} -{_id:"1-2"}-> {_id: 2}
+* createEdge({source: {_id: 1}, target: {_id: 1}}) -> {_id: "1-2", _from:1, _to:2}
+* createNode({}) -> {_id: 1}
+*
+*/
+
+var describeIntegeration = function(constructor) {
"use strict";
+ describe('checking integeration of the abstract adapter', function() {
+
+ var mockedAbstract, testee;
+
+ beforeEach(function() {
+ mockedAbstract = {
+ edges: [],
+ nodes: [],
+ setWidth: function(){},
+ setHeight: function(){},
+ insertNode: function(data){
+ var node = {
+ _data: data,
+ _id: data._id
+ }, i;
+ for (i = 0; i < this.nodes.length; i++) {
+ if (this.nodes[i]._id === node._id) {
+ return this.nodes[i];
+ }
+ }
+ this.nodes.push(node);
+ return node;
+ },
+ insertEdge: function(){},
+ removeNode: function(){},
+ removeEdge: function(){},
+ removeEdgesForNode: function(){},
+ expandCommunity: function(){},
+ setNodeLimit: function(){},
+ setChildLimit: function(){},
+ checkSizeOfInserted: function(){},
+ checkNodeLimit: function(){}
+ };
+
+
+ spyOn(window, "AbstractAdapter").andCallFake(function(nodes, edges) {
+ mockedAbstract.nodes = nodes;
+ mockedAbstract.edges = edges;
+ return mockedAbstract;
+ });
+ });
+
+ it('should call setNodeLimit on the abstract', function() {
+ spyOn(mockedAbstract, "setNodeLimit");
+ testee = constructor();
+ testee.setNodeLimit(5, function(){});
+ expect(mockedAbstract.setNodeLimit).wasCalledWith(5, jasmine.any(Function));
+ });
+
+ it('should call setChildLimit on the abstract', function() {
+ spyOn(mockedAbstract, "setChildLimit");
+ testee = constructor();
+ testee.setChildLimit(5);
+ expect(mockedAbstract.setChildLimit).wasCalledWith(5);
+ });
+
+ it('should call expandCommunity on the abstract', function() {
+ spyOn(mockedAbstract, "expandCommunity");
+ var comm = {};
+ testee = constructor();
+ testee.expandCommunity(comm);
+ expect(mockedAbstract.expandCommunity).wasCalledWith(comm);
+ });
+
+ it('should use the abstract to insert objects from loadNode', function() {
+ spyOn(mockedAbstract, "insertNode").andCallThrough();
+ spyOn(mockedAbstract, "insertEdge").andCallThrough();
+ spyOn(mockedAbstract, "checkSizeOfInserted");
+ spyOn(mockedAbstract, "checkNodeLimit");
+ testee = constructor();
+ testee.loadNode(1);
+ expect(mockedAbstract.insertNode).wasCalledWith({_id: 1});
+ expect(mockedAbstract.insertNode).wasCalledWith({_id: 2});
+ expect(mockedAbstract.insertEdge).wasCalledWith({_id: "1-2", _from: 1, _to: 2});
+ expect(mockedAbstract.checkSizeOfInserted).wasCalledWith({2: mockedAbstract.nodes[1]});
+ expect(mockedAbstract.checkNodeLimit).wasCalledWith(mockedAbstract.nodes[0]);
+ });
+
+ it('should insert an edge on createEdge', function() {
+ spyOn(mockedAbstract, "insertEdge");
+ testee = constructor();
+ testee.createEdge({source: {_id: 1}, target: {_id: 2}}, function(){});
+ expect(mockedAbstract.insertEdge).wasCalledWith({_id: "1-2", _from: 1, _to: 2});
+ });
+
+ it('should remove an edge on deleteEdge', function() {
+ spyOn(mockedAbstract, "removeEdge");
+ testee = constructor();
+ var edge = {_id: "1-2", _from: 1, _to: 2};
+ testee.deleteEdge(edge);
+ expect(mockedAbstract.removeEdge).wasCalledWith(edge);
+ });
+
+ it('should insert a node on createNode', function() {
+ spyOn(mockedAbstract, "insertNode");
+ testee = constructor();
+ testee.createNode({}, function(){});
+ expect(mockedAbstract.insertNode).wasCalledWith({_id: 1});
+ });
+
+ it('should remove a node on deleteNode', function() {
+ spyOn(mockedAbstract, "removeNode");
+ spyOn(mockedAbstract, "removeEdgesForNode");
+ testee = constructor();
+ var node = {_id: 1};
+ testee.deleteNode(node);
+ expect(mockedAbstract.removeEdgesForNode).wasCalledWith(node);
+ expect(mockedAbstract.removeNode).wasCalledWith(node);
+ });
+
+ });
+
};