diff --git a/apis/nucleus/src/components/listbox/utils/__tests__/frequencyMaxUtil.test.jsx b/apis/nucleus/src/components/listbox/utils/__tests__/frequencyMaxUtil.test.jsx new file mode 100644 index 000000000..13b783c48 --- /dev/null +++ b/apis/nucleus/src/components/listbox/utils/__tests__/frequencyMaxUtil.test.jsx @@ -0,0 +1,9 @@ +import { getFrequencyMaxExpression } from '../frequencyMaxUtil'; + +describe('frequencyMaxUtil - getFrequencyMaxExpression', () => { + test('should create correct expression and wrap and escape field if needed', async () => { + const result = getFrequencyMaxExpression('dimension with ] in it'); + + expect(result).toEqual('Max(AGGR(Count([dimension with ]] in it]), [dimension with ]] in it]))'); + }); +}); diff --git a/apis/nucleus/src/components/listbox/utils/frequencyMaxUtil.js b/apis/nucleus/src/components/listbox/utils/frequencyMaxUtil.js index e8d449974..d98b8b364 100644 --- a/apis/nucleus/src/components/listbox/utils/frequencyMaxUtil.js +++ b/apis/nucleus/src/components/listbox/utils/frequencyMaxUtil.js @@ -2,7 +2,10 @@ const escapeField = (field) => { if (!field) { return field; } - return `${field.replace(/\]/g, ']]')}`; + if (/^[A-Za-z][A-Za-z0-9_]*$/.test(field)) { + return field; + } + return `[${field.replace(/\]/g, ']]')}]`; }; export const needToFetchFrequencyMax = (layout) => layout?.frequencyMax === 'fetch';