[ADF-3299] and [ADF-3300] upgrade to Angular and Material 6 (#3579)

* upgrade to HttpClient

* upgrade to Renderer2

* upgrade Document reference

* remove useless test with deprecated ReflectiveInjector

* upgrade to latest typescript

* upgrade libs

* upgrade package scripts

* remove rxjs blacklists and duplicate rules

* add rxjs compat to help with migration

* fix breaking changes

* fix breaking changes in material

* fix breaking changes (material 6)

* upgrade rxjs, ngx-translate and flex layout

* update unit tests

* restore providers

* upgrade deprecated Observable.error

* rebase
fix first configuration problems

* fix style issues commented

* fix core build

* fix lib template errors

* move lib test execution in angular.json

* ignore

* karma conf files

* fix import statement test

* single run option

* update packages reporter

* restore report

* increase timeout

* improve karma conf test configuration

* fix test issues about lint

* fix test analytics

* fix process service test

* content service fix test

* fix logout directive test

* fix core test

* fix build

* update node-sass to latest

* update angular cli dependencies

* improve build script

create directorites and move files only if previous command succeded

* upgrade individual libs to 6.0

* remove old webpack files

* revert sass change

* fix type issues
fix style issues

* fix tslint demo shell issue

* fix peerdependencies

* fix test e2e BC

* package upate

* fix style import issue

* extract-text-webpack-plugin beta

* fix test dist build command

* remove alpha js-api

* fix tslint issue
add banner tslint rule

* upload service fix

* change BC script

* fix test dist script

* increase demo shell timeout test

* verbose copy

* path absolute

* fix script bc

* fix copy part

* fix path warning
fix monaco editor

* remove duplicate header

* remove unused import

* fix align and check ago tests

* add missing import

* fix notification button selector

* [ANGULAR6] fixed core tests

* fix CS test

* fix cs test step 2

* increase travis_wait for dist

* fix attachment PS

* fix checklist test

* use pdf min
This commit is contained in:
Denys Vuika
2018-08-07 11:58:16 +01:00
committed by Eugenio Romano
parent c510ec864d
commit 6b24bfb1d4
371 changed files with 16287 additions and 24504 deletions

View File

@@ -24,7 +24,7 @@ import { DocumentActionsService } from '../../services/document-actions.service'
import { FolderActionsService } from '../../services/folder-actions.service';
import { ContentActionModel, ContentActionTarget } from './../../models/content-action.model';
import { ContentActionListComponent } from './content-action-list.component';
import { Subscription } from 'rxjs/Subscription';
import { Subscription } from 'rxjs';
@Component({
selector: 'content-action',

View File

@@ -19,8 +19,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, SimpleChange, TemplateRef, QueryList } from '@a
import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing';
import { AlfrescoApiService, DataColumnListComponent, DataColumnComponent } from '@alfresco/adf-core';
import { DataColumn, DataTableComponent } from '@alfresco/adf-core';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { Subject, of, throwError } from 'rxjs';
import { FileNode, FolderNode } from '../../mock';
import {
fakeNodeAnswerWithNOEntries,
@@ -249,7 +248,7 @@ describe('DocumentList', () => {
documentList.folderNode = new NodeMinimal();
documentList.folderNode.id = '1d26e465-dea3-42f3-b415-faa8364b9692';
spyOn(documentListService, 'getFolder').and.returnValue(Observable.of(fakeNodeAnswerWithNOEntries));
spyOn(documentListService, 'getFolder').and.returnValue(of(fakeNodeAnswerWithNOEntries));
let disposableReady = documentList.ready.subscribe(() => {
expect(element.querySelector('#adf-document-list-empty')).toBeDefined();
@@ -754,7 +753,7 @@ describe('DocumentList', () => {
it('should display folder content from loadFolder on reload if folderNode defined', () => {
documentList.folderNode = new NodeMinimal();
spyOn(documentList, 'loadFolderNodesByFolderNodeId').and.returnValue(Observable.of(''));
spyOn(documentList, 'loadFolderNodesByFolderNodeId').and.returnValue(Promise.resolve(''));
spyOn(documentList, 'loadFolder').and.callThrough();
documentList.reload();
expect(documentList.loadFolder).toHaveBeenCalled();
@@ -953,7 +952,7 @@ describe('DocumentList', () => {
it('should emit error when getFolderNode fails', (done) => {
const error = { message: '{ "error": { "statusCode": 501 } }' };
spyOn(documentListService, 'getFolderNode').and.returnValue(Observable.throw(error));
spyOn(documentListService, 'getFolderNode').and.returnValue(throwError(error));
let disposableError = documentList.error.subscribe(val => {
expect(val).toBe(error);
@@ -966,7 +965,7 @@ describe('DocumentList', () => {
it('should emit error when loadFolderNodesByFolderNodeId fails', (done) => {
const error = { message: '{ "error": { "statusCode": 501 } }' };
spyOn(documentListService, 'getFolderNode').and.returnValue(Observable.of(fakeNodeWithCreatePermission));
spyOn(documentListService, 'getFolderNode').and.returnValue(of(fakeNodeWithCreatePermission));
spyOn(documentList, 'loadFolderNodesByFolderNodeId').and.returnValue(Promise.reject(error));
let disposableError = documentList.error.subscribe(val => {
@@ -980,7 +979,7 @@ describe('DocumentList', () => {
it('should set no permission when getFolderNode fails with 403', (done) => {
const error = { message: '{ "error": { "statusCode": 403 } }' };
spyOn(documentListService, 'getFolderNode').and.returnValue(Observable.throw(error));
spyOn(documentListService, 'getFolderNode').and.returnValue(throwError(error));
let disposableError = documentList.error.subscribe(val => {
expect(val).toBe(error);
@@ -1022,8 +1021,8 @@ describe('DocumentList', () => {
documentList.folderNode = new NodeMinimal();
documentList.folderNode.id = '1d26e465-dea3-42f3-b415-faa8364b9692';
spyOn(documentListService, 'getFolderNode').and.returnValue(Observable.of(fakeNodeWithNoPermission));
spyOn(documentListService, 'getFolder').and.returnValue(Observable.throw(error));
spyOn(documentListService, 'getFolderNode').and.returnValue(of(fakeNodeWithNoPermission));
spyOn(documentListService, 'getFolder').and.returnValue(throwError(error));
documentList.loadFolder();
let clickedFolderNode = new FolderNode('fake-folder-node');
@@ -1226,7 +1225,7 @@ describe('DocumentList', () => {
});
xit('should emit error when fetch recent fails on search call', (done) => {
spyOn(customResourcesService, 'loadFolderByNodeId').and.returnValue(Observable.throw('error'));
spyOn(customResourcesService, 'loadFolderByNodeId').and.returnValue(throwError('error'));
let disposableError = documentList.error.subscribe(val => {
expect(val).toBe('error');

View File

@@ -27,15 +27,9 @@ import {
} from '@alfresco/adf-core';
import { MinimalNodeEntity, MinimalNodeEntryEntity, NodePaging } from 'alfresco-js-api';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Subscription } from 'rxjs/Subscription';
import { Observable, Subject, BehaviorSubject, Subscription, of } from 'rxjs';
import { ShareDataRow } from './../data/share-data-row.model';
import { ShareDataTableAdapter } from './../data/share-datatable-adapter';
import { presetsDefaultModel } from '../models/preset.model';
import { ContentActionModel } from './../models/content-action.model';
import { PermissionStyleModel } from './../models/permissions-style.model';
@@ -559,7 +553,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
if (typeof action.handler === 'function') {
handlerSub = action.handler(node, this, action.permission);
} else {
handlerSub = Observable.of(true);
handlerSub = of(true);
}
if (typeof action.execute === 'function' && handlerSub) {

View File

@@ -29,7 +29,8 @@ import {
SearchRequest
} from 'alfresco-js-api';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observable, from, of, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class CustomResourcesService {
@@ -86,7 +87,7 @@ export class CustomResourcesService {
observer.error(err);
observer.complete();
});
}).catch(err => this.handleError(err));
}).pipe(catchError(err => this.handleError(err)));
}
/**
@@ -132,7 +133,7 @@ export class CustomResourcesService {
observer.error(err);
observer.complete();
});
}).catch(err => this.handleError(err));
}).pipe(catchError(err => this.handleError(err)));
}
/**
@@ -171,7 +172,7 @@ export class CustomResourcesService {
observer.error(err);
observer.complete();
});
}).catch(err => this.handleError(err));
}).pipe(catchError(err => this.handleError(err)));
}
/**
@@ -202,7 +203,7 @@ export class CustomResourcesService {
observer.error(err);
observer.complete();
});
}).catch(err => this.handleError(err));
}).pipe(catchError(err => this.handleError(err)));
}
/**
@@ -220,7 +221,8 @@ export class CustomResourcesService {
skipCount: pagination.skipCount
};
return Observable.fromPromise(this.apiService.nodesApi.getDeletedNodes(options)).catch(err => this.handleError(err));
return from(this.apiService.nodesApi.getDeletedNodes(options))
.pipe(catchError(err => this.handleError(err)));
}
@@ -239,7 +241,8 @@ export class CustomResourcesService {
skipCount: pagination.skipCount
};
return Observable.fromPromise(this.apiService.sharedLinksApi.findSharedLinks(options)).catch(err => this.handleError(err));
return from(this.apiService.sharedLinksApi.findSharedLinks(options))
.pipe(catchError(err => this.handleError(err)));
}
/**
@@ -291,23 +294,23 @@ export class CustomResourcesService {
*/
getCorrespondingNodeIds(nodeId: string, pagination: PaginationModel): Observable<string[]> {
if (nodeId === '-trashcan-') {
return Observable.fromPromise(this.apiService.nodesApi.getDeletedNodes()
return from(this.apiService.nodesApi.getDeletedNodes()
.then(result => result.list.entries.map(node => node.entry.id)));
} else if (nodeId === '-sharedlinks-') {
return Observable.fromPromise(this.apiService.sharedLinksApi.findSharedLinks()
return from(this.apiService.sharedLinksApi.findSharedLinks()
.then(result => result.list.entries.map(node => node.entry.nodeId)));
} else if (nodeId === '-sites-') {
return Observable.fromPromise(this.apiService.sitesApi.getSites()
return from(this.apiService.sitesApi.getSites()
.then(result => result.list.entries.map(node => node.entry.guid)));
} else if (nodeId === '-mysites-') {
return Observable.fromPromise(this.apiService.peopleApi.getSiteMembership('-me-')
return from(this.apiService.peopleApi.getSiteMembership('-me-')
.then(result => result.list.entries.map(node => node.entry.guid)));
} else if (nodeId === '-favorites-') {
return Observable.fromPromise(this.apiService.favoritesApi.getFavorites('-me-')
return from(this.apiService.favoritesApi.getFavorites('-me-')
.then(result => result.list.entries.map(node => node.entry.targetGuid)));
} else if (nodeId === '-recent-') {
@@ -322,7 +325,7 @@ export class CustomResourcesService {
}
return Observable.of([]);
return of([]);
}
private getIncludesFields(includeFields: string[]): string[] {
@@ -331,9 +334,7 @@ export class CustomResourcesService {
}
private handleError(error: Response) {
// in a real world app, we may send the error to some remote logging infrastructure
// instead of just logging it to the console
this.logService.error(error);
return Observable.throw(error || 'Server error');
return throwError(error || 'Server error');
}
}

View File

@@ -23,7 +23,7 @@ import { ContentActionHandler } from '../models/content-action.model';
import { DocumentActionsService } from './document-actions.service';
import { DocumentListService } from './document-list.service';
import { NodeActionsService } from './node-actions.service';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs';
describe('DocumentActionsService', () => {
@@ -103,7 +103,7 @@ describe('DocumentActionsService', () => {
});
it('should not delete the file node if there are no permissions', (done) => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
service.permissionEvent.subscribe((permission) => {
expect(permission).toBeDefined();
@@ -118,7 +118,7 @@ describe('DocumentActionsService', () => {
});
it('should call the error on the returned Observable if there are no permissions', (done) => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let file = new FileNode();
const deleteObservable = service.getHandler('delete')(file);
@@ -132,7 +132,7 @@ describe('DocumentActionsService', () => {
});
it('should delete the file node if there is the delete permission', () => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let permission = 'delete';
let file = new FileNode();
@@ -161,7 +161,7 @@ describe('DocumentActionsService', () => {
});
it('should delete the file node if there is the delete and others permission ', () => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let permission = 'delete';
let file = new FileNode();
@@ -177,7 +177,7 @@ describe('DocumentActionsService', () => {
});
it('should delete file node', () => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let permission = 'delete';
let file = new FileNode();
@@ -190,7 +190,7 @@ describe('DocumentActionsService', () => {
});
it('should support deletion only file node', () => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let folder = new FolderNode();
service.getHandler('delete')(folder);
@@ -205,7 +205,7 @@ describe('DocumentActionsService', () => {
});
it('should require node id to delete', () => {
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let file = new FileNode();
file.entry.id = null;
@@ -219,7 +219,7 @@ describe('DocumentActionsService', () => {
expect(message).toEqual('CORE.DELETE_NODE.SINGULAR');
done();
});
spyOn(documentListService, 'deleteNode').and.returnValue(Observable.of(true));
spyOn(documentListService, 'deleteNode').and.returnValue(of(true));
let target = jasmine.createSpyObj('obj', ['reload']);
let permission = 'delete';

View File

@@ -18,14 +18,12 @@
import { ContentService, TranslationService } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { MinimalNodeEntity } from 'alfresco-js-api';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { Observable, Subject, throwError } from 'rxjs';
import { ContentActionHandler } from '../models/content-action.model';
import { PermissionModel } from '../models/permissions.model';
import { DocumentListService } from './document-list.service';
import { NodeActionsService } from './node-actions.service';
import { ContentNodeDialogService } from '../../content-node-selector/content-node-dialog.service';
import 'rxjs/add/observable/throw';
@Injectable()
export class DocumentActionsService {
@@ -138,7 +136,7 @@ export class DocumentActionsService {
action: 'delete',
permission: permission
}));
return Observable.throw(new Error('No permission to delete'));
return throwError(new Error('No permission to delete'));
}
}
}

View File

@@ -16,7 +16,7 @@
*/
import { AlfrescoApiServiceMock, AlfrescoApiService,
AppConfigService, StorageService, ContentService, setupTestBed, CoreModule } from '@alfresco/adf-core';
AppConfigService, StorageService, ContentService, setupTestBed, CoreModule, LogService, AppConfigServiceMock } from '@alfresco/adf-core';
import { DocumentListService } from './document-list.service';
declare let jasmine: any;
@@ -94,9 +94,10 @@ describe('DocumentListService', () => {
});
beforeEach(() => {
let logService = new LogService(new AppConfigServiceMock(null));
let contentService = new ContentService(null, null, null, null);
alfrescoApiService = new AlfrescoApiServiceMock(new AppConfigService(null), new StorageService());
service = new DocumentListService(null, contentService, alfrescoApiService, null, null);
service = new DocumentListService(null, contentService, alfrescoApiService, logService, null);
jasmine.Ajax.install();
});
@@ -161,7 +162,7 @@ describe('DocumentListService', () => {
});
it('should add the includeTypes in the request Node Children if required', () => {
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeChildren');
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeChildren').and.callThrough();
service.getFolder('/fake-root/fake-name', {}, ['isLocked']);
@@ -173,7 +174,7 @@ describe('DocumentListService', () => {
});
it('should not add the includeTypes in the request Node Children if is duplicated', () => {
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeChildren');
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeChildren').and.callThrough();
service.getFolder('/fake-root/fake-name', {}, ['allowableOperations']);
@@ -185,7 +186,7 @@ describe('DocumentListService', () => {
});
it('should add the includeTypes in the request getFolderNode if required', () => {
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo');
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo').and.callThrough();
service.getFolderNode('test-id', ['isLocked']);
@@ -196,7 +197,7 @@ describe('DocumentListService', () => {
});
it('should not add the includeTypes in the request getFolderNode if is duplicated', () => {
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo');
let spyGetNodeInfo = spyOn(alfrescoApiService.getInstance().nodes, 'getNodeInfo').and.callThrough();
service.getFolderNode('test-id', ['allowableOperations']);

View File

@@ -22,8 +22,8 @@ import {
import { Injectable } from '@angular/core';
import { MinimalNodeEntity, MinimalNodeEntryEntity, NodeEntry, NodePaging } from 'alfresco-js-api';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import { Observable, from, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class DocumentListService {
@@ -74,7 +74,7 @@ export class DocumentListService {
* @returns Empty response when the operation is complete
*/
deleteNode(nodeId: string): Observable<any> {
return Observable.fromPromise(this.apiService.getInstance().nodes.deleteNode(nodeId));
return from(this.apiService.getInstance().nodes.deleteNode(nodeId));
}
/**
@@ -85,8 +85,9 @@ export class DocumentListService {
* @returns NodeEntry for the copied node
*/
copyNode(nodeId: string, targetParentId: string) {
return Observable.fromPromise(this.apiService.getInstance().nodes.copyNode(nodeId, { targetParentId }))
.catch(err => this.handleError(err));
return from(this.apiService.getInstance().nodes.copyNode(nodeId, { targetParentId })).pipe(
catchError(err => this.handleError(err))
);
}
/**
@@ -97,8 +98,9 @@ export class DocumentListService {
* @returns NodeEntry for the moved node
*/
moveNode(nodeId: string, targetParentId: string) {
return Observable.fromPromise(this.apiService.getInstance().nodes.moveNode(nodeId, { targetParentId }))
.catch(err => this.handleError(err));
return from(this.apiService.getInstance().nodes.moveNode(nodeId, { targetParentId })).pipe(
catchError(err => this.handleError(err))
);
}
/**
@@ -108,9 +110,10 @@ export class DocumentListService {
* @returns Details of the created folder node
*/
createFolder(name: string, parentId: string): Observable<MinimalNodeEntity> {
let observable = Observable.fromPromise(this.apiService.getInstance().nodes.createFolder(name, '/', parentId));
observable.catch(err => this.handleError(err));
return observable;
return from(this.apiService.getInstance().nodes.createFolder(name, '/', parentId))
.pipe(
catchError(err => this.handleError(err))
);
}
/**
@@ -121,9 +124,10 @@ export class DocumentListService {
* @returns Details of the folder
*/
getFolder(folder: string, opts?: any, includeFields: string[] = []): Observable<NodePaging> {
return Observable.fromPromise(this.getNodesPromise(folder, opts, includeFields))
.map(res => <NodePaging> res)
.catch(err => this.handleError(err));
return from(this.getNodesPromise(folder, opts, includeFields))
.pipe(
catchError(err => this.handleError(err))
);
}
/**
@@ -162,7 +166,7 @@ export class DocumentListService {
include: includeFieldsRequest
};
return Observable.fromPromise(this.apiService.getInstance().nodes.getNodeInfo(nodeId, opts));
return from(this.apiService.getInstance().nodes.getNodeInfo(nodeId, opts));
}
/**
* Get thumbnail URL for the given document node.
@@ -202,9 +206,7 @@ export class DocumentListService {
}
private handleError(error: any) {
// in a real world app, we may send the error to some remote logging infrastructure
// instead of just logging it to the console
this.logService.error(error);
return Observable.throw(error || 'Server error');
return throwError(error || 'Server error');
}
}

View File

@@ -17,7 +17,7 @@
import { TestBed } from '@angular/core/testing';
import { AlfrescoApiServiceMock, AppConfigService, StorageService, ContentService, setupTestBed, CoreModule, TranslationMock } from '@alfresco/adf-core';
import { Observable } from 'rxjs/Observable';
import { Observable } from 'rxjs';
import { FileNode, FolderNode } from '../../mock';
import { ContentActionHandler } from '../models/content-action.model';
import { DocumentListService } from './document-list.service';

View File

@@ -18,13 +18,11 @@
import { ContentService, TranslationService } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { MinimalNodeEntity } from 'alfresco-js-api';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';
import { Observable, Subject, throwError } from 'rxjs';
import { ContentActionHandler } from '../models/content-action.model';
import { PermissionModel } from '../models/permissions.model';
import { DocumentListService } from './document-list.service';
import { NodeActionsService } from './node-actions.service';
import 'rxjs/add/observable/throw';
@Injectable()
export class FolderActionsService {
@@ -135,7 +133,7 @@ export class FolderActionsService {
return handlerObservable;
} else {
this.permissionEvent.next(new PermissionModel({type: 'folder', action: 'delete', permission: permission}));
return Observable.throw(new Error('No permission to delete'));
return throwError(new Error('No permission to delete'));
}
}
}

View File

@@ -21,7 +21,7 @@ import { AppConfigService, setupTestBed, CoreModule } from '@alfresco/adf-core';
import { DocumentListService } from './document-list.service';
import { NodeActionsService } from './node-actions.service';
import { ContentNodeDialogService } from '../../content-node-selector/content-node-dialog.service';
import { Observable } from 'rxjs/Observable';
import { of, throwError } from 'rxjs';
import { MatDialogRef } from '@angular/material';
import { DialogModule } from '../../dialogs/dialog.module';
@@ -65,8 +65,8 @@ describe('NodeActionsService', () => {
});
it('should be able to copy content', async(() => {
spyOn(documentListService, 'copyNode').and.returnValue(Observable.of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(Observable.of([fakeNode]));
spyOn(documentListService, 'copyNode').and.returnValue(of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(of([fakeNode]));
service.copyContent(fakeNode, 'allowed').subscribe((value) => {
expect(value).toBe('OPERATION.SUCCESS.CONTENT.COPY');
@@ -74,8 +74,8 @@ describe('NodeActionsService', () => {
}));
it('should be able to move content', async(() => {
spyOn(documentListService, 'moveNode').and.returnValue(Observable.of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(Observable.of([fakeNode]));
spyOn(documentListService, 'moveNode').and.returnValue(of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(of([fakeNode]));
service.moveContent(fakeNode, 'allowed').subscribe((value) => {
expect(value).toBe('OPERATION.SUCCESS.CONTENT.MOVE');
@@ -83,8 +83,8 @@ describe('NodeActionsService', () => {
}));
it('should be able to move folder', async(() => {
spyOn(documentListService, 'moveNode').and.returnValue(Observable.of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(Observable.of([fakeNode]));
spyOn(documentListService, 'moveNode').and.returnValue(of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(of([fakeNode]));
service.moveFolder(fakeNode, 'allowed').subscribe((value) => {
expect(value).toBe('OPERATION.SUCCESS.FOLDER.MOVE');
@@ -92,8 +92,8 @@ describe('NodeActionsService', () => {
}));
it('should be able to copy folder', async(() => {
spyOn(documentListService, 'copyNode').and.returnValue(Observable.of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(Observable.of([fakeNode]));
spyOn(documentListService, 'copyNode').and.returnValue(of('FAKE-OK'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(of([fakeNode]));
service.copyFolder(fakeNode, 'allowed').subscribe((value) => {
expect(value).toBe('OPERATION.SUCCESS.FOLDER.COPY');
@@ -101,8 +101,8 @@ describe('NodeActionsService', () => {
}));
it('should be able to propagate the dialog error', async(() => {
spyOn(documentListService, 'copyNode').and.returnValue(Observable.throw('FAKE-KO'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(Observable.of([fakeNode]));
spyOn(documentListService, 'copyNode').and.returnValue(throwError('FAKE-KO'));
spyOn(contentDialogService, 'openCopyMoveDialog').and.returnValue(of([fakeNode]));
service.copyFolder(fakeNode, '!allowed').subscribe((value) => {
}, (error) => {

View File

@@ -17,7 +17,7 @@
import { Injectable, Output, EventEmitter } from '@angular/core';
import { MinimalNodeEntryEntity, MinimalNodeEntity } from 'alfresco-js-api';
import { Subject } from 'rxjs/Subject';
import { Subject } from 'rxjs';
import { AlfrescoApiService, ContentService } from '@alfresco/adf-core';
import { MatDialog } from '@angular/material';