diff --git a/js/id/core/difference.js b/js/id/core/difference.js index 12ba48bc3..9be2ad124 100644 --- a/js/id/core/difference.js +++ b/js/id/core/difference.js @@ -118,8 +118,8 @@ iD.Difference = function(base, head) { addEntity(change.base, base, 'deleted'); } else if (change.base && change.head) { // modified vertex - var moved = change.base.loc !== change.head.loc, - retagged = change.base.tags !== change.head.tags; + var moved = !_.isEqual(change.base.loc, change.head.loc), + retagged = !_.isEqual(change.base.tags, change.head.tags); if (moved) { addParents(change.head); diff --git a/test/spec/core/difference.js b/test/spec/core/difference.js index a7920e87c..671950cd5 100644 --- a/test/spec/core/difference.js +++ b/test/spec/core/difference.js @@ -265,6 +265,18 @@ describe("iD.Difference", function () { }]); }); + it("does not report a vertex as modified when it is moved and has no-op tag changes", function() { + var vertex = base.entity('b').update({tags: {}, loc: [1, 2]}), + head = base.replace(vertex), + diff = iD.Difference(base, head); + + expect(diff.summary()).to.eql([{ + changeType: 'modified', + entity: head.entity('-'), + graph: head + }]); + }); + it("reports a vertex as deleted when it had tags", function() { var vertex = base.entity('v'), head = base.remove(vertex),