From 753b5df5fa8828a9b7a52a3ada76bb083b03baf6 Mon Sep 17 00:00:00 2001 From: Sam Foo Date: Wed, 26 May 2021 01:24:10 -0700 Subject: [PATCH] Fix bug where actions are not passed to components Signed-off-by: Sam Foo --- changelogs/unreleased/2458-GuessWhoSamFoo | 1 + .../modules/shared/models/form-helper.spec.ts | 69 +++++++++++++++++++ .../app/modules/shared/models/form-helper.ts | 8 ++- 3 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/2458-GuessWhoSamFoo create mode 100644 web/src/app/modules/shared/models/form-helper.spec.ts diff --git a/changelogs/unreleased/2458-GuessWhoSamFoo b/changelogs/unreleased/2458-GuessWhoSamFoo new file mode 100644 index 0000000000..f49f20b156 --- /dev/null +++ b/changelogs/unreleased/2458-GuessWhoSamFoo @@ -0,0 +1 @@ +Fixed bug where actions were not passed to components diff --git a/web/src/app/modules/shared/models/form-helper.spec.ts b/web/src/app/modules/shared/models/form-helper.spec.ts new file mode 100644 index 0000000000..96647b7421 --- /dev/null +++ b/web/src/app/modules/shared/models/form-helper.spec.ts @@ -0,0 +1,69 @@ +import { FormHelper } from './form-helper'; + +describe('FormHelper', () => { + let formHelper: FormHelper; + + beforeEach(() => { + formHelper = new FormHelper(); + }); + + it('converts number', () => { + expect( + formHelper.transformValue({ + configuration: null, + value: 3, + name: '', + type: 'number', + error: null, + label: null, + placeholder: null, + validators: null, + }) + ).toEqual(3); + }); + + it('converts stringed number', () => { + expect( + formHelper.transformValue({ + configuration: null, + value: '123', + name: '', + type: 'number', + error: null, + label: null, + placeholder: null, + validators: null, + }) + ).toEqual(123); + }); + + it('converts text', () => { + expect( + formHelper.transformValue({ + configuration: null, + value: 'hello', + name: '', + type: 'text', + error: null, + label: null, + placeholder: null, + validators: null, + }) + ).toEqual('hello'); + }); + + it('converts NaN', () => { + expect( + formHelper.transformValue({ + configuration: null, + value: NaN, + name: '', + type: 'number', + error: null, + label: null, + placeholder: null, + validators: null, + }) + ).toEqual(0); + }); +}); diff --git a/web/src/app/modules/shared/models/form-helper.ts b/web/src/app/modules/shared/models/form-helper.ts index 6053790bf3..02de1a2421 100644 --- a/web/src/app/modules/shared/models/form-helper.ts +++ b/web/src/app/modules/shared/models/form-helper.ts @@ -1,9 +1,12 @@ import { FormArray, + FormBuilder, FormControl, + FormGroup, ValidatorFn, Validators, } from '@angular/forms'; +import { ActionField, ActionForm } from './content'; export interface Choice { label: string; @@ -26,7 +29,7 @@ const validationNeedParams = { // Class responsible to create a Form Group and add Validations Functions to form control export class FormHelper { - createFromGroup(form, formBuilder) { + createFromGroup(form: ActionForm, formBuilder: FormBuilder): FormGroup { if (!form) { return; } @@ -52,7 +55,7 @@ export class FormHelper { return formBuilder.group(controls); } - transformValue(field): any { + transformValue(field: ActionField): any { if (field.type === 'number') { if (field.value === '') { return null; @@ -60,6 +63,7 @@ export class FormHelper { const value = +field.value; return Number.isNaN(value) ? 0 : value; } + return field.value; } // Receive a hash with the validation name and the expected