diff --git a/lib/package.json b/lib/package.json index 0e23077..6b34a58 100644 --- a/lib/package.json +++ b/lib/package.json @@ -84,7 +84,6 @@ ], "dependencies": { "es6-promise": "4.1.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2" + "lodash.get": "^4.4.2" } } diff --git a/lib/src/spec/validationEngineValidateForm.spec.ts b/lib/src/spec/validationEngineValidateForm.spec.ts index 3d26d65..edb6571 100644 --- a/lib/src/spec/validationEngineValidateForm.spec.ts +++ b/lib/src/spec/validationEngineValidateForm.spec.ts @@ -537,14 +537,12 @@ describe('ValidationEngine Validate Form', () => { expect(formValidationResult.succeeded).to.be.true; expect(formValidationResult.fieldErrors).to.deep.equal({ - fullname: { - firstName: { - key: 'fullname.firstName', - succeeded: true, - type: 'REQUIRED', - errorMessage: '', - } as FieldValidationResult - }, + 'fullname.firstName': { + key: 'fullname.firstName', + succeeded: true, + type: 'REQUIRED', + errorMessage: '', + } as FieldValidationResult, }); done(); @@ -580,14 +578,12 @@ describe('ValidationEngine Validate Form', () => { expect(formValidationResult.succeeded).to.be.false; expect(formValidationResult.fieldErrors).to.deep.equal({ - fullname: { - firstName: { - key: 'fullname.firstName', - succeeded: false, - type: 'REQUIRED', - errorMessage: 'Mandatory field', - } as FieldValidationResult - }, + 'fullname.firstName': { + key: 'fullname.firstName', + succeeded: false, + type: 'REQUIRED', + errorMessage: 'Mandatory field', + } as FieldValidationResult, }); done(); diff --git a/lib/src/spec/validationsResultBuilder.spec.ts b/lib/src/spec/validationsResultBuilder.spec.ts index 864ae11..1ba739f 100644 --- a/lib/src/spec/validationsResultBuilder.spec.ts +++ b/lib/src/spec/validationsResultBuilder.spec.ts @@ -425,5 +425,38 @@ describe('ValidationsResultBuilder ', () => { expect(result.formGlobalErrors).to.have.length(1); expect(result.formGlobalErrors[0].key).to.be.equal('_GLOBAL_FORM_'); }); + + it('Spec #26 => should returns new FormValidationResult equals ' + + '{ fieldErrors: { "nested.key1": { key: "nested.key1" }, test2: { key: "test2" } } } ' + + 'when passing fieldValidationResults with two item first equals { key: "nested.key1" }' + + 'and second equals { key: "test2" }', () => { + //Arrange + const fieldValidationResult1 = new FieldValidationResult(); + fieldValidationResult1.key = 'nested.key1'; + + const fieldValidationResult2 = new FieldValidationResult(); + fieldValidationResult2.key = 'test2'; + + const fieldValidationResults = [fieldValidationResult1, fieldValidationResult2]; + + //Act + const result = validationsResultBuilder.buildFormValidationsResult(fieldValidationResults); + + //Assert + expect(result.fieldErrors).to.deep.equal({ + 'nested.key1': { + key: 'nested.key1', + succeeded: false, + errorMessage: '', + type: '', + } as FieldValidationResult, + test2: { + key: 'test2', + succeeded: false, + errorMessage: '', + type: '', + } as FieldValidationResult, + }); + }); }); }); diff --git a/lib/src/validationsResultBuilder.ts b/lib/src/validationsResultBuilder.ts index 03604fd..a8fb01f 100644 --- a/lib/src/validationsResultBuilder.ts +++ b/lib/src/validationsResultBuilder.ts @@ -1,32 +1,46 @@ import { FieldValidationResult, FormValidationResult } from './entities'; import { consts } from './consts'; -import set from 'lodash.set'; export class ValidationsResultBuilder { - buildFormValidationsResult(fieldValidationResults: Array): FormValidationResult { + buildFormValidationsResult( + fieldValidationResults: Array + ): FormValidationResult { let formValidationResult = new FormValidationResult(); if (fieldValidationResults && fieldValidationResults.length > 0) { - let filteredFieldValidationResults = this.removeUndefinedValidationResults(fieldValidationResults); + let filteredFieldValidationResults = this.removeUndefinedValidationResults( + fieldValidationResults + ); this.setGlobalKeyToEmptyKeys(filteredFieldValidationResults); - formValidationResult.succeeded = filteredFieldValidationResults.every(fvr => fvr.succeeded); - const fieldValidationResultList = filteredFieldValidationResults.filter(fvr => fvr.key !== consts.globalFormValidationId); - formValidationResult.fieldErrors = this.mapFieldValidationResultListToFieldErrorsObject(fieldValidationResultList); - formValidationResult.formGlobalErrors = filteredFieldValidationResults.filter(fvr => fvr.key === consts.globalFormValidationId); + formValidationResult.succeeded = filteredFieldValidationResults.every( + fvr => fvr.succeeded + ); + const fieldValidationResultList = filteredFieldValidationResults.filter( + fvr => fvr.key !== consts.globalFormValidationId + ); + formValidationResult.fieldErrors = this.mapFieldValidationResultListToFieldErrorsObject( + fieldValidationResultList + ); + formValidationResult.formGlobalErrors = filteredFieldValidationResults.filter( + fvr => fvr.key === consts.globalFormValidationId + ); } return formValidationResult; } - private removeUndefinedValidationResults(fieldValidationResults: Array): Array { + private removeUndefinedValidationResults( + fieldValidationResults: Array + ): Array { return fieldValidationResults.filter( - fvr => fvr !== undefined && - fvr !== null + fvr => fvr !== undefined && fvr !== null ); } - private setGlobalKeyToEmptyKeys(fieldValidationResults: Array) { + private setGlobalKeyToEmptyKeys( + fieldValidationResults: Array + ) { fieldValidationResults.forEach(fieldValidationResult => { if (!fieldValidationResult.key) { fieldValidationResult.key = consts.globalFormValidationId; @@ -34,13 +48,15 @@ export class ValidationsResultBuilder { }); } - private mapFieldValidationResultListToFieldErrorsObject = (fieldValidationResultList: FieldValidationResult[]): { [key: string]: FieldValidationResult } => ( - fieldValidationResultList.reduce((errors, result) => set(errors, result.key, result), {}) - ) + private mapFieldValidationResultListToFieldErrorsObject = ( + fieldValidationResultList: FieldValidationResult[] + ): { [key: string]: FieldValidationResult } => + fieldValidationResultList.reduce((errors, result) => { + errors[result.key] = result; + return errors; + }, {}); } let validationsResultBuilder = new ValidationsResultBuilder(); -export { - validationsResultBuilder -} +export { validationsResultBuilder };