diff --git a/js/common/modules/org/arangodb/general-graph.js b/js/common/modules/org/arangodb/general-graph.js index 79b80dc33b..6f165becc6 100644 --- a/js/common/modules/org/arangodb/general-graph.js +++ b/js/common/modules/org/arangodb/general-graph.js @@ -373,6 +373,21 @@ var Graph = function(graphName, edgeDefinitions, vertexCollections, edgeCollecti _.each(vertexCollections, function(obj, key) { self[key] = obj; + var old_remove = obj.remove.bind(obj); + obj.remove = function(vertexId, options) { + var myEdges = self._EDGES(vertexId); + myEdges.forEach( + function(edgeObj) { + var edgeId = edgeObj._id; + var edgeCollection = edgeId.split("/")[0]; + if (db[edgeCollection] && db[edgeCollection].exists(edgeId)) { + db[edgeCollection].remove(edgeId); + } + } + ); + + return old_remove(vertexId, options); + } }); _.each(edgeCollections, function(obj, key) { diff --git a/js/common/tests/shell-general-graph.js b/js/common/tests/shell-general-graph.js index a9d9f6ed6b..d1496780aa 100644 --- a/js/common/tests/shell-general-graph.js +++ b/js/common/tests/shell-general-graph.js @@ -830,6 +830,20 @@ function EdgesAndVerticesSuite() { assertTrue(vertex); }, + test_vC_removeWithEdge : function () { + var vertex1 = g.unitTestVertexCollection1.save({first_name: "Tim"}); + var vertexId1 = vertex1._id; + var vertex2 = g.unitTestVertexCollection1.save({first_name: "Tom"}); + var vertexId2 = vertex2._id; + var edge = g.unitTestEdgeCollection1.save(vertexId1, vertexId2, {}); + var edgeId = edge._id; + var result = g.unitTestVertexCollection1.remove(vertexId1); + assertTrue(result); + assertFalse(db.unitTestEdgeCollection1.exists(edgeId)); + result = g.unitTestVertexCollection1.remove(vertexId2); + assertTrue(result); + }, + test_eC_save_undirected : function() { var vertex1 = g.unitTestVertexCollection1.save({first_name: "Tom"}); var vertexId1 = vertex1._id;