Tofu/tests/text/normalizeSearchText.test.js

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), '')
})