diff --git a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html index f910790485..ba631c35c5 100644 --- a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html +++ b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.html @@ -1,4 +1,4 @@ -
+
@@ -12,7 +12,7 @@ [showTitle]="showTitle" [taskId]="taskId" [taskDetails]="taskDetails" - [showNextTaskCheckbox]="showNextTaskCheckbox" + [showNextTaskCheckbox]="showNextTaskCheckbox && canCompleteTask()" [isNextTaskCheckboxChecked]="isNextTaskCheckboxChecked" (cancelClick)="onCancelForm()" (executeOutcome)="onExecuteOutcome($event)" @@ -38,7 +38,6 @@ [showCancelButton]="showCancelButton" [taskName]="taskDetails.name" [taskId]="taskId" - (cancelTask)="onCancelClick()" (claimTask)="onClaimTask()" (error)="onError($event)" @@ -63,10 +62,17 @@ + [subtitle]="'ADF_CLOUD_TASK_FORM.EMPTY_FORM.SUBTITLE'" + /> - {{'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate}} + {{ 'ADF_CLOUD_TASK_FORM.OPEN_NEXT_TASK.LABEL' | translate }} + -
diff --git a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts index bcaba9c77c..0d9f31add8 100644 --- a/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.spec.ts @@ -482,28 +482,89 @@ describe('UserTaskCloudComponent', () => { it('should allow controlling [open next task] checkbox visibility', () => { taskDetails.formKey = 'form'; component.getTaskType(); + component.taskId = 'taskId'; + component.appName = 'app'; + + const spy = spyOn(taskCloudService, 'canCompleteTask'); const isCheckboxShown = () => { const checkbox = fixture.debugElement.query(By.css('#adf-form-open-next-task')); return !!checkbox; }; - fixture.detectChanges(); + const prepareTestCase = (testCase: { + showNextTaskCheckbox: boolean; + showCompleteButton: boolean; + readOnly: boolean; + canCompleteTask: boolean; + }): void => { + component.showNextTaskCheckbox = testCase.showNextTaskCheckbox; + component.showCompleteButton = testCase.showCompleteButton; + component.readOnly = testCase.readOnly; + spy.calls.reset(); + spy.and.returnValue(testCase.canCompleteTask); + fixture.detectChanges(); + }; + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: false, canCompleteTask: false }); expect(isCheckboxShown()).toBeFalse(); - component.showNextTaskCheckbox = true; - fixture.detectChanges(); + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: false, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: false, showCompleteButton: true, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: false, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: false, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: true, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: true, canCompleteTask: true }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: false, canCompleteTask: false }); + expect(isCheckboxShown()).toBeFalse(); + + prepareTestCase({ showNextTaskCheckbox: true, showCompleteButton: true, readOnly: false, canCompleteTask: true }); expect(isCheckboxShown()).toBeTrue(); - - component.showNextTaskCheckbox = false; - fixture.detectChanges(); - expect(isCheckboxShown()).toBeFalse(); }); it('should allow controlling [open next task] checkbox value', async () => { taskDetails.formKey = 'form'; component.getTaskType(); + + component.taskId = 'taskId'; + component.appName = 'app'; component.showNextTaskCheckbox = true; + component.showCompleteButton = true; + component.readOnly = false; + spyOn(taskCloudService, 'canCompleteTask').and.returnValue(true); const isCheckboxChecked = async () => { const checkbox = await loader.getHarness(MatCheckboxHarness.with({ selector: '#adf-form-open-next-task' })); @@ -526,7 +587,13 @@ describe('UserTaskCloudComponent', () => { taskDetails.formKey = 'form'; component.getTaskType(); + component.taskId = 'taskId'; + component.appName = 'app'; component.showNextTaskCheckbox = true; + component.showCompleteButton = true; + component.readOnly = false; + spyOn(taskCloudService, 'canCompleteTask').and.returnValue(true); + fixture.detectChanges(); const checkbox = await loader.getHarnessOrNull(MatCheckboxHarness);