mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[AAE-1925] Add unit tests for Task List Component (#5484)
This commit is contained in:
@@ -556,6 +556,159 @@ describe('TaskListComponent', () => {
|
|||||||
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
it('should be able to select all tasks when multi-selection is enabled', async(() => {
|
||||||
|
spyOn(taskListService, 'findTasksByState').and.returnValues(of(fakeGlobalTask));
|
||||||
|
const state = new SimpleChange(null, 'open', true);
|
||||||
|
component.multiselect = true;
|
||||||
|
|
||||||
|
component.ngOnChanges({ 'sort': state });
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const selectAllCheckbox = fixture.nativeElement.querySelector('div[class*="adf-datatable-cell-header adf-datatable-checkbox"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
selectAllCheckbox.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
expect(component.selectedInstances.length).toBe(2);
|
||||||
|
expect(component.selectedInstances[0].obj.name).toBe('nameFake1');
|
||||||
|
expect(component.selectedInstances[1].obj.description).toBe('descriptionFake2');
|
||||||
|
|
||||||
|
selectAllCheckbox.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.selectedInstances.length).toBe(0);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should be able to unselect a selected tasks using the checkbox', async(() => {
|
||||||
|
spyOn(taskListService, 'findTasksByState').and.returnValues(of(fakeGlobalTask));
|
||||||
|
const state = new SimpleChange(null, 'open', true);
|
||||||
|
component.multiselect = true;
|
||||||
|
|
||||||
|
component.ngOnChanges({ 'sort': state });
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const selectTask1 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-0"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
const selectTask2 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-1"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
let selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
let selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeDefined();
|
||||||
|
expect(selectRow2).toBeDefined();
|
||||||
|
expect(component.selectedInstances.length).toBe(2);
|
||||||
|
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.selectedInstances.length).toBe(1);
|
||||||
|
selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeDefined();
|
||||||
|
expect(selectRow2).toBeNull();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should not be able to select different row when selection mode is set to NONE and multiselection is enabled', async(() => {
|
||||||
|
spyOn(taskListService, 'findTasksByState').and.returnValues(of(fakeGlobalTask));
|
||||||
|
const state = new SimpleChange(null, 'open', true);
|
||||||
|
component.multiselect = true;
|
||||||
|
component.selectionMode = 'none';
|
||||||
|
|
||||||
|
component.ngOnChanges({ 'sort': state });
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const selectTask1 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-0"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
const selectTask2 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-1"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
let selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
let selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeDefined();
|
||||||
|
expect(selectRow2).toBeDefined();
|
||||||
|
expect(component.selectedInstances.length).toBe(2);
|
||||||
|
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.selectedInstances.length).toBe(1);
|
||||||
|
selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeDefined();
|
||||||
|
expect(selectRow2).toBeNull();
|
||||||
|
|
||||||
|
const selectTask2Row = fixture.nativeElement.querySelector('[data-automation-id="text_No name"]');
|
||||||
|
selectTask2Row.click();
|
||||||
|
|
||||||
|
selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeDefined();
|
||||||
|
expect(selectRow2).toBeNull();
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should select only one row when selection mode is set to SINGLE and multiselection is enabled', async(() => {
|
||||||
|
spyOn(taskListService, 'findTasksByState').and.returnValues(of(fakeGlobalTask));
|
||||||
|
const state = new SimpleChange(null, 'open', true);
|
||||||
|
component.multiselect = true;
|
||||||
|
component.selectionMode = 'single';
|
||||||
|
|
||||||
|
component.ngOnChanges({ 'sort': state });
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const selectTask1 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-0"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
const selectTask2 = fixture.nativeElement.querySelector('[data-automation-id="datatable-row-1"] div[class="mat-checkbox-inner-container"]');
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask1.click();
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
expect(component.selectedInstances.length).toBe(2);
|
||||||
|
const selectTask2Row = fixture.nativeElement.querySelector('[data-automation-id="text_No name"]');
|
||||||
|
selectTask2Row.click();
|
||||||
|
|
||||||
|
fixture.detectChanges();
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
fixture.detectChanges();
|
||||||
|
expect(component.selectedInstances.length).toBe(1);
|
||||||
|
const selectRow1 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-0"]');
|
||||||
|
const selectRow2 = fixture.nativeElement.querySelector('[class*="adf-is-selected"][data-automation-id="datatable-row-1"]');
|
||||||
|
expect(selectRow1).toBeNull();
|
||||||
|
expect(selectRow2).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
it('should change selected row after clicking on different row', async(() => {
|
||||||
|
spyOn(taskListService, 'findTasksByState').and.returnValues(of(fakeGlobalTask));
|
||||||
|
const state = new SimpleChange(null, 'open', true);
|
||||||
|
|
||||||
|
component.ngOnChanges({ 'sort': state });
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
const selectTask1 = fixture.nativeElement.querySelector('[data-automation-id="text_nameFake1"]');
|
||||||
|
const selectTask2 = fixture.nativeElement.querySelector('[data-automation-id="text_No name"]');
|
||||||
|
selectTask1.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
expect(component.currentInstanceId.toString()).toBe('14');
|
||||||
|
|
||||||
|
selectTask2.click();
|
||||||
|
fixture.detectChanges();
|
||||||
|
fixture.whenStable().then(() => {
|
||||||
|
expect(component.currentInstanceId.toString()).toBe('2');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
Reference in New Issue
Block a user