diff --git a/js/id/actions/delete_multiple.js b/js/id/actions/delete_multiple.js index 839c1d780..a33dba4de 100644 --- a/js/id/actions/delete_multiple.js +++ b/js/id/actions/delete_multiple.js @@ -7,7 +7,10 @@ iD.actions.DeleteMultiple = function(ids) { }; ids.forEach(function (id) { - graph = actions[graph.entity(id).type](id)(graph); + var entity = graph.entity(id); + if (entity) { // It may have been deleted aready. + graph = actions[entity.type](id)(graph); + } }); return graph; diff --git a/test/spec/actions/delete_multiple.js b/test/spec/actions/delete_multiple.js index 3a70adc38..85329b7a8 100644 --- a/test/spec/actions/delete_multiple.js +++ b/test/spec/actions/delete_multiple.js @@ -9,4 +9,13 @@ describe("iD.actions.DeleteMultiple", function () { expect(graph.entity(w.id)).to.be.undefined; expect(graph.entity(r.id)).to.be.undefined; }); + + it("deletes a way and one of its nodes", function () { + var n = iD.Node(), + w = iD.Way({nodes: [n.id]}), + action = iD.actions.DeleteMultiple([w.id, n.id]), + graph = action(iD.Graph([n, w])); + expect(graph.entity(w.id)).to.be.undefined; + expect(graph.entity(n.id)).to.be.undefined; + }); });