Skip to content

Commit 4e7c59c

Browse files
committed
Use field delimiter value to split arrays
1 parent cec7f5c commit 4e7c59c

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

packages/validation/src/parseValues/parseValues.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ const convertArrayValue = (value: string, fieldDefinition: SchemaField): Result<
138138

139139
/* === Start of convertArrayValue logic === */
140140
const { valueType } = fieldDefinition;
141-
const delimiter = DEFAULT_DELIMITER;
141+
const delimiter = fieldDefinition.delimiter !== undefined ? fieldDefinition.delimiter : DEFAULT_DELIMITER;
142142

143143
const normalizedValue = normalizeValue(value);
144144
if (normalizedValue === '') {

packages/validation/test/parseValues/parseField.spec.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,5 +300,24 @@ describe('Parse Values - parseFieldValue', () => {
300300
it('Boolean array field, rejects array where value is missing (two delimiters are adjacent)');
301301
expect(parseFieldValue(',true,false,TRUE', fieldBooleanArrayRequired).success).false;
302302
});
303+
describe('Custom delimiter', () => {
304+
it('Uses a `,` as the delimiter when none is defined', () => {
305+
const result = parseFieldValue(':,_,|,/', fieldStringArrayRequired);
306+
expect(result.success).true;
307+
expect(result.data).deep.equal([':', '_', '|', '/']);
308+
});
309+
it('Splits array on the delimiter when defined', () => {
310+
const customDelimiterField = { ...fieldStringArrayRequired, delimiter: '|' };
311+
const result = parseFieldValue(':,_,|,/', customDelimiterField);
312+
expect(result.success).true;
313+
expect(result.data).deep.equal([':,_,', ',/']);
314+
});
315+
it('Splits arrays with delimiters with more than 1 character', () => {
316+
const customDelimiterField = { ...fieldStringArrayRequired, delimiter: '-/-' };
317+
const result = parseFieldValue('a-/-b-/-c-/-d', customDelimiterField);
318+
expect(result.success).true;
319+
expect(result.data).deep.equal(['a', 'b', 'c', 'd']);
320+
});
321+
});
303322
});
304323
});

0 commit comments

Comments
 (0)