From 40526764bf64a4d1665f27c947fb5d07b767fc08 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 29 May 2013 08:44:59 -0700 Subject: [PATCH] Test / fix ChangePreset action --- js/id/actions/change_preset.js | 4 ++-- test/index.html | 2 ++ test/index_packaged.html | 1 + test/spec/actions/change_preset.js | 25 +++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test/spec/actions/change_preset.js diff --git a/js/id/actions/change_preset.js b/js/id/actions/change_preset.js index dbebf2890..7688b8c10 100644 --- a/js/id/actions/change_preset.js +++ b/js/id/actions/change_preset.js @@ -4,8 +4,8 @@ iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) { geometry = entity.geometry(graph), tags = entity.tags; - tags = oldPreset.removeTags(tags, geometry); - tags = newPreset.applyTags(tags, geometry); + if (oldPreset) tags = oldPreset.removeTags(tags, geometry); + if (newPreset) tags = newPreset.applyTags(tags, geometry); return graph.replace(entity.update({tags: tags})); }; diff --git a/test/index.html b/test/index.html index 4d1ecd030..ebca79ffd 100644 --- a/test/index.html +++ b/test/index.html @@ -105,6 +105,7 @@ + @@ -189,6 +190,7 @@ + diff --git a/test/index_packaged.html b/test/index_packaged.html index a7a482f51..45996b56a 100644 --- a/test/index_packaged.html +++ b/test/index_packaged.html @@ -28,6 +28,7 @@ + diff --git a/test/spec/actions/change_preset.js b/test/spec/actions/change_preset.js new file mode 100644 index 000000000..915182fe5 --- /dev/null +++ b/test/spec/actions/change_preset.js @@ -0,0 +1,25 @@ +describe("iD.actions.ChangePreset", function() { + var oldPreset = iD.presets.Preset('old', {tags: {old: 'true'}}), + newPreset = iD.presets.Preset('new', {tags: {new: 'true'}}); + + it("changes from one preset's tags to another's", function() { + var entity = iD.Node({tags: {old: 'true'}}), + graph = iD.Graph([entity]), + action = iD.actions.ChangePreset(entity.id, oldPreset, newPreset); + expect(action(graph).entity(entity.id).tags).to.eql({new: 'true'}); + }); + + it("adds the tags of a new preset to an entity without an old preset", function() { + var entity = iD.Node(), + graph = iD.Graph([entity]), + action = iD.actions.ChangePreset(entity.id, null, newPreset); + expect(action(graph).entity(entity.id).tags).to.eql({new: 'true'}); + }); + + it("removes the tags of an old preset from an entity without a new preset", function() { + var entity = iD.Node({tags: {old: 'true'}}), + graph = iD.Graph([entity]), + action = iD.actions.ChangePreset(entity.id, oldPreset, null); + expect(action(graph).entity(entity.id).tags).to.eql({}); + }); +});