olivetin/frontend/resources/vue/utils/choiceChecklistHelpers.test...

40 lines
1.3 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import {
allChoiceValues,
choiceLabel,
formatChecklistValue,
parseChecklistValue,
toggleChoice
} from './choiceChecklistHelpers.js'
const choices = [
{ title: 'Documents', value: 'documents' },
{ title: 'Photos', value: 'photos' }
]
test('parseChecklistValue splits comma-delimited values', () => {
assert.deepEqual(parseChecklistValue('documents,photos'), ['documents', 'photos'])
assert.deepEqual(parseChecklistValue(''), [])
})
test('formatChecklistValue joins selected values', () => {
assert.equal(formatChecklistValue(['documents', 'photos']), 'documents,photos')
assert.equal(formatChecklistValue([]), '')
})
test('toggleChoice adds and removes values', () => {
assert.deepEqual(toggleChoice([], 'documents'), ['documents'])
assert.deepEqual(toggleChoice(['documents'], 'photos'), ['documents', 'photos'])
assert.deepEqual(toggleChoice(['documents', 'photos'], 'documents'), ['photos'])
})
test('choiceLabel prefers title over value', () => {
assert.equal(choiceLabel(choices[0]), 'Documents')
assert.equal(choiceLabel({ value: 'music' }), 'music')
})
test('allChoiceValues returns every choice value', () => {
assert.deepEqual(allChoiceValues(choices), ['documents', 'photos'])
})