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({
|
||||
|
Reference in New Issue
Block a user