diff --git a/application/source/dom/util/extract-keys.mjs b/application/source/dom/util/extract-keys.mjs index a95989102dcb504e7c435abba29c5bbb97b7923d..976be3a30eb70cfc372051605eff6bc93293433b 100644 --- a/application/source/dom/util/extract-keys.mjs +++ b/application/source/dom/util/extract-keys.mjs @@ -22,7 +22,7 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = " function helper(currentObj, currentKeyPrefix, currentValuePrefix) { for (const key in currentObj) { - if (typeof currentObj[key] === "object" && !Array.isArray(currentObj[key])) { + if (currentObj[key] !== null && typeof currentObj[key] === "object" && !Array.isArray(currentObj[key])) { const newKeyPrefix = currentKeyPrefix ? currentKeyPrefix + keySeparator + key.toLowerCase() : key.toLowerCase(); @@ -41,3 +41,4 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = " helper(obj, keyPrefix, keyPrefix); return resultMap; } + diff --git a/development/test/cases/dom/util/extract-keys.mjs b/development/test/cases/dom/util/extract-keys.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ca5396b13e08c562372fabba14b0e74c4ecc010f --- /dev/null +++ b/development/test/cases/dom/util/extract-keys.mjs @@ -0,0 +1,64 @@ +import {expect} from 'chai'; +import {extractKeys} from "../../../../../application/source/dom/util/extract-keys.mjs"; + + +describe('extractKeys', () => { + it('should extract keys from the given object', () => { + const obj = { + firstName: 'John', + lastName: 'Doe', + address: { + street: '123 Main St', + city: 'New York', + }, + }; + + const expected = new Map([ + ['firstname', 'firstName'], + ['lastname', 'lastName'], + ['address-street', 'address.street'], + ['address-city', 'address.city'], + ]); + + const result = extractKeys(obj); + + expect(JSON.stringify(Array.from(result))).to.equal(JSON.stringify(Array.from(expected))); + }); + + it('should use custom key and value separators', () => { + const obj = { + firstName: 'John', + lastName: 'Doe', + }; + + const expected = new Map([ + ['prefix+firstname', 'prefix+firstName'], + ['prefix+lastname', 'prefix+lastName'], + ]); + + const result = extractKeys(obj, 'prefix', '+', '+'); + + expect(JSON.stringify(Array.from(result))).to.equal(JSON.stringify(Array.from(expected))); + }); + + it('check if value is null', () => { + const obj = { + firstName: 'John', + lastName: 'Doe', + address: null, + }; + + const expected = new Map([ + ['firstname', 'firstName'], + ['lastname', 'lastName'], + ['address', 'address'], + + ]); + + const result = extractKeys(obj); + + expect(JSON.stringify(Array.from(result))).to.equal(JSON.stringify(Array.from(expected))); + }); + + // Add more test cases as needed +});