mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
[AAE-3467] - Fix Uploaded files are not being attached after selecting more files (#6506)
* Fix selection not working after uploading files, simplify if else conditions * add unit test
This commit is contained in:
parent
8e12e51fb3
commit
9947d6aa40
@ -27,7 +27,8 @@ import {
|
|||||||
DataTableModule,
|
DataTableModule,
|
||||||
ObjectDataTableAdapter,
|
ObjectDataTableAdapter,
|
||||||
ShowHeaderMode,
|
ShowHeaderMode,
|
||||||
ThumbnailService
|
ThumbnailService,
|
||||||
|
ContentService
|
||||||
} from '@alfresco/adf-core';
|
} from '@alfresco/adf-core';
|
||||||
import { Subject, of, throwError } from 'rxjs';
|
import { Subject, of, throwError } from 'rxjs';
|
||||||
import {
|
import {
|
||||||
@ -52,6 +53,7 @@ import { NodeEntry } from '@alfresco/js-api';
|
|||||||
import { By } from '@angular/platform-browser';
|
import { By } from '@angular/platform-browser';
|
||||||
import { DocumentListModule } from '../document-list.module';
|
import { DocumentListModule } from '../document-list.module';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { ShareDataRow } from '../data/share-data-row.model';
|
||||||
|
|
||||||
describe('DocumentList', () => {
|
describe('DocumentList', () => {
|
||||||
|
|
||||||
@ -60,6 +62,7 @@ describe('DocumentList', () => {
|
|||||||
let apiService: AlfrescoApiService;
|
let apiService: AlfrescoApiService;
|
||||||
let customResourcesService: CustomResourcesService;
|
let customResourcesService: CustomResourcesService;
|
||||||
let thumbnailService: ThumbnailService;
|
let thumbnailService: ThumbnailService;
|
||||||
|
let contentService: ContentService;
|
||||||
let fixture: ComponentFixture<DocumentListComponent>;
|
let fixture: ComponentFixture<DocumentListComponent>;
|
||||||
let element: HTMLElement;
|
let element: HTMLElement;
|
||||||
let eventMock: any;
|
let eventMock: any;
|
||||||
@ -91,6 +94,7 @@ describe('DocumentList', () => {
|
|||||||
apiService = TestBed.inject(AlfrescoApiService);
|
apiService = TestBed.inject(AlfrescoApiService);
|
||||||
customResourcesService = TestBed.inject(CustomResourcesService);
|
customResourcesService = TestBed.inject(CustomResourcesService);
|
||||||
thumbnailService = TestBed.inject(ThumbnailService);
|
thumbnailService = TestBed.inject(ThumbnailService);
|
||||||
|
contentService = TestBed.inject(ContentService);
|
||||||
|
|
||||||
spyFolder = spyOn(documentListService, 'getFolder').and.callFake(() => {
|
spyFolder = spyOn(documentListService, 'getFolder').and.callFake(() => {
|
||||||
return Promise.resolve({ list: {} });
|
return Promise.resolve({ list: {} });
|
||||||
@ -1544,7 +1548,7 @@ describe('DocumentList', () => {
|
|||||||
expect(nodeSelectedSpy).toHaveBeenCalled();
|
expect(nodeSelectedSpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should able to select first node from the preselectNodes when selectionMode set to single', async () => {
|
it('should be able to select first node from the preselectNodes when selectionMode set to single', async () => {
|
||||||
documentList.selectionMode = 'single';
|
documentList.selectionMode = 'single';
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
@ -1559,7 +1563,7 @@ describe('DocumentList', () => {
|
|||||||
expect(documentList.getPreselectNodesBasedOnSelectionMode().length).toBe(1);
|
expect(documentList.getPreselectNodesBasedOnSelectionMode().length).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should able to select all preselectNodes when selectionMode set to multiple', async () => {
|
it('should be able to select all preselectNodes when selectionMode set to multiple', async () => {
|
||||||
documentList.selectionMode = 'multiple';
|
documentList.selectionMode = 'multiple';
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
@ -1574,7 +1578,22 @@ describe('DocumentList', () => {
|
|||||||
expect(documentList.getPreselectNodesBasedOnSelectionMode().length).toBe(2);
|
expect(documentList.getPreselectNodesBasedOnSelectionMode().length).toBe(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not emit nodeSelected event when preselectNodes undefined/empty', async () => {
|
it('should call the datatable select row method for each preselected node', async () => {
|
||||||
|
const datatableSelectRowSpy = spyOn(documentList.dataTable, 'selectRow');
|
||||||
|
const fakeDatatableRows = [new ShareDataRow(mockPreselectedNodes[0], contentService, null), new ShareDataRow(mockPreselectedNodes[1], contentService, null)];
|
||||||
|
spyOn(documentList.data, 'getPreselectRows').and.returnValue(fakeDatatableRows);
|
||||||
|
|
||||||
|
documentList.selectionMode = 'multiple';
|
||||||
|
documentList.preselectNodes = mockPreselectedNodes;
|
||||||
|
documentList.onPreselectNodes();
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
|
await fixture.whenStable();
|
||||||
|
|
||||||
|
expect(datatableSelectRowSpy.calls.count()).toEqual(fakeDatatableRows.length);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not emit nodeSelected event when preselectNodes is undefined/empty', async () => {
|
||||||
const nodeSelectedSpy = spyOn(documentList.nodeSelected, 'emit');
|
const nodeSelectedSpy = spyOn(documentList.nodeSelected, 'emit');
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@ -44,8 +44,7 @@ import {
|
|||||||
RequestPaginationModel,
|
RequestPaginationModel,
|
||||||
AlfrescoApiService,
|
AlfrescoApiService,
|
||||||
UserPreferenceValues,
|
UserPreferenceValues,
|
||||||
LockService,
|
LockService
|
||||||
DataRow
|
|
||||||
} from '@alfresco/adf-core';
|
} from '@alfresco/adf-core';
|
||||||
|
|
||||||
import { Node, NodeEntry, NodePaging, Pagination } from '@alfresco/js-api';
|
import { Node, NodeEntry, NodePaging, Pagination } from '@alfresco/js-api';
|
||||||
@ -634,13 +633,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
|||||||
*/
|
*/
|
||||||
executeContentAction(node: NodeEntry, action: ContentActionModel) {
|
executeContentAction(node: NodeEntry, action: ContentActionModel) {
|
||||||
if (node && node.entry && action) {
|
if (node && node.entry && action) {
|
||||||
let handlerSub;
|
const handlerSub = (typeof action.handler === 'function') ? action.handler(node, this, action.permission) : of(true);
|
||||||
|
|
||||||
if (typeof action.handler === 'function') {
|
|
||||||
handlerSub = action.handler(node, this, action.permission);
|
|
||||||
} else {
|
|
||||||
handlerSub = of(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof action.execute === 'function' && handlerSub) {
|
if (typeof action.execute === 'function' && handlerSub) {
|
||||||
handlerSub
|
handlerSub
|
||||||
@ -879,12 +872,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
|||||||
|
|
||||||
private loadLayoutPresets(): void {
|
private loadLayoutPresets(): void {
|
||||||
const externalSettings = this.appConfig.get('document-list.presets', null);
|
const externalSettings = this.appConfig.get('document-list.presets', null);
|
||||||
|
this.layoutPresets = externalSettings ? Object.assign({}, presetsDefaultModel, externalSettings) : presetsDefaultModel;
|
||||||
if (externalSettings) {
|
|
||||||
this.layoutPresets = Object.assign({}, presetsDefaultModel, externalSettings);
|
|
||||||
} else {
|
|
||||||
this.layoutPresets = presetsDefaultModel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private onDataReady(nodePaging: NodePaging) {
|
private onDataReady(nodePaging: NodePaging) {
|
||||||
@ -932,29 +920,17 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte
|
|||||||
}
|
}
|
||||||
|
|
||||||
getPreselectNodesBasedOnSelectionMode(): NodeEntry[] {
|
getPreselectNodesBasedOnSelectionMode(): NodeEntry[] {
|
||||||
let selectedNodes: NodeEntry[] = [];
|
return this.hasPreselectNodes() ? (this.isSingleSelectionMode() ? [this.preselectNodes[0]] : this.preselectNodes) : [];
|
||||||
|
|
||||||
if (this.hasPreselectNodes()) {
|
|
||||||
if (this.isSingleSelectionMode()) {
|
|
||||||
selectedNodes = [this.preselectNodes[0]];
|
|
||||||
} else {
|
|
||||||
selectedNodes = this.preselectNodes;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return selectedNodes;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private onPreselectNodes() {
|
onPreselectNodes() {
|
||||||
if (this.hasPreselectNodes()) {
|
if (this.hasPreselectNodes()) {
|
||||||
let selectedNodes: DataRow[] = [];
|
const preselectedNodes = [...this.isSingleSelectionMode() ? [this.data.getPreselectRows()[0]] : this.data.getPreselectRows()];
|
||||||
|
const selectedNodes = [...this.selection, ...preselectedNodes];
|
||||||
|
|
||||||
if (this.isSingleSelectionMode()) {
|
for (const node of preselectedNodes) {
|
||||||
selectedNodes = [this.data.getPreselectRows()[0]];
|
this.dataTable.selectRow(node, true);
|
||||||
} else {
|
|
||||||
selectedNodes = this.data.getPreselectRows();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.onNodeSelect({ row: undefined, selection: <ShareDataRow[]> selectedNodes });
|
this.onNodeSelect({ row: undefined, selection: <ShareDataRow[]> selectedNodes });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user