[ACS-9765]: adds utility functions for rma content

This commit is contained in:
Anton Ramanovich
2026-03-11 17:21:41 +01:00
parent 5046a92409
commit 34f865067a
2 changed files with 72 additions and 1 deletions
@@ -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:');
};
@@ -22,9 +22,12 @@
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
*/
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();
});
});
});