From 95716ae50ffc2b7c4d4b391976e77ed09cc398aa Mon Sep 17 00:00:00 2001 From: eromano Date: Thu, 15 May 2025 18:39:08 +0200 Subject: [PATCH] fix test --- .../widgets/core/form-field.model.spec.ts | 28 +++++-------------- .../dropdown/dropdown-cloud.widget.spec.ts | 2 +- .../widgets/dropdown/dropdown-cloud.widget.ts | 6 +++- .../widgets/dropdown/validator.spec.ts | 12 +------- .../src/lib/form/form.component.spec.ts | 4 +-- 5 files changed, 16 insertions(+), 36 deletions(-) diff --git a/lib/core/src/lib/form/components/widgets/core/form-field.model.spec.ts b/lib/core/src/lib/form/components/widgets/core/form-field.model.spec.ts index 446f7d43eb..a49a9cb1e9 100644 --- a/lib/core/src/lib/form/components/widgets/core/form-field.model.spec.ts +++ b/lib/core/src/lib/form/components/widgets/core/form-field.model.spec.ts @@ -146,7 +146,7 @@ describe('FormFieldModel', () => { }); expect(field.options).toEqual([{ id: 'id_one', name: 'One' }]); - expect(field.value).toEqual([{ id: 'id_one', name: 'One' }]); + expect(field.value).toEqual({ id: 'id_one', name: 'One' }); }); it('should add value (selected options) to field options if NOT present (multiple selection)', () => { @@ -179,21 +179,6 @@ describe('FormFieldModel', () => { expect(field.value).toEqual({ id: 'empty', name: 'Chose one...' }); }); - it('should assign "empty" option as value if value is null and "empty" option is present in options', () => { - const field = new FormFieldModel(new FormModel(), { - type: FormFieldTypes.DROPDOWN, - options: [ - { id: '', name: 'Chose one...' }, - { id: 'one', name: 'One' } - ], - value: null - }); - - expect(field.hasEmptyValue).toBe(true); - expect(field.emptyOption).toEqual({ id: '', name: 'Chose one...' }); - expect(field.value).toEqual({ id: '', name: 'Chose one...' }); - }); - it('should set hasEmptyValue to true if "empty" option is present in options', () => { const field = new FormFieldModel(new FormModel(), { type: FormFieldTypes.DROPDOWN, @@ -287,7 +272,8 @@ describe('FormFieldModel', () => { options: [], value: { id: 'delayed-option-id', name: 'Delayed option' } }); - expect(field.value).toBe({ id: 'delayed-option-id', name: 'Delayed option' }); + + expect(field.value).toEqual({ id: 'delayed-option-id', name: 'Delayed option' }); }); }); }); @@ -1038,7 +1024,7 @@ describe('FormFieldModel', () => { expect(field.options).toEqual(staticOptions); }); - it('should selected option appear in form values', () => { + it('should selected option appear in form values string', () => { const field = getFieldConfig('manual', staticOptions, 'opt2'); field.updateForm(); @@ -1047,13 +1033,13 @@ describe('FormFieldModel', () => { expect(field.form.values['dropdown_field']).toEqual({ id: 'opt2', name: 'Option 2' }); }); - it('should selected option appear in form values', () => { + it('should selected option appear in form values obj', () => { const field = getFieldConfig('manual', staticOptions, { id: 'opt3', name: 'opt3' }); field.updateForm(); - expect(field.value).toEqual('opt2'); - expect(field.form.values['dropdown_field']).toEqual({ id: 'opt2', name: 'Option 2' }); + expect(field.value).toEqual({ id: 'opt3', name: 'opt3' }); + expect(field.form.values['dropdown_field']).toEqual({ id: 'opt3', name: 'opt3' }); }); }); diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts index 12642729b1..20c9fceceb 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.spec.ts @@ -1008,7 +1008,7 @@ describe('DropdownCloudWidgetComponent', () => { widget['setFormControlValue'](); expect(widget.dropdownControl.setValue).toHaveBeenCalledWith({ id: 'testValueObj', name: 'testValueObjName' }, { emitEvent: false }); - expect(widget.dropdownControl.value).toEqual({ id: 'testValue', name: '' }); + expect(widget.dropdownControl.value).toEqual({ id: 'testValueObj', name: 'testValueObjName' }); }); it('should display options persisted from process variable', async () => { diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts index a722d7827b..37e8399abe 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/dropdown-cloud.widget.ts @@ -195,8 +195,12 @@ export class DropdownCloudWidgetComponent extends WidgetComponent implements OnI } private setFormControlValue(): void { - if (this.field?.value && typeof this.field?.value === 'object') { + if (Array.isArray(this.field.value)) { + this.dropdownControl.setValue(this.field?.value, { emitEvent: false }); + } else if (this.field?.value && typeof this.field?.value === 'object') { this.dropdownControl.setValue({ id: this.field?.value.id, name: this.field?.value.name }, { emitEvent: false }); + } else if (this.field.value === null) { + this.dropdownControl.setValue(this.field?.value, { emitEvent: false }); } else { this.dropdownControl.setValue({ id: this.field?.value, name: '' }, { emitEvent: false }); } diff --git a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/validator.spec.ts b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/validator.spec.ts index abc22d00bf..d7bbd5fb26 100644 --- a/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/validator.spec.ts +++ b/lib/process-services-cloud/src/lib/form/components/widgets/dropdown/validator.spec.ts @@ -35,7 +35,7 @@ describe('defaultValueValidator', () => { it('should return null when a valid option is selected', () => { const validator = defaultValueValidator(mockField); - const control = new FormControl('opt_1'); + const control = new FormControl({ id: 'opt_1' }); const result = validator(control); @@ -59,14 +59,4 @@ describe('defaultValueValidator', () => { expect(result).toEqual({ required: true }); }); - - it('should return null when the field has no options', () => { - mockField.options = []; - const validator = defaultValueValidator(mockField); - const control = new FormControl('opt_1'); - - const result = validator(control); - - expect(result).toBeNull(); - }); }); diff --git a/lib/process-services/src/lib/form/form.component.spec.ts b/lib/process-services/src/lib/form/form.component.spec.ts index 40fa9d0167..9c139bf91d 100644 --- a/lib/process-services/src/lib/form/form.component.spec.ts +++ b/lib/process-services/src/lib/form/form.component.spec.ts @@ -941,7 +941,7 @@ describe('FormComponent', () => { let dropdownField = formFields.find((field) => field.id === 'dropdownId'); let radioField = formFields.find((field) => field.id === 'radio'); - expect(dropdownField.value).toBe('empty'); + expect(dropdownField.value).toEqual({ id: 'empty', name: 'Choose one...' }); expect(radioField.value).toBeNull(); const formValues: any = {}; @@ -961,7 +961,7 @@ describe('FormComponent', () => { dropdownField = formFields.find((field) => field.id === 'dropdownId'); radioField = formFields.find((field) => field.id === 'radio'); - expect(dropdownField.value).toBe({ + expect(dropdownField.value).toEqual({ id: 'dropdown_option_2', name: 'Dropdown option 2' });