diff --git a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts index d5d8f6b7e5..9168f5d13f 100644 --- a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.spec.ts @@ -26,7 +26,7 @@ import { import { ProcessServiceCloudTestingModule } from '../../testing/process-service-cloud.testing.module'; import { FormCloudService } from '../services/form-cloud.service'; import { FormCloudComponent } from './form-cloud.component'; -import { cloudFormMock, fakeCloudForm } from '../mocks/cloud-form.mock'; +import { cloudFormMock, emptyFormRepresentationJSON, fakeCloudForm } from '../mocks/cloud-form.mock'; import { FormCloudRepresentation } from '../models/form-cloud-representation.model'; describe('FormCloudComponent', () => { @@ -641,13 +641,6 @@ describe('FormCloudComponent', () => { expect(form.fields[0].id).toBe('field1'); }); - it('should provide outcomes for form definition', () => { - spyOn(formComponent, 'getFormDefinitionOutcomes').and.callThrough(); - - const form = formComponent.parseForm({ id: '1' }); - expect(formComponent.getFormDefinitionOutcomes).toHaveBeenCalledWith(form); - }); - it('should prevent default outcome execution', () => { const outcome = new FormOutcomeModel( new FormModel(), { @@ -733,6 +726,13 @@ describe('FormCloudComponent', () => { expect(formComponent.isOutcomeButtonEnabled(completeOutcome)).toBeTruthy(); }); + it('should complete outcome button be present when the form is empty', async () => { + formComponent.form = formComponent.parseForm(emptyFormRepresentationJSON); + expect(formComponent.form.isValid).toBeTruthy(); + const completeOutcome = formComponent.form.outcomes.find((outcome) => outcome.name === FormOutcomeModel.COMPLETE_ACTION); + expect(formComponent.isOutcomeButtonEnabled(completeOutcome)).toBeTruthy(); + }); + it('should disable save outcome button when disableSaveButton is true', () => { const formModel = new FormModel(cloudFormMock); formComponent.form = formModel; diff --git a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts index fb7501d116..a16355ae0b 100644 --- a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.ts @@ -300,7 +300,7 @@ export class FormCloudComponent extends FormBaseComponent implements OnChanges, }); const form = new FormModel(formCloudRepresentationJSON, formValues, this.readOnly); - if (!form || !form.fields.length) { + if (!form) { form.outcomes = this.getFormDefinitionOutcomes(form); } if (this.fieldValidators && this.fieldValidators.length > 0) { diff --git a/lib/process-services-cloud/src/lib/form/mocks/cloud-form.mock.ts b/lib/process-services-cloud/src/lib/form/mocks/cloud-form.mock.ts index 4de430f69b..366ec700b9 100644 --- a/lib/process-services-cloud/src/lib/form/mocks/cloud-form.mock.ts +++ b/lib/process-services-cloud/src/lib/form/mocks/cloud-form.mock.ts @@ -739,3 +739,22 @@ export let fakeCloudForm = { } } }; + +export const emptyFormRepresentationJSON = { + 'description': '', + 'fields': [], + 'id': 'form-3de070b6-63df-4058-8028-ac82283d64fa', + 'metadata': {}, + 'name': 'form', + 'outcomes': [], + 'length': 0, + 'processDefinitionId': 'ed4a6233-0ad8-11ea-8616-e6267bbdb057', + 'processInstanceId': 'ec921948-0ad9-11ea-8616-e6267bbdb057', + 'processVariables': [], + 'standAlone': true, + 'tabs': [], + 'taskId': 'ec92194b-0ad9-11ea-8616-e6267bbdb057', + 'taskName': null, + 'variables': [], + 'version': 0 +};