From fbf2118c76f5f57d12c9a12a8817ac29aa851371 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 23 Oct 2013 17:35:35 -0700 Subject: [PATCH] Fix change summary calculation after restoring We can't rely on identity equality here due to how restoring works, and don't want to anyway -- the summary should ignore net-no-op tag changes. Fixes #1915. --- js/id/core/difference.js | 4 ++-- test/spec/core/difference.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) 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),