diff --git a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts index 6e5b7d714..4a1131438 100644 --- a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts +++ b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.spec.ts @@ -24,9 +24,67 @@ */ import { MetadataTabComponent } from './metadata-tab.component'; +import { NodePermissionService } from '../../../services/node-permission.service'; +import { Node } from '@alfresco/js-api'; describe('MetadataTabComponent', () => { - it('should be defined', () => { - expect(MetadataTabComponent).toBeDefined(); + let nodePermissionService: NodePermissionService; + let component: MetadataTabComponent; + + beforeEach(() => { + nodePermissionService = new NodePermissionService(); + const appConfig = { config: { 'content-metadata': {} } }; + const extension = { contentMetadata: {} }; + + component = new MetadataTabComponent( + nodePermissionService, + extension, + appConfig + ); + }); + + describe('canUpdateNode()', () => { + it('should return true if node is not locked and has update permission', () => { + const node = { + isLocked: false, + allowableOperations: ['update'] + }; + + component.node = node; + expect(component.canUpdateNode).toBe(true); + }); + + it('should return false if node is locked', () => { + const node = { + isLocked: true, + allowableOperations: ['update'] + }; + + component.node = node; + expect(component.canUpdateNode).toBe(false); + }); + + it('should return false if node has no update permission', () => { + const node = { + isLocked: false, + allowableOperations: ['other'] + }; + + component.node = node; + expect(component.canUpdateNode).toBe(false); + }); + + it('should return false if node has read only property', () => { + const node = { + isLocked: false, + allowableOperations: ['update'], + properties: { + 'cm:lockType': 'WRITE_LOCK' + } + }; + + component.node = node; + expect(component.canUpdateNode).toBe(false); + }); }); }); diff --git a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts index 8aafc76ee..1183249f0 100644 --- a/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts +++ b/src/app/components/info-drawer/metadata-tab/metadata-tab.component.ts @@ -65,7 +65,7 @@ export class MetadataTabComponent { } get canUpdateNode(): boolean { - if (this.node && this.node.isFile && !isLocked({ entry: this.node })) { + if (this.node && !isLocked({ entry: this.node })) { return this.permission.check(this.node, ['update']); }