31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { normalizeSearchText } from '#tofu/tools/text/normalizeSearchText.js'
|
|
|
|
test('removes diacritics and lowercases', () => {
|
|
assert.equal(normalizeSearchText('Gnocchis à la sauge'), 'gnocchis a la sauge')
|
|
assert.equal(normalizeSearchText('Crêpes'), 'crepes')
|
|
assert.equal(normalizeSearchText('Bœuf Façon Grand-Mère'), 'bœuf facon grand mere')
|
|
})
|
|
|
|
test('turns punctuation into single spaces and trims', () => {
|
|
assert.equal(normalizeSearchText(" Tarte aux pommes, sucre ! "), 'tarte aux pommes sucre')
|
|
assert.equal(normalizeSearchText("l'ail\tdu\njardin"), 'l ail du jardin')
|
|
})
|
|
|
|
test('keeps digits', () => {
|
|
assert.equal(normalizeSearchText('Gâteau 4 quarts'), 'gateau 4 quarts')
|
|
})
|
|
|
|
test('is idempotent', () => {
|
|
const once = normalizeSearchText('Poulet rôti, thym')
|
|
assert.equal(normalizeSearchText(once), once)
|
|
})
|
|
|
|
test('returns an empty string for anything that is not a string', () => {
|
|
assert.equal(normalizeSearchText(''), '')
|
|
assert.equal(normalizeSearchText(' '), '')
|
|
assert.equal(normalizeSearchText(null), '')
|
|
assert.equal(normalizeSearchText(undefined), '')
|
|
assert.equal(normalizeSearchText(42), '')
|
|
})
|