25 lines
1 KiB
JavaScript
25 lines
1 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { joinIngredientNames } from '#tofu/tools/text/joinIngredientNames.js'
|
|
import { splitIngredientLine } from '#tofu/tools/text/splitIngredientLine.js'
|
|
|
|
test('joins the names with a comma and a space', () => {
|
|
assert.equal(joinIngredientNames(['gnocchis', 'beurre', 'sauge']), 'gnocchis, beurre, sauge')
|
|
})
|
|
|
|
test('ignores empty names and trims the kept ones', () => {
|
|
assert.equal(joinIngredientNames(['farine', '', ' ', ' lait ']), 'farine, lait')
|
|
assert.equal(joinIngredientNames([null, 'sel', undefined, 7]), 'sel')
|
|
})
|
|
|
|
test('returns an empty string for an empty or invalid list', () => {
|
|
assert.equal(joinIngredientNames([]), '')
|
|
assert.equal(joinIngredientNames(['', ' ']), '')
|
|
assert.equal(joinIngredientNames(null), '')
|
|
assert.equal(joinIngredientNames(undefined), '')
|
|
})
|
|
|
|
test('round trips with splitIngredientLine', () => {
|
|
const line = 'gnocchis, beurre, sauge, parmesan'
|
|
assert.equal(joinIngredientNames(splitIngredientLine(line)), line)
|
|
})
|