- Zielmonat/-jahr aus month-select/year-select statt veraltetem app.currentMonth (stand fix auf heute) - normalizeName entfernt Anreden/Titel (Herr/Frau/Dr.) -> matcht titellose Mitarbeiter, kein Doppelanlegen - Regression aus Sync-Boot behoben: app.js erzeugt imageImporter nach window.app (DOMContentLoaded-Listener lief zu frueh) - totes app.currentMonth/currentYear entfernt; SW-Cache v5->v6
44 lines
2 KiB
JavaScript
44 lines
2 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert');
|
|
const ImageImporter = require('./image-import.js');
|
|
|
|
const imp = new ImageImporter(null);
|
|
|
|
test('normalizeName entfernt Anrede/Titel (auch gestapelt)', () => {
|
|
assert.strictEqual(imp.normalizeName('Herr Alsholi'), 'alsholi');
|
|
assert.strictEqual(imp.normalizeName('Frau Cabrera'), 'cabrera');
|
|
assert.strictEqual(imp.normalizeName('Herr Dr. Azizi'), 'azizi');
|
|
assert.strictEqual(imp.normalizeName('Hr. Schierholz'), 'schierholz');
|
|
assert.strictEqual(imp.normalizeName('Prof. Müller'), 'müller');
|
|
});
|
|
|
|
test('normalizeName laesst titellose Namen unveraendert', () => {
|
|
assert.strictEqual(imp.normalizeName('Alsholi'), 'alsholi');
|
|
assert.strictEqual(imp.normalizeName(' Elsharawy '), 'elsharawy');
|
|
// "Frei" darf nicht als Titel "fr" fehlinterpretiert werden (kein Space danach)
|
|
assert.strictEqual(imp.normalizeName('Frei'), 'frei');
|
|
});
|
|
|
|
test('matchNames matcht Titel-Namen auf titellose Mitarbeiter (kein Doppelanlegen)', () => {
|
|
const entries = [
|
|
{ name: 'Herr Alsholi', date: '2026-06-10', share: 1.0 },
|
|
{ name: 'Frau Cabrera', date: '2026-06-11', share: 1.0 },
|
|
{ name: 'Herr Dr. Azizi', date: '2026-06-02', share: 1.0 },
|
|
];
|
|
const existing = ['Alsholi', 'Cabrera', 'Azizi'];
|
|
const { matched, unknowns } = imp.matchNames(entries, existing);
|
|
assert.strictEqual(unknowns.length, 0, 'keine Unbekannten mehr');
|
|
assert.strictEqual(matched.length, 3);
|
|
assert.strictEqual(matched[0].resolvedName, 'Alsholi');
|
|
assert.strictEqual(matched[1].resolvedName, 'Cabrera');
|
|
assert.strictEqual(matched[2].resolvedName, 'Azizi');
|
|
});
|
|
|
|
test('matchNames meldet echten Unbekannten weiterhin als unknown', () => {
|
|
const entries = [{ name: 'Herr Weiszflog', date: '2026-06-10', share: 1.0 }];
|
|
const existing = ['Alsholi', 'Cabrera'];
|
|
const { matched, unknowns } = imp.matchNames(entries, existing);
|
|
assert.strictEqual(matched.length, 0);
|
|
assert.strictEqual(unknowns.length, 1);
|
|
assert.strictEqual(unknowns[0].candidate, 'Herr Weiszflog');
|
|
});
|