Skip to content
Snippets Groups Projects
Verified Commit 130b723d authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix: issue #121 bug in extractKeys

parent 4e7146e8
No related branches found
No related tags found
No related merge requests found
...@@ -22,7 +22,7 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = " ...@@ -22,7 +22,7 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = "
function helper(currentObj, currentKeyPrefix, currentValuePrefix) { function helper(currentObj, currentKeyPrefix, currentValuePrefix) {
for (const key in currentObj) { 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 const newKeyPrefix = currentKeyPrefix
? currentKeyPrefix + keySeparator + key.toLowerCase() ? currentKeyPrefix + keySeparator + key.toLowerCase()
: key.toLowerCase(); : key.toLowerCase();
...@@ -41,3 +41,4 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = " ...@@ -41,3 +41,4 @@ function extractKeys(obj, keyPrefix = "", keySeparator = "-", valueSeparator = "
helper(obj, keyPrefix, keyPrefix); helper(obj, keyPrefix, keyPrefix);
return resultMap; return resultMap;
} }
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
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment