HXIDP-5126 Fix adf-cloud-task-screen re-initialization on completing (#11291)

* HXIDP-5126 Fix adf-cloud-task-screen re-initialization on completing

* Make task type optional
This commit is contained in:
Leu Kastsiuchenka
2025-10-22 13:15:05 +02:00
committed by GitHub
parent 81a0ee0963
commit 983d505309
3 changed files with 44 additions and 4 deletions
@@ -47,7 +47,7 @@
(cancelTask)="onCancelClick()"
(claimTask)="onClaimTask()"
(error)="onError($event)"
(taskCompleted)="onCompleteTask($event)"
(taskCompleted)="onCompleteTask($event, taskType)"
(taskSaved)="onFormSaved()"
(unclaimTask)="onUnclaimTask()"
(nextTaskCheckboxCheckedChanged)="onNextTaskCheckboxCheckedChanged($event)"
@@ -80,7 +80,7 @@
adf-cloud-complete-task
[appName]="appName"
[taskId]="taskId"
(success)="onCompleteTask()"
(success)="onCompleteTask(false, taskType)"
(error)="onError($event)"
color="primary"
id="adf-form-complete"
@@ -760,4 +760,42 @@ describe('UserTaskCloudComponent', () => {
expect(component.formLoaded.emit).toHaveBeenCalledWith(mockForm);
});
it('should not load task for task screen on complete', () => {
component.taskId = 't1';
component.taskType = 'screen';
component.taskDetails = taskDetails;
component.taskDetails.processInstanceId = 'p1';
component.taskDetails.rootProcessInstanceId = 'rp1';
fixture.detectChanges();
spyOn(component.taskCompleted, 'emit');
const onCompleteSpy = spyOn(component, 'onCompleteTask').and.callThrough();
const screenDebugEl = fixture.debugElement.query(By.css('adf-cloud-task-screen'));
expect(screenDebugEl).toBeTruthy('adf-cloud-task-screen should be present in template');
const screenCompInstance = screenDebugEl.componentInstance as TaskScreenCloudMockComponent;
const payload = true;
screenCompInstance.taskCompleted.emit(payload);
fixture.detectChanges();
expect(onCompleteSpy).toHaveBeenCalledWith(payload, 'screen');
expect(component.taskCompleted.emit).toHaveBeenCalledWith(payload);
expect(getTaskSpy).not.toHaveBeenCalled();
});
it('should load task for non task screen on complete', () => {
spyOn(component.taskCompleted, 'emit');
component.onCompleteTask(true, 'form');
expect(component.taskCompleted.emit).toHaveBeenCalledTimes(1);
expect(getTaskSpy).toHaveBeenCalledTimes(1);
component.onCompleteTask(true, '');
expect(component.taskCompleted.emit).toHaveBeenCalledTimes(2);
expect(getTaskSpy).toHaveBeenCalledTimes(2);
});
});
@@ -247,8 +247,10 @@ export class UserTaskCloudComponent implements OnInit, OnChanges {
this.taskClaimed.emit(this.taskId);
}
onCompleteTask(openNextTask: boolean = false): void {
this.loadTask();
onCompleteTask(openNextTask: boolean = false, taskType?: UserTaskType): void {
if (!taskType || taskType !== UserTaskContentType.Screen) {
this.loadTask();
}
this.taskCompleted.emit(openNextTask);
}