add ignore-list for presets which should not be checked for suspicious names

closes #10884
This commit is contained in:
Martin Raifer
2025-03-17 13:48:38 +01:00
parent 58cb5a0b80
commit 6ec6917dbc
2 changed files with 17 additions and 4 deletions

View File

@@ -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());

View File

@@ -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);
});
});