diff --git a/js/id/actions/move_way.js b/js/id/actions/move_way.js index 8301539c4..09ab8fd50 100644 --- a/js/id/actions/move_way.js +++ b/js/id/actions/move_way.js @@ -1,14 +1,14 @@ iD.actions.MoveWay = function(wayId, delta, projection) { return function(graph) { - return graph.update(function (graph) { - var way = graph.entity(wayId); + var way = graph.entity(wayId); - _.uniq(way.nodes).forEach(function (id) { - var node = graph.entity(id), - start = projection(node.loc), - end = projection.invert([start[0] + delta[0], start[1] + delta[1]]); - graph = graph.replace(node.move(end)); - }); + _.uniq(way.nodes).forEach(function(id) { + var node = graph.entity(id), + start = projection(node.loc), + end = projection.invert([start[0] + delta[0], start[1] + delta[1]]); + graph = graph.replace(node.move(end)); }); + + return graph; }; }; diff --git a/js/id/graph/history.js b/js/id/graph/history.js index a1865715e..c71ba0c38 100644 --- a/js/id/graph/history.js +++ b/js/id/graph/history.js @@ -12,10 +12,11 @@ iD.History = function() { annotation = actions.pop(); } - var graph = stack[index].graph; - for (var i = 0; i < actions.length; i++) { - graph = actions[i](graph); - } + var graph = stack[index].graph.update(function (graph) { + for (var i = 0; i < actions.length; i++) { + graph = actions[i](graph); + } + }); return {graph: graph, annotation: annotation, imagery_used: imagery_used}; } diff --git a/test/spec/graph/history.js b/test/spec/graph/history.js index 309d396a1..0b6f21608 100644 --- a/test/spec/graph/history.js +++ b/test/spec/graph/history.js @@ -15,9 +15,9 @@ describe("iD.History", function () { describe("#perform", function () { it("updates the graph", function () { - var graph = iD.Graph(); - history.perform(d3.functor(graph)); - expect(history.graph()).to.equal(graph); + var node = iD.Node(); + history.perform(function (graph) { return graph.replace(node); }); + expect(history.graph().entity(node.id)).to.equal(node); }); it("pushes an undo annotation", function () { @@ -43,9 +43,9 @@ describe("iD.History", function () { describe("#replace", function () { it("updates the graph", function () { - var graph = iD.Graph(); - history.replace(d3.functor(graph)); - expect(history.graph()).to.equal(graph); + var node = iD.Node(); + history.replace(function (graph) { return graph.replace(node); }); + expect(history.graph().entity(node.id)).to.equal(node); }); it("replaces the undo annotation", function () {