From 7238df106c5ad1c472e5717d9cdd6c99ef05a9c7 Mon Sep 17 00:00:00 2001 From: DominikIwanek <141320833+DominikIwanek@users.noreply.github.com> Date: Wed, 7 Feb 2024 19:49:50 +0100 Subject: [PATCH] [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 --- .../services/custom-resources.service.ts | 2 +- .../src/lib/config/extension-utils.spec.ts | 24 +++++++++++++++++++ .../src/lib/config/extension-utils.ts | 6 ++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/content-services/src/lib/document-list/services/custom-resources.service.ts b/lib/content-services/src/lib/document-list/services/custom-resources.service.ts index bfd8375bb4..ec2d04ba92 100644 --- a/lib/content-services/src/lib/document-list/services/custom-resources.service.ts +++ b/lib/content-services/src/lib/document-list/services/custom-resources.service.ts @@ -139,7 +139,7 @@ export class CustomResourcesService { language: 'afts' }, filterQueries, - include: ['path', 'properties', 'allowableOperations'], + include: ['path', 'properties', 'allowableOperations', 'aspects'], sort: [ { type: 'FIELD', diff --git a/lib/extensions/src/lib/config/extension-utils.spec.ts b/lib/extensions/src/lib/config/extension-utils.spec.ts index f7ac9977de..0870387a1d 100644 --- a/lib/extensions/src/lib/config/extension-utils.spec.ts +++ b/lib/extensions/src/lib/config/extension-utils.spec.ts @@ -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' } } }; diff --git a/lib/extensions/src/lib/config/extension-utils.ts b/lib/extensions/src/lib/config/extension-utils.ts index 95c231f31d..cb00afeb03 100644 --- a/lib/extensions/src/lib/config/extension-utils.ts +++ b/lib/extensions/src/lib/config/extension-utils.ts @@ -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 {