Tofu/scripts/import-recipes/tests/decodeXmlEntities.test.js
2026-09-18 01:41:02 +02:00

25 lines
1 KiB
JavaScript

import { test } from 'node:test'
import assert from 'node:assert/strict'
import { decodeXmlEntities } from '#import-recipes/odt/decodeXmlEntities.js'
test('decodes the five named XML entities', () => {
assert.equal(decodeXmlEntities('sel & poivre'), 'sel & poivre')
assert.equal(decodeXmlEntities('&lt;plat&gt;'), '<plat>')
assert.equal(decodeXmlEntities('d&apos;huile'), "d'huile")
assert.equal(decodeXmlEntities('&quot;maison&quot;'), '"maison"')
})
test('decodes decimal and hexadecimal character references', () => {
assert.equal(decodeXmlEntities('cr&#232;me'), 'crème')
assert.equal(decodeXmlEntities('cr&#xE8;me'), 'crème')
assert.equal(decodeXmlEntities('180 &#176;C'), '180 °C')
})
test('leaves unknown or out-of-range references untouched', () => {
assert.equal(decodeXmlEntities('AT&amp;T &eacute; &#99999999;'), 'AT&T &eacute; &#99999999;')
})
test('returns an empty string for anything that is not a string', () => {
assert.equal(decodeXmlEntities(null), '')
assert.equal(decodeXmlEntities(undefined), '')
})