From e1bc78871b04aa5a5a6800f2204b808908c1331c Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 7 Feb 2013 13:46:06 -0800 Subject: [PATCH] Handle entities that are already deleted (fixes #672) --- js/id/actions/delete_multiple.js | 5 ++++- test/spec/actions/delete_multiple.js | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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; + }); });