[ADF-1949] fix issue that appears on call action on chosenNode from c… (#2690)

* [ADF-1949] fix issue that appears on call action on chosenNode from custom source list

* [ADF-1949] update unit tests
This commit is contained in:
suzanadirla
2017-11-22 14:46:40 +02:00
committed by Denys Vuika
parent afc289527c
commit c91301d9a5
2 changed files with 49 additions and 3 deletions

View File

@@ -53,6 +53,8 @@ describe('ContentNodeSelectorComponent', () => {
let data: any;
let searchService: SearchService;
let searchSpy: jasmine.Spy;
let apiService: AlfrescoApiService;
let nodesApi;
let _resolve: Function;
@@ -203,6 +205,10 @@ describe('ContentNodeSelectorComponent', () => {
_resolve = resolve;
});
});
apiService = TestBed.get(AlfrescoApiService);
nodesApi = apiService.nodesApi;
});
describe('Parameters', () => {
@@ -670,6 +676,32 @@ describe('ContentNodeSelectorComponent', () => {
let chooseButton = fixture.debugElement.query(By.css('[data-automation-id="content-node-selector-actions-choose"]'));
expect(chooseButton.nativeElement.disabled).toBe(true);
});
it('should make the call to get the corresponding node entry to emit when a site node is selected as destination', () => {
spyOn(nodesApi, 'getNode').and.callFake((nodeId) => {
return new Promise(resolve => {
resolve({entry: {id: nodeId}});
});
});
const siteNode1 = {title: 'my files', guid: '-my-'};
const siteNode2 = {title: 'my sites', guid: '-mysites-'};
component.dropdownSiteList = [siteNode1, siteNode2];
fixture.detectChanges();
component.chosenNode = siteNode1;
fixture.detectChanges();
component.choose();
const options = {
include: ['path', 'properties', 'allowableOperations']
};
expect(nodesApi.getNode).toHaveBeenCalledWith(
'-my-',
options
);
});
});
});
});

View File

@@ -18,7 +18,7 @@
import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
import { AlfrescoApiService, ContentService, HighlightDirective, SiteModel, UserPreferencesService } from '@alfresco/adf-core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { MinimalNodeEntryEntity, NodePaging, Pagination } from 'alfresco-js-api';
import { MinimalNodeEntryEntity, NodePaging, Pagination, Site } from 'alfresco-js-api';
import { DocumentListComponent, PaginationStrategy } from '../document-list/components/document-list.component';
import { RowFilter } from '../document-list/data/row-filter.model';
import { ImageResolver } from '../document-list/data/image-resolver.model';
@@ -40,7 +40,7 @@ export class ContentNodeSelectorComponent implements OnInit {
showingSearchResults: boolean = false;
loadingSearchResults: boolean = false;
inDialog: boolean = false;
chosenNode: MinimalNodeEntryEntity | null = null;
chosenNode: MinimalNodeEntryEntity | Site | null = null;
folderIdToShow: string | null = null;
paginationStrategy: PaginationStrategy;
pagination: Pagination;
@@ -288,7 +288,21 @@ export class ContentNodeSelectorComponent implements OnInit {
* Emit event with the chosen node
*/
choose(): void {
this.select.next([this.chosenNode]);
const entry: any = this.chosenNode;
if (entry && entry.guid) {
const options = {
include: ['path', 'properties', 'allowableOperations']
};
this.apiService.nodesApi.getNode(entry.guid, options)
.then(chosenSiteNode => {
this.select.next([chosenSiteNode.entry]);
});
} else {
this.select.next([this.chosenNode]);
}
}
/**