diff --git a/projects/aca-shared/src/lib/utils/node.utils.ts b/projects/aca-shared/src/lib/utils/node.utils.ts index b6bfca258..241cb2e34 100644 --- a/projects/aca-shared/src/lib/utils/node.utils.ts +++ b/projects/aca-shared/src/lib/utils/node.utils.ts @@ -24,6 +24,15 @@ import { Node } from '@alfresco/js-api'; +const RMA_NODE_TYPES = { + hold: 'rma:hold', + holdContainer: 'rma:holdContainer', + transferContainer: 'rma:transferContainer', + unfiledRecordContainer: 'rma:unfiledRecordContainer' +} as const; + +type RmaNodeType = (typeof RMA_NODE_TYPES)[keyof typeof RMA_NODE_TYPES]; + export function isLocked(node: { entry: Node }): boolean { if (node?.entry) { const { entry } = node; @@ -43,3 +52,22 @@ export function isLibrary(node: { entry: Node | any }): boolean { return false; } } + +const hasNodeType = + (type: RmaNodeType) => + (node: Node): boolean => + node.nodeType === type; + +const isRmaHoldsContainer = hasNodeType(RMA_NODE_TYPES.holdContainer); +const isRmaHold = hasNodeType(RMA_NODE_TYPES.hold); +const isRmaTransferContainer = hasNodeType(RMA_NODE_TYPES.transferContainer); +const isRmaUnfiledRecordsContainer = hasNodeType(RMA_NODE_TYPES.unfiledRecordContainer); + +export const isRmaSystemFolder = (node: Node): boolean => + isRmaHoldsContainer(node) || isRmaTransferContainer(node) || isRmaUnfiledRecordsContainer(node); + +export const isRmaRestrictedCreateFolder = (node: Node): boolean => isRmaHold(node) || isRmaTransferContainer(node) || isRmaHoldsContainer(node); + +export const isRmaContent = (node: Node): boolean => { + return node.nodeType.startsWith('rma:'); +}; diff --git a/projects/aca-shared/src/lib/utils/note.utils.spec.ts b/projects/aca-shared/src/lib/utils/note.utils.spec.ts index 596612ceb..135462c4a 100644 --- a/projects/aca-shared/src/lib/utils/note.utils.spec.ts +++ b/projects/aca-shared/src/lib/utils/note.utils.spec.ts @@ -22,9 +22,12 @@ * from Hyland Software. If not, see . */ -import { isLibrary, isLocked } from './node.utils'; +import { isLibrary, isLocked, isRmaContent, isRmaSystemFolder } from './node.utils'; +import { Node } from '@alfresco/js-api'; describe('NodeUtils', () => { + const prepareNode = (nodeType: string): Node => ({ nodeType }) as Node; + describe('isLocked', () => { it('should return [false] if entry is not defined', () => { expect(isLocked(null)).toBeFalse(); @@ -111,4 +114,44 @@ describe('NodeUtils', () => { ).toBeTrue(); }); }); + + describe('isRmaSystemFolder', () => { + it('should return [true] for rma:holdContainer', () => { + expect(isRmaSystemFolder(prepareNode('rma:holdContainer'))).toBeTrue(); + }); + + it('should return [true] for rma:transferContainer', () => { + expect(isRmaSystemFolder(prepareNode('rma:transferContainer'))).toBeTrue(); + }); + + it('should return [true] for rma:unfiledRecordContainer', () => { + expect(isRmaSystemFolder(prepareNode('rma:unfiledRecordContainer'))).toBeTrue(); + }); + + it('should return [false] for non RMA system folder node type', () => { + expect(isRmaSystemFolder(prepareNode('rma:hold'))).toBeFalse(); + }); + + it('should return [false] for unknown node type', () => { + expect(isRmaSystemFolder(prepareNode('unknown'))).toBeFalse(); + }); + }); + + describe('isRmaContent', () => { + it('should return [true] for node type starting with rma:', () => { + expect(isRmaContent(prepareNode('rma:hold'))).toBeTrue(); + expect(isRmaContent(prepareNode('rma:holdContainer'))).toBeTrue(); + expect(isRmaContent(prepareNode('rma:transferContainer'))).toBeTrue(); + expect(isRmaContent(prepareNode('rma:unfiledRecordContainer'))).toBeTrue(); + expect(isRmaContent(prepareNode('rma:whatever'))).toBeTrue(); + }); + + it('should return [false] for node type not starting with rma:', () => { + expect(isRmaContent(prepareNode('cm:content'))).toBeFalse(); + }); + + it('should return false when nodeType is missing', () => { + expect(isRmaContent({} as any)).toBeFalse(); + }); + }); });