From 9b74063032e0b4a88fcce5be713b9c4246db6bd8 Mon Sep 17 00:00:00 2001 From: Cilibiu Bogdan Date: Fri, 21 Jun 2019 17:34:16 +0300 Subject: [PATCH] update edited folder node (#1136) --- .../content-management.service.spec.ts | 59 +++++++++++++++++-- .../services/content-management.service.ts | 5 +- 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/app/services/content-management.service.spec.ts b/src/app/services/content-management.service.spec.ts index 2c33097f3..4572aba2b 100644 --- a/src/app/services/content-management.service.spec.ts +++ b/src/app/services/content-management.service.spec.ts @@ -24,7 +24,7 @@ */ import { TestBed, fakeAsync, tick, flush } from '@angular/core/testing'; -import { of, throwError } from 'rxjs'; +import { of, throwError, Subject } from 'rxjs'; import { Actions, ofType, EffectsModule } from '@ngrx/effects'; import { AppStore, @@ -49,7 +49,7 @@ import { ContentApiService } from '@alfresco/aca-shared'; import { Store } from '@ngrx/store'; import { ContentManagementService } from './content-management.service'; import { NodeActionsService } from './node-actions.service'; -import { TranslationService } from '@alfresco/adf-core'; +import { TranslationService, AlfrescoApiService } from '@alfresco/adf-core'; import { MatDialog } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; import { @@ -66,6 +66,7 @@ describe('ContentManagementService', () => { let snackBar: MatSnackBar; let nodeActions: NodeActionsService; let translationService: TranslationService; + let alfrescoApiService: AlfrescoApiService; beforeEach(() => { TestBed.configureTestingModule({ @@ -79,6 +80,7 @@ describe('ContentManagementService', () => { snackBar = TestBed.get(MatSnackBar); nodeActions = TestBed.get(NodeActionsService); translationService = TestBed.get(TranslationService); + alfrescoApiService = TestBed.get(AlfrescoApiService); dialog = TestBed.get(MatDialog); }); @@ -675,8 +677,6 @@ describe('ContentManagementService', () => { spyOn(snackBar, 'open').and.returnValue({ onAction: () => of({}) }); - - // spyOn(snackBar, 'open').and.callThrough(); }); it('should move node back to initial parent, after succeeded move', () => { @@ -1588,4 +1588,55 @@ describe('ContentManagementService', () => { expect(dialogRef).toBe(mockDialogInstance); }); }); + + describe('editFolder', () => { + it('should open dialog with FolderDialogComponent instance', () => { + const mockDialogInstance = { + componentInstance: { error: of() }, + afterClosed: () => of() + }; + const node = { entry: { id: '1', name: 'name1', isFolder: true } }; + spyOn(dialog, 'open').and.returnValue(mockDialogInstance); + + contentManagementService.editFolder(node); + + expect(dialog.open['calls'].argsFor(0)[0].name).toBe( + 'FolderDialogComponent' + ); + }); + + it('should raise error when edit operation fails', fakeAsync(() => { + const mockDialogInstance = { + componentInstance: { error: new Subject() }, + afterClosed: () => of() + }; + const node = { entry: { id: '1', name: 'name1', isFolder: true } }; + spyOn(dialog, 'open').and.returnValue(mockDialogInstance); + spyOn(store, 'dispatch').and.callThrough(); + + contentManagementService.editFolder(node); + + mockDialogInstance.componentInstance.error.next('edit folder error'); + + expect(store.dispatch['calls'].argsFor(0)[0]).toEqual( + new SnackbarErrorAction('edit folder error') + ); + })); + + it('should call nodeUpdated event with edited node data', fakeAsync(() => { + const node = { entry: { id: '1', name: 'name1' } }; + const newNode = { entry: { id: '1', name: 'name-edited' } }; + const mockDialogInstance = { + componentInstance: { error: new Subject() }, + afterClosed: () => of(newNode) + }; + + spyOn(alfrescoApiService.nodeUpdated, 'next'); + spyOn(dialog, 'open').and.returnValue(mockDialogInstance); + + contentManagementService.editFolder(node); + + expect(alfrescoApiService.nodeUpdated.next).toHaveBeenCalledWith(newNode); + })); + }); }); diff --git a/src/app/services/content-management.service.ts b/src/app/services/content-management.service.ts index 5b57b4065..b2bbb4313 100644 --- a/src/app/services/content-management.service.ts +++ b/src/app/services/content-management.service.ts @@ -48,7 +48,7 @@ import { LibraryDialogComponent, ShareDialogComponent } from '@alfresco/adf-content-services'; -import { TranslationService } from '@alfresco/adf-core'; +import { TranslationService, AlfrescoApiService } from '@alfresco/adf-core'; import { DeletedNodesPaging, MinimalNodeEntity, @@ -94,6 +94,7 @@ export class ContentManagementService { favoriteLibraryToggle = new Subject(); constructor( + private alfrescoApiService: AlfrescoApiService, private store: Store, private contentApi: ContentApiService, private permission: NodePermissionService, @@ -263,7 +264,7 @@ export class ContentManagementService { dialog.afterClosed().subscribe(node => { if (node) { - this.store.dispatch(new ReloadDocumentListAction()); + this.alfrescoApiService.nodeUpdated.next(node); } }); }