mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-24 17:31:52 +00:00
[MNT-24660] version list action cannot be disabled using app conf (#4182)
* MNT-24660 Fixed config settings for version manager * MNT-24660 Unit tests * MNT-24660 Added possibility to hide and show delete version option * MNT-24660 Property to show or hide version actions * MNT-24660 Added more tests, updated documentation * MNT-24660 Additional documentation * MNT-24660 Additional fixes * MNT-24660 Reverted not wanted change * MNT-24660 Reverted not wanted change
This commit is contained in:
@@ -23,9 +23,158 @@
|
||||
*/
|
||||
|
||||
import { VersionsTabComponent } from './versions-tab.component';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { AppSettingsService } from '@alfresco/aca-shared';
|
||||
import { ContentTestingModule, VersionListDataSource, VersionManagerComponent } from '@alfresco/adf-content-services';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
describe('VersionsTabComponent', () => {
|
||||
it('should be defined', () => {
|
||||
expect(VersionsTabComponent).toBeDefined();
|
||||
let component: VersionsTabComponent;
|
||||
let fixture: ComponentFixture<VersionsTabComponent>;
|
||||
let appSettingsService: AppSettingsService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
imports: [VersionsTabComponent, ContentTestingModule]
|
||||
});
|
||||
|
||||
fixture = TestBed.createComponent(VersionsTabComponent);
|
||||
component = fixture.componentInstance;
|
||||
appSettingsService = TestBed.inject(AppSettingsService);
|
||||
spyOn(VersionListDataSource.prototype, 'connect').and.returnValue(of());
|
||||
spyOn(VersionListDataSource.prototype, 'reset');
|
||||
});
|
||||
|
||||
describe('Version manager', () => {
|
||||
let uploadAllowDownloadSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerAllowViewVersionsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerShowActionsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerAllowVersionDeleteSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let uploadAllowCommentsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerComponent: VersionManagerComponent;
|
||||
|
||||
beforeEach(() => {
|
||||
component.node = {
|
||||
nodeId: 'some id'
|
||||
} as any;
|
||||
uploadAllowDownloadSpy = spyOnProperty(appSettingsService, 'uploadAllowDownload').and;
|
||||
versionManagerAllowViewVersionsSpy = spyOnProperty(appSettingsService, 'versionManagerAllowViewVersions').and;
|
||||
versionManagerShowActionsSpy = spyOnProperty(appSettingsService, 'versionManagerShowActions').and;
|
||||
versionManagerAllowVersionDeleteSpy = spyOnProperty(appSettingsService, 'versionManagerAllowVersionDelete').and;
|
||||
uploadAllowCommentsSpy = spyOnProperty(appSettingsService, 'uploadAllowComments').and;
|
||||
fixture.detectChanges();
|
||||
versionManagerComponent = fixture.debugElement.query(By.directive(VersionManagerComponent)).componentInstance;
|
||||
});
|
||||
|
||||
it('should have assigned true to showComments if settings.uploadAllowComments returns true', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.showComments).toBe(true);
|
||||
});
|
||||
|
||||
it('should have assigned false to showComments if settings.uploadAllowComments returns false', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(false);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.showComments).toBe(false);
|
||||
});
|
||||
|
||||
it('should have assigned true to allowDownload if settings.uploadAllowDownload returns true', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowDownload).toBe(true);
|
||||
});
|
||||
|
||||
it('should have assigned false to allowDownload if settings.uploadAllowDownload returns false', () => {
|
||||
uploadAllowDownloadSpy.returnValue(false);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowDownload).toBe(false);
|
||||
});
|
||||
|
||||
it('should have assigned true to allowViewVersions if settings.versionManagerAllowViewVersions returns true', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowViewVersions).toBe(true);
|
||||
});
|
||||
|
||||
it('should have assigned false to allowViewVersions if settings.versionManagerAllowViewVersions returns false', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(false);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowViewVersions).toBe(false);
|
||||
});
|
||||
|
||||
it('should have assigned true to allowVersionDelete if settings.versionManagerAllowVersionDelete returns true', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowVersionDelete).toBe(true);
|
||||
});
|
||||
|
||||
it('should have assigned false to allowVersionDelete if settings.versionManagerAllowVersionDelete returns false', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(false);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowVersionDelete).toBe(false);
|
||||
});
|
||||
|
||||
it('should have assigned true to showActions if settings.versionManagerShowActions returns true', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.allowVersionDelete).toBe(true);
|
||||
});
|
||||
|
||||
it('should have assigned false to showActions if settings.versionManagerShowActions returns false', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(false);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
|
||||
fixture.detectChanges();
|
||||
expect(versionManagerComponent.showActions).toBe(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@@ -36,7 +36,14 @@ import { AppSettingsService } from '@alfresco/aca-shared';
|
||||
selector: 'app-versions-tab',
|
||||
template: `
|
||||
<ng-container *ngIf="isFileSelected; else empty">
|
||||
<adf-version-manager [showComments]="settings.uploadAllowComments" [allowDownload]="settings.uploadAllowDownload" [node]="node">
|
||||
<adf-version-manager
|
||||
[showComments]="settings.uploadAllowComments"
|
||||
[allowDownload]="settings.uploadAllowDownload"
|
||||
[node]="node"
|
||||
[allowViewVersions]="settings.versionManagerAllowViewVersions"
|
||||
[allowVersionDelete]="settings.versionManagerAllowVersionDelete"
|
||||
[showActions]="settings.versionManagerShowActions"
|
||||
>
|
||||
</adf-version-manager>
|
||||
</ng-container>
|
||||
|
||||
|
@@ -49,7 +49,7 @@ import {
|
||||
import { map } from 'rxjs/operators';
|
||||
import { NodeEffects } from '../store/effects/node.effects';
|
||||
import { AppTestingModule } from '../testing/app-testing.module';
|
||||
import { AppHookService, ContentApiService } from '@alfresco/aca-shared';
|
||||
import { AppHookService, AppSettingsService, ContentApiService } from '@alfresco/aca-shared';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { ContentManagementService } from './content-management.service';
|
||||
import { NodeActionsService } from './node-actions.service';
|
||||
@@ -61,6 +61,7 @@ import {
|
||||
DocumentListService,
|
||||
FileModel,
|
||||
NewVersionUploaderDataAction,
|
||||
NewVersionUploaderDialogData,
|
||||
NewVersionUploaderService,
|
||||
NodeAspectService,
|
||||
NodesApiService,
|
||||
@@ -81,6 +82,7 @@ describe('ContentManagementService', () => {
|
||||
let nodeAspectService: NodeAspectService;
|
||||
let appHookService: AppHookService;
|
||||
let newVersionUploaderService: NewVersionUploaderService;
|
||||
let appSettingsService: AppSettingsService;
|
||||
let showErrorSpy: jasmine.Spy;
|
||||
let showInfoSpy: jasmine.Spy;
|
||||
let showWarningSpy: jasmine.Spy;
|
||||
@@ -105,6 +107,7 @@ describe('ContentManagementService', () => {
|
||||
nodeAspectService = TestBed.inject(NodeAspectService);
|
||||
appHookService = TestBed.inject(AppHookService);
|
||||
newVersionUploaderService = TestBed.inject(NewVersionUploaderService);
|
||||
appSettingsService = TestBed.inject(AppSettingsService);
|
||||
|
||||
dialog = TestBed.inject(MatDialog);
|
||||
});
|
||||
@@ -1555,6 +1558,12 @@ describe('ContentManagementService', () => {
|
||||
let fakeNodeIsNotFile;
|
||||
let spyOnOpenUploadNewVersionDialog: jasmine.Spy;
|
||||
let spyOnDispatch: jasmine.Spy;
|
||||
let uploadAllowCommentsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let uploadAllowDownloadSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerAllowViewVersionsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerShowActionsSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let versionManagerAllowVersionDeleteSpy: jasmine.SpyAnd<() => boolean>;
|
||||
let dialogData: NewVersionUploaderDialogData;
|
||||
|
||||
beforeEach(() => {
|
||||
fakeNodeIsFile = { entry: { id: '1', name: 'name1', isFile: true } };
|
||||
@@ -1562,6 +1571,21 @@ describe('ContentManagementService', () => {
|
||||
const viewVersionData: ViewVersion = { action: NewVersionUploaderDataAction.view, versionId: '1.0' };
|
||||
spyOnOpenUploadNewVersionDialog = spyOn(newVersionUploaderService, 'openUploadNewVersionDialog').and.returnValue(of(viewVersionData));
|
||||
spyOnDispatch = spyOn(store, 'dispatch');
|
||||
dialogData = {
|
||||
node: fakeNodeIsFile.entry,
|
||||
showVersionsOnly: true,
|
||||
title: 'VERSION.DIALOG.TITLE',
|
||||
allowDownload: true,
|
||||
showComments: true,
|
||||
allowViewVersions: true,
|
||||
showActions: true,
|
||||
allowVersionDelete: true
|
||||
};
|
||||
uploadAllowCommentsSpy = spyOnProperty(appSettingsService, 'uploadAllowComments').and;
|
||||
uploadAllowDownloadSpy = spyOnProperty(appSettingsService, 'uploadAllowDownload').and;
|
||||
versionManagerAllowViewVersionsSpy = spyOnProperty(appSettingsService, 'versionManagerAllowViewVersions').and;
|
||||
versionManagerShowActionsSpy = spyOnProperty(appSettingsService, 'versionManagerShowActions').and;
|
||||
versionManagerAllowVersionDeleteSpy = spyOnProperty(appSettingsService, 'versionManagerAllowVersionDelete').and;
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog', () => {
|
||||
@@ -1570,17 +1594,78 @@ describe('ContentManagementService', () => {
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog passing dialog data', () => {
|
||||
const expectedArgument = {
|
||||
node: fakeNodeIsFile.entry,
|
||||
showVersionsOnly: true,
|
||||
title: 'VERSION.DIALOG.TITLE'
|
||||
};
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
const elementToFocusSelector = 'some-selector';
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile, elementToFocusSelector);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(expectedArgument);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[2]).toEqual(elementToFocusSelector);
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog with allowDownload assigned to false in passed data', () => {
|
||||
uploadAllowDownloadSpy.returnValue(false);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
dialogData.allowDownload = false;
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog with allowViewVersions assigned to false in passed data', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(false);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
dialogData.allowViewVersions = false;
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog with showActions assigned to false in passed data', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(false);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
dialogData.showActions = false;
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog with allowVersionDelete assigned to false in passed data', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(false);
|
||||
uploadAllowCommentsSpy.returnValue(true);
|
||||
dialogData.allowVersionDelete = false;
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
});
|
||||
|
||||
it('should call openUploadNewVersionDialog with showComments assigned to false in passed data', () => {
|
||||
uploadAllowDownloadSpy.returnValue(true);
|
||||
versionManagerAllowViewVersionsSpy.returnValue(true);
|
||||
versionManagerShowActionsSpy.returnValue(true);
|
||||
versionManagerAllowVersionDeleteSpy.returnValue(true);
|
||||
uploadAllowCommentsSpy.returnValue(false);
|
||||
dialogData.showComments = false;
|
||||
|
||||
contentManagementService.manageVersions(fakeNodeIsFile);
|
||||
expect(spyOnOpenUploadNewVersionDialog['calls'].argsFor(0)[0]).toEqual(dialogData);
|
||||
});
|
||||
|
||||
it('should dispatch RefreshPreviewAction and reload document list if dialog emit refresh action', () => {
|
||||
spyOnOpenUploadNewVersionDialog.and.returnValue(of({ action: NewVersionUploaderDataAction.refresh, node: fakeNodeIsFile }));
|
||||
spyOn(documentListService, 'reload');
|
||||
|
@@ -570,7 +570,12 @@ export class ContentManagementService {
|
||||
const newVersionUploaderDialogData: NewVersionUploaderDialogData = {
|
||||
node,
|
||||
showVersionsOnly: true,
|
||||
title: 'VERSION.DIALOG.TITLE'
|
||||
title: 'VERSION.DIALOG.TITLE',
|
||||
allowDownload: this.appSettingsService.uploadAllowDownload,
|
||||
showComments: this.appSettingsService.uploadAllowComments,
|
||||
showActions: this.appSettingsService.versionManagerShowActions,
|
||||
allowViewVersions: this.appSettingsService.versionManagerAllowViewVersions,
|
||||
allowVersionDelete: this.appSettingsService.versionManagerAllowVersionDelete
|
||||
};
|
||||
this.newVersionUploaderService
|
||||
.openUploadNewVersionDialog(newVersionUploaderDialogData, { width: '630px', role: 'dialog' }, focusedElementOnCloseSelector)
|
||||
|
@@ -133,6 +133,27 @@ export class AppSettingsService {
|
||||
return this.appConfig.get<boolean>('adf-version-manager.allowDownload', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow to view versions if true, disallow otherwise.
|
||||
*/
|
||||
get versionManagerAllowViewVersions(): boolean {
|
||||
return this.appConfig.get<boolean>('adf-version-manager.allowViewVersions', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow to delete versions if true, disallow otherwise.
|
||||
*/
|
||||
get versionManagerAllowVersionDelete(): boolean {
|
||||
return this.appConfig.get<boolean>('adf-version-manager.allowVersionDelete', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow to open actions menu when true, otherwise hides it.
|
||||
*/
|
||||
get versionManagerShowActions(): boolean {
|
||||
return this.appConfig.get<boolean>('adf-version-manager.showActions', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the enablement of the file auto tryDownload feature from the app settings.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user