From 1838818295f73b07c2425116fe01d9e5a047243f Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Wed, 6 Jun 2018 23:06:42 +0100 Subject: [PATCH] [ADF-3062] dual api support for Favorites (#3447) * dual api support for Favorites * unit test --- .../node-favorite.directive.spec.ts | 19 ++++++++++++++++++- .../directives/node-favorite.directive.ts | 12 ++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/core/directives/node-favorite.directive.spec.ts b/lib/core/directives/node-favorite.directive.spec.ts index c719046634..81ea5668ea 100644 --- a/lib/core/directives/node-favorite.directive.spec.ts +++ b/lib/core/directives/node-favorite.directive.spec.ts @@ -21,11 +21,12 @@ import { NodeFavoriteDirective } from './node-favorite.directive'; import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock'; import { AppConfigService } from '../app-config/app-config.service'; import { StorageService } from '../services/storage.service'; +import { AlfrescoApiService } from '../services/alfresco-api.service'; describe('NodeFavoriteDirective', () => { let directive; - let alfrescoApiService; + let alfrescoApiService: AlfrescoApiService; beforeEach(() => { alfrescoApiService = new AlfrescoApiServiceMock(new AppConfigService(null), new StorageService()); @@ -316,6 +317,22 @@ describe('NodeFavoriteDirective', () => { }); describe('getFavorite()', () => { + + it('should not hit server when using 6.x api', fakeAsync(() => { + spyOn(alfrescoApiService.favoritesApi, 'getFavorite').and.callThrough(); + + const selection = [ + { entry: { id: '1', name: 'name1', isFavorite: true } } + ]; + + let change = new SimpleChange(null, selection, true); + directive.ngOnChanges({'selection': change}); + tick(); + + expect(directive.favorites[0].entry.isFavorite).toBe(true); + expect(alfrescoApiService.favoritesApi.getFavorite).not.toHaveBeenCalled(); + })); + it('should process node as favorite', fakeAsync(() => { spyOn(alfrescoApiService.getInstance().core.favoritesApi, 'getFavorite').and.returnValue(Promise.resolve()); diff --git a/lib/core/directives/node-favorite.directive.ts b/lib/core/directives/node-favorite.directive.ts index bb7fb05902..6f527950a9 100644 --- a/lib/core/directives/node-favorite.directive.ts +++ b/lib/core/directives/node-favorite.directive.ts @@ -125,9 +125,17 @@ export class NodeFavoriteDirective implements OnChanges { } private getFavorite(selected: MinimalNodeEntity): Observable { - const { name, isFile, isFolder } = selected.entry; + const node = selected.entry; + + // ACS 6.x with 'isFavorite' include + if (node && node.hasOwnProperty('isFavorite')) { + return Observable.of(selected); + } + + // ACS 5.x and 6.x without 'isFavorite' include + const { name, isFile, isFolder } = node; // shared files have nodeId - const id = ( selected).entry.nodeId || selected.entry.id; + const id = node.nodeId || node.id; const promise = this.alfrescoApiService.favoritesApi.getFavorite('-me-', id);