diff --git a/src/server/plugins/engine/components/CheckboxesField.test.ts b/src/server/plugins/engine/components/CheckboxesField.test.ts index 9f304d174..08db675eb 100644 --- a/src/server/plugins/engine/components/CheckboxesField.test.ts +++ b/src/server/plugins/engine/components/CheckboxesField.test.ts @@ -41,24 +41,6 @@ describe.each([ deny: ['5', '6', '7', '8'] } }, - { - component: { - title: 'String list title', - shortDescription: 'String list', - name: 'myComponent', - type: ComponentType.CheckboxesField, - list: 'listString', - options: {} - } satisfies CheckboxesFieldComponent, - - options: { - label: 'string list', - list: listString, - examples: listStringExamples, - allow: ['1', '2', '3', '4'], - deny: ['5', '6', '7', '8'] - } - }, { component: { title: 'Number list title', @@ -407,5 +389,43 @@ describe.each([ expect(errors.advancedSettingsErrors).toBeEmpty() }) }) + + describe('getDisplayStringFromFormValue', () => { + it('returns empty string when value is undefined', () => { + const checkboxField = field as CheckboxesField + const result = checkboxField.getDisplayStringFromFormValue(undefined) + expect(result).toBe('') + }) + + it('returns empty string when value is empty array', () => { + const checkboxField = field as CheckboxesField + const result = checkboxField.getDisplayStringFromFormValue([]) + expect(result).toBe('') + }) + + it.each([...options.examples])( + 'returns text for single selected value', + (item) => { + const checkboxField = field as CheckboxesField + const result = checkboxField.getDisplayStringFromFormValue([ + item.value + ]) + expect(result).toBe(item.text) + } + ) + + it('returns comma-separated text for multiple selected values', () => { + const checkboxField = field as CheckboxesField + const item1 = options.examples[0] + const item2 = options.examples[2] + + const result = checkboxField.getDisplayStringFromFormValue([ + item1.value, + item2.value + ]) + + expect(result).toBe(`${item1.text}, ${item2.text}`) + }) + }) }) }) diff --git a/src/server/plugins/engine/components/CheckboxesField.ts b/src/server/plugins/engine/components/CheckboxesField.ts index c3c7579c6..665b1161d 100644 --- a/src/server/plugins/engine/components/CheckboxesField.ts +++ b/src/server/plugins/engine/components/CheckboxesField.ts @@ -65,9 +65,15 @@ export class CheckboxesField extends SelectionControlField { return this.isValue(value) ? value : undefined } - getDisplayStringFromFormValue(selected: (string | number | boolean)[]) { + getDisplayStringFromFormValue( + selected: (string | number | boolean)[] | undefined + ) { const { items } = this + if (!selected) { + return '' + } + // Map selected values to text return items .filter((item) => selected.includes(item.value))