mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-25 09:34:04 +02:00
fix logic bug, extend test coverage
This commit is contained in:
@@ -228,7 +228,7 @@ export function presetPreset(presetID, preset, addable, allFields, allPresets) {
|
||||
_this.fields().forEach(field => {
|
||||
if (field.matchGeometry(geometry) && field.key &&
|
||||
field.default === tags[field.key] &&
|
||||
ignoringKeys.indexOf(field.key) !== -1) {
|
||||
(!ignoringKeys || ignoringKeys.indexOf(field.key) === -1)) {
|
||||
delete tags[field.key];
|
||||
}
|
||||
});
|
||||
|
||||
@@ -202,18 +202,43 @@ describe('iD.presetPreset', function() {
|
||||
expect(preset.unsetTags({highway: 'pedestrian', area: 'yes'}, 'area')).to.eql({});
|
||||
});
|
||||
|
||||
it('preserves tags that do not match field default tags', function() {
|
||||
it('preserves tags that do not match field default value', function() {
|
||||
var isAddable = true;
|
||||
var field = iD.presetField('field', {key: 'building', geometry: 'area', default: 'yes'});
|
||||
var preset = iD.presetPreset('test', {fields: ['field']}, isAddable, {field: field});
|
||||
expect(preset.unsetTags({building: 'yep'}, 'area')).to.eql({ building: 'yep'});
|
||||
});
|
||||
|
||||
it('preserves tags that do match field default value, but do not match geometry', function() {
|
||||
var isAddable = true;
|
||||
var field = iD.presetField('field', {key: 'building', geometry: 'area', default: 'yes'});
|
||||
var preset = iD.presetPreset('test', {fields: ['field']}, isAddable, {field: field});
|
||||
expect(preset.unsetTags({building: 'yes'}, 'line')).to.eql({ building: 'yes'});
|
||||
});
|
||||
|
||||
it('preserves tags that are not listed in removeTags', function() {
|
||||
var preset = iD.presetPreset('test', {tags: {a: 'b'}, removeTags: {}});
|
||||
expect(preset.unsetTags({a: 'b'}, 'area')).to.eql({a: 'b'});
|
||||
});
|
||||
|
||||
it('preserves field default tags when "skipFieldDefaults" flag is on', function() {
|
||||
var isAddable = true;
|
||||
var field = iD.presetField('field', {key: 'building', geometry: 'area', default: 'yes'});
|
||||
var preset = iD.presetPreset('test', {fields: ['field']}, isAddable, {field: field});
|
||||
expect(preset.unsetTags({building: 'yes'}, 'area', undefined, true)).to.eql({building: 'yes'});
|
||||
});
|
||||
|
||||
it('preserves "ignoringKeys" tags', function() {
|
||||
var preset = iD.presetPreset('test', {tags: {a: 'a', b: 'b'}});
|
||||
expect(preset.unsetTags({a: 'a', b: 'b'}, 'area', ['b'])).to.eql({b: 'b'});
|
||||
});
|
||||
|
||||
it('preserves "ignoringKeys" tags from default fields', function() {
|
||||
var field = iD.presetField('field', {key: 'b', geometry: 'area', default: 'default'});
|
||||
var preset = iD.presetPreset('test', {fields: ['field']}, true, {field: field});
|
||||
expect(preset.unsetTags({b: 'default'}, 'area', ['b'])).to.eql({b: 'default'});
|
||||
});
|
||||
|
||||
it('uses tags from addTags if removeTags is not defined', function() {
|
||||
var preset = iD.presetPreset('test', {tags: {a: 'b'}, addTags: {remove: 'me'}});
|
||||
expect(preset.unsetTags({a: 'b', remove: 'me'}, 'area')).to.eql({a: 'b'});
|
||||
|
||||
Reference in New Issue
Block a user