From 649ba856f612fbcb203a0c3baa8ed3ab9e318753 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Fri, 29 Jan 2016 00:28:17 -0500 Subject: [PATCH] Preset.isFallback() should return true for the `area: yes` preset --- js/id/presets/preset.js | 3 ++- test/spec/presets/preset.js | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/js/id/presets/preset.js b/js/id/presets/preset.js index 02a1e3572..9fc29ce99 100644 --- a/js/id/presets/preset.js +++ b/js/id/presets/preset.js @@ -50,7 +50,8 @@ iD.presets.Preset = function(id, preset, fields) { }; preset.isFallback = function() { - return Object.keys(preset.tags).length === 0; + var tagCount = Object.keys(preset.tags).length; + return tagCount === 0 || (tagCount === 1 && preset.tags.hasOwnProperty('area')); }; preset.reference = function(geometry) { diff --git a/test/spec/presets/preset.js b/test/spec/presets/preset.js index 6ccc77cae..f42d44f8f 100644 --- a/test/spec/presets/preset.js +++ b/test/spec/presets/preset.js @@ -48,12 +48,22 @@ describe('iD.presets.Preset', function() { describe("isFallback", function() { it("returns true if preset has no tags", function() { - var preset = iD.presets.Preset("area", {tags: {}}); + var preset = iD.presets.Preset("point", {tags: {}}); expect(preset.isFallback()).to.equal(true); }); - it("returns false if preset has tags", function() { - var preset = iD.presets.Preset("area", {tags: {building: 'yes'}}); + it("returns true if preset has a single 'area' tag", function() { + var preset = iD.presets.Preset("area", {tags: {area: 'yes'}}); + expect(preset.isFallback()).to.equal(true); + }); + + it("returns false if preset has a single non-'area' tag", function() { + var preset = iD.presets.Preset("building", {tags: {building: 'yes'}}); + expect(preset.isFallback()).to.equal(false); + }); + + it("returns false if preset has multiple tags", function() { + var preset = iD.presets.Preset("building", {tags: {area: 'yes', building: 'yes'}}); expect(preset.isFallback()).to.equal(false); }); });