[MNT-24151] - ADW: Users can see some actions Edit Offline" and "Upload New Version" for the declared record (#9295)

* [MNT-24151] - ADW: Users can see some actions Edit Offline" and "Upload New Version" for the declared record

* [MNT-24151] - add unit tests
This commit is contained in:
DominikIwanek
2024-02-07 19:49:50 +01:00
committed by GitHub
parent 186dab3a4c
commit 7238df106c
3 changed files with 30 additions and 2 deletions

View File

@@ -89,6 +89,30 @@ describe('Extension Utils', () => {
});
});
it('should correctly merge arrays', () => {
const obj1 = { items: ['apple', 'banana'] };
const obj2 = { items: ['carrot'] };
const obj3 = { items: ['date', 'elderberry'] };
const result = mergeObjects(obj1, obj2, obj3);
expect(result).toEqual({
items: ['apple', 'banana', 'carrot', 'date', 'elderberry']
});
});
it('should append string values to existing array in result', () => {
const obj1 = { items: ['apple', 'banana'] };
const obj2 = { items: 'carrot' };
const result = mergeObjects(obj1, obj2);
expect(result).toEqual({
items: ['apple', 'banana', 'carrot']
});
});
it('should replace nested objects', () => {
const obj1 = { level1: { level2: { name: 'level2' } } };
const obj2 = { level1: { 'level2.$replace': { name: 'modified', tag: 'node' } } };

View File

@@ -116,7 +116,11 @@ export const mergeObjects = (...objects: any[]): any => {
if (replace) {
result[prop] = source[`${prop}.$replace`];
} else if (prop in result && Array.isArray(result[prop])) {
result[prop] = mergeArrays(result[prop], source[prop]);
if (Array.isArray(source[prop])) {
result[prop] = mergeArrays(result[prop], source[prop]);
} else {
result[prop] = [...result[prop], source[prop]];
}
} else if (prop in result && typeof result[prop] === 'object') {
result[prop] = mergeObjects(result[prop], source[prop]);
} else {