From 6ec6917dbcdd39770816b411fed7670f5351fe3f Mon Sep 17 00:00:00 2001 From: Martin Raifer Date: Mon, 17 Mar 2025 13:48:38 +0100 Subject: [PATCH] add ignore-list for presets which should not be checked for suspicious names closes #10884 --- modules/validations/suspicious_name.js | 5 +++++ test/spec/validations/suspicious_name.js | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/validations/suspicious_name.js b/modules/validations/suspicious_name.js index ba071377e..5573bf5d2 100644 --- a/modules/validations/suspicious_name.js +++ b/modules/validations/suspicious_name.js @@ -11,6 +11,10 @@ export function validationSuspiciousName(context) { 'aerialway', 'aeroway', 'amenity', 'building', 'craft', 'highway', 'leisure', 'railway', 'man_made', 'office', 'shop', 'tourism', 'waterway' ]; + const ignoredPresets = new Set([ + 'amenity/place_of_worship/christian/jehovahs_witness', + '__test__ignored_preset' // for unit tests + ]); let _waitingForNsi = false; @@ -48,6 +52,7 @@ export function validationSuspiciousName(context) { /** @param {string} name */ function nameMatchesPresetName(name, preset) { if (!preset) return false; + if (ignoredPresets.has(preset.id)) return false; name = name.toLowerCase(); return name === preset.name().toLowerCase() || preset.aliases().some(alias => name === alias.toLowerCase()); diff --git a/test/spec/validations/suspicious_name.js b/test/spec/validations/suspicious_name.js index e2243f1af..c618f8520 100644 --- a/test/spec/validations/suspicious_name.js +++ b/test/spec/validations/suspicious_name.js @@ -1,5 +1,3 @@ -import { setTimeout } from 'node:timers/promises'; - describe('iD.validations.suspicious_name', function () { var context; @@ -34,8 +32,9 @@ describe('iD.validations.suspicious_name', function () { genericWords: ['^stores?$'] }; iD.fileFetcher.cache().preset_presets = { - 'Velero': { tags: { craft: 'sailmaker' }, aliases: ['Velaio'], geometry: ['line'] }, - 'Constructor de barco': { tags: { craft: 'boatbuilder' }, geometry: ['line'] }, + 'preset1': { tags: { craft: 'sailmaker' }, geometry: ['line'], name: 'Velero', aliases: ['Velaio'] }, + 'preset2': { tags: { craft: 'boatbuilder' }, geometry: ['line'], name: 'Constructor de barco' }, + '__test__ignored_preset': { tags: { foo: 'bar' }, geometry: ['line'], name: 'Foo Bar' }, }; }); @@ -205,4 +204,13 @@ describe('iD.validations.suspicious_name', function () { expect(issues[1].type).to.eql('suspicious_name'); expect(issues[1].hash).to.eql('name=cOnStRuCtOr de barco'); }); + + it('ignores feature with a name that matches an ignored preset\'s name', async () => { + await iD.presetManager.ensureLoaded(true); + createWay({ foo: 'bar', name: 'Foo Bar' }); + const validator = iD.validationSuspiciousName(context); + + const issues = validate(validator); + expect(issues).to.have.lengthOf(0); + }); });