[ACA-4589] Remove requirement for update permission on node to open manage versions dialog (#8483)

This commit is contained in:
Thomas Hunter
2023-04-19 10:01:24 +01:00
committed by GitHub
parent 657e5ef7fd
commit 210f21bbb2
2 changed files with 19 additions and 49 deletions

View File

@@ -20,7 +20,6 @@ import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testin
import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
import { TranslateModule } from '@ngx-translate/core';
import { BehaviorSubject, of, Subject } from 'rxjs';
import { ContentService } from '../common/services/content.service';
import { mockFile, mockNewVersionUploaderData, mockNode } from '../mock';
import { ContentTestingModule } from '../testing/content.testing.module';
import {
@@ -51,7 +50,6 @@ class TestDialogComponent {
describe('NewVersionUploaderService', () => {
let fixture: ComponentFixture<TestDialogComponent>;
let service: NewVersionUploaderService;
let contentService: ContentService;
let dialog: MatDialog;
let spyOnDialogOpen: jasmine.Spy;
let dialogRefSpyObj;
@@ -68,7 +66,6 @@ describe('NewVersionUploaderService', () => {
beforeEach(() => {
service = TestBed.inject(NewVersionUploaderService);
contentService = TestBed.inject(ContentService);
dialog = TestBed.inject(MatDialog);
fixture = TestBed.createComponent(TestDialogComponent);
@@ -83,29 +80,9 @@ describe('NewVersionUploaderService', () => {
});
describe('openUploadNewVersionDialog', () => {
it('Should not open dialog if update operation is not allowed', () => {
spyOn(contentService, 'hasAllowableOperations').and.returnValue(false);
expect(spyOnDialogOpen).not.toHaveBeenCalled();
});
it('Should return error if update operation is not allowed', async () => {
spyOn(contentService, 'hasAllowableOperations').and.returnValue(false);
const mockNewVersionUploaderDialogData: NewVersionUploaderDialogData = {
node: mockNode,
file: mockFile
};
try {
await service.openUploadNewVersionDialog(mockNewVersionUploaderDialogData).toPromise();
fail('An error should have been thrown');
} catch (error) {
expect(error).toEqual({ value: 'OPERATION.ERROR.PERMISSION' });
}
});
describe('Mat Dialog configuration', () => {
let mockNewVersionUploaderDialogData: NewVersionUploaderDialogData;
beforeEach(() => {
spyOn(contentService, 'hasAllowableOperations').and.returnValue(true);
spyOn(service.versionsApi, 'listVersionHistory').and.returnValue(Promise.resolve({
list: { entries: [{ entry: '2' }] }
} as any));
@@ -220,7 +197,6 @@ describe('NewVersionUploaderService', () => {
let mockNewVersionUploaderDialogData: NewVersionUploaderDialogData;
beforeEach(() => {
spyOn(contentService, 'hasAllowableOperations').and.returnValue(true);
spyOn(service.versionsApi, 'listVersionHistory').and.returnValue(Promise.resolve({
list: { entries: [{ entry: '2' }] }
}) as any);

View File

@@ -18,7 +18,6 @@
import { Injectable } from '@angular/core';
import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
import { AlfrescoApiService } from '@alfresco/adf-core';
import { ContentService } from '../common/services/content.service';
import { NewVersionUploaderDialogComponent } from './new-version-uploader.dialog';
import { VersionPaging, VersionsApi } from '@alfresco/js-api';
@@ -38,7 +37,6 @@ export class NewVersionUploaderService {
}
constructor(
private contentService: ContentService,
private apiService: AlfrescoApiService,
private dialog: MatDialog,
private overlayContainer: OverlayContainer
@@ -61,30 +59,26 @@ export class NewVersionUploaderService {
const allowDownload = true;
return new Observable((observer) => {
if (this.contentService.hasAllowableOperations(node, 'update')) {
this.versionsApi.listVersionHistory(node.id).then((versionPaging: VersionPaging) => {
const dialogRef = this.dialog.open(NewVersionUploaderDialogComponent, {
data: { file, node, currentVersion: versionPaging.list.entries[0].entry, showComments, allowDownload, showVersionsOnly },
panelClass: this.composePanelClass(showVersionsOnly),
width: '630px',
...(config && Object.keys(config).length > 0 && config)
});
dialogRef.componentInstance.dialogAction.asObservable()
.subscribe((newVersionUploaderData: NewVersionUploaderData) => {
observer.next(newVersionUploaderData);
});
dialogRef.componentInstance.uploadError.asObservable().subscribe(error => {
observer.error(error);
});
dialogRef.afterClosed().subscribe(() => {
this.overlayContainer.getContainerElement().setAttribute('role', 'region');
NewVersionUploaderService.focusOnClose(selectorAutoFocusedOnClose);
});
this.overlayContainer.getContainerElement().setAttribute('role', 'main');
this.versionsApi.listVersionHistory(node.id).then((versionPaging: VersionPaging) => {
const dialogRef = this.dialog.open(NewVersionUploaderDialogComponent, {
data: { file, node, currentVersion: versionPaging.list.entries[0].entry, showComments, allowDownload, showVersionsOnly },
panelClass: this.composePanelClass(showVersionsOnly),
width: '630px',
...(config && Object.keys(config).length > 0 && config)
});
} else {
observer.error({ value: 'OPERATION.ERROR.PERMISSION' });
}
dialogRef.componentInstance.dialogAction.asObservable()
.subscribe((newVersionUploaderData: NewVersionUploaderData) => {
observer.next(newVersionUploaderData);
});
dialogRef.componentInstance.uploadError.asObservable().subscribe(error => {
observer.error(error);
});
dialogRef.afterClosed().subscribe(() => {
this.overlayContainer.getContainerElement().setAttribute('role', 'region');
NewVersionUploaderService.focusOnClose(selectorAutoFocusedOnClose);
});
this.overlayContainer.getContainerElement().setAttribute('role', 'main');
});
});
}