Skip to content

Commit af8ff25

Browse files
authored
Merge pull request #43 from Lemoncode/issue42-invertvalidationparameters
Switch parameters order in validation functions
2 parents 0987a55 + 5a62215 commit af8ff25

File tree

7 files changed

+68
-68
lines changed

7 files changed

+68
-68
lines changed

lib/src/spec/validationEngine.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ describe('lcFormValidation', () => {
120120
'when passing a key equals "test1" and validationsPerField equals ["test2": validationFn]', () => {
121121
//Arrange
122122
let key = "test1";
123-
let validationFn = (vm, value) => {
123+
let validationFn = (value, vm) => {
124124
let fieldValidationResult = new FieldValidationResult();
125125
return Promise.resolve(fieldValidationResult);
126126
};
@@ -138,7 +138,7 @@ describe('lcFormValidation', () => {
138138
'when passing a key equals "test" and validationsPerField equals ["test": validationFn]', () => {
139139
//Arrange
140140
let key = "test";
141-
let validationFn = (vm, value) => {
141+
let validationFn = (value, vm) => {
142142
let fieldValidationResult = new FieldValidationResult();
143143
return Promise.resolve(fieldValidationResult);
144144
}
@@ -155,7 +155,7 @@ describe('lcFormValidation', () => {
155155
it('should return itself after adding a validation rule using addFieldValidation method', () => {
156156
// Arrange
157157
const key = 'test1';
158-
const validationFn = (vm, value) => {
158+
const validationFn = (value, vm) => {
159159
return new FieldValidationResult();
160160
};
161161
const validationEngine = new ValidationEngine();
@@ -171,7 +171,7 @@ describe('lcFormValidation', () => {
171171
it('should return itself after adding a validation rule using addFieldValidationAsync method', () => {
172172
// Arrange
173173
const key = 'test1';
174-
const validationFn = (vm, value) => {
174+
const validationFn = (value, vm) => {
175175
return Promise.resolve(new FieldValidationResult());
176176
};
177177
const validationEngine = new ValidationEngine();

lib/src/spec/validationEngineValidateForm.spec.ts

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ describe('ValidationEngine Validate Form', () => {
1010
describe('Group #1 => When calling validateFullForm and addFieldValidationAsync', () => {
1111
it('Spec #1 => should return a failed FormValidationResult with one fieldErrors equals ' +
1212
'{ succeeded: false, key: "fullname", type: "REQUIRED", errorMessage: "Mandatory Field" } ' +
13-
'When passing one validation rule with key equals "fullname" and viewModel equals { id: "1", fullname: "" }', (done) => {
13+
' when passing one validation rule with key equals "fullname" and viewModel equals { id: "1", fullname: "" }', (done) => {
1414
// Arrange
1515
const validationEngine = new ValidationEngine();
1616
const viewModel = { id: '1', fullname: '' };
1717

1818
// Act
1919
validationEngine.addFieldValidationAsync('fullname',
20-
(vm, value): Promise<FieldValidationResult> => {
20+
(value, vm): Promise<FieldValidationResult> => {
2121
// Required field
2222
// in this case no async stuff
2323
// we can directly resolve the promise
@@ -57,7 +57,7 @@ describe('ValidationEngine Validate Form', () => {
5757

5858
// Act
5959
validationEngine.addFieldValidationAsync('fullname',
60-
(vm, value): Promise<FieldValidationResult> => {
60+
(value, vm): Promise<FieldValidationResult> => {
6161
// Required field
6262
// in this case no async stuff
6363
// we can directly resolve the promise
@@ -98,7 +98,7 @@ describe('ValidationEngine Validate Form', () => {
9898
// Act
9999
// name mandatory
100100
validationEngine.addFieldValidationAsync('fullname',
101-
(vm, value): Promise<FieldValidationResult> => {
101+
(value, vm): Promise<FieldValidationResult> => {
102102
// Required field
103103
// in this case no async stuff
104104
// we can directly resolve the promise
@@ -117,7 +117,7 @@ describe('ValidationEngine Validate Form', () => {
117117

118118
// password mandatory and min length 3
119119
validationEngine.addFieldValidationAsync('password',
120-
(vm, value): Promise<FieldValidationResult> => {
120+
(value, vm): Promise<FieldValidationResult> => {
121121
// We will isolate this into common functions
122122
// Required field
123123
// in this case no async stuff
@@ -136,7 +136,7 @@ describe('ValidationEngine Validate Form', () => {
136136
);
137137

138138
validationEngine.addFieldValidationAsync('password',
139-
(vm, value): Promise<FieldValidationResult> => {
139+
(value, vm): Promise<FieldValidationResult> => {
140140
// We will isolate this into common functions
141141
// minLenght
142142
// in this case no async stuff
@@ -188,7 +188,7 @@ describe('ValidationEngine Validate Form', () => {
188188
// Act
189189
// name mandatory
190190
validationEngine.addFieldValidationAsync('fullname',
191-
(vm, value): Promise<FieldValidationResult> => {
191+
(value, vm): Promise<FieldValidationResult> => {
192192
// Required field
193193
// in this case no async stuff
194194
// we can directly resolve the promise
@@ -207,7 +207,7 @@ describe('ValidationEngine Validate Form', () => {
207207

208208
// password mandatory and min length 3
209209
validationEngine.addFieldValidationAsync('password',
210-
(vm, value): Promise<FieldValidationResult> => {
210+
(value, vm): Promise<FieldValidationResult> => {
211211
// We will isolate this into common functions
212212
// Required field
213213
// in this case no async stuff
@@ -226,7 +226,7 @@ describe('ValidationEngine Validate Form', () => {
226226
);
227227

228228
validationEngine.addFieldValidationAsync('password',
229-
(vm, value): Promise<FieldValidationResult> => {
229+
(value, vm): Promise<FieldValidationResult> => {
230230
// We will isolate this into common functions
231231
// minLenght
232232
// in this case no async stuff
@@ -278,7 +278,7 @@ describe('ValidationEngine Validate Form', () => {
278278
// Act
279279
// name mandatory
280280
validationEngine.addFieldValidationAsync('fullname',
281-
(vm, value): Promise<FieldValidationResult> => {
281+
(value, vm): Promise<FieldValidationResult> => {
282282
// Required field
283283
// in this case no async stuff
284284
// we can directly resolve the promise
@@ -297,7 +297,7 @@ describe('ValidationEngine Validate Form', () => {
297297

298298
// password mandatory and min length 3
299299
validationEngine.addFieldValidationAsync('password',
300-
(vm, value): Promise<FieldValidationResult> => {
300+
(value, vm): Promise<FieldValidationResult> => {
301301
// We will isolate this into common functions
302302
// Required field
303303
// in this case no async stuff
@@ -316,7 +316,7 @@ describe('ValidationEngine Validate Form', () => {
316316
);
317317

318318
validationEngine.addFieldValidationAsync('password',
319-
(vm, value): Promise<FieldValidationResult> => {
319+
(value, vm): Promise<FieldValidationResult> => {
320320
// We will isolate this into common functions
321321
// minLenght
322322
// in this case no async stuff
@@ -368,7 +368,7 @@ describe('ValidationEngine Validate Form', () => {
368368
// Act
369369
// name mandatory
370370
validationEngine.addFieldValidationAsync('fullname',
371-
(vm, value): Promise<FieldValidationResult> => {
371+
(value, vm): Promise<FieldValidationResult> => {
372372
// Required field
373373
// in this case no async stuff
374374
// we can directly resolve the promise
@@ -387,7 +387,7 @@ describe('ValidationEngine Validate Form', () => {
387387

388388
// password mandatory and min length 3
389389
validationEngine.addFieldValidationAsync('password',
390-
(vm, value): Promise<FieldValidationResult> => {
390+
(value, vm): Promise<FieldValidationResult> => {
391391
// We will isolate this into common functions
392392
// Required field
393393
// in this case no async stuff
@@ -406,7 +406,7 @@ describe('ValidationEngine Validate Form', () => {
406406
);
407407

408408
validationEngine.addFieldValidationAsync('password',
409-
(vm, value): Promise<FieldValidationResult> => {
409+
(value, vm): Promise<FieldValidationResult> => {
410410
// We will isolate this into common functions
411411
// minLenght
412412
// in this case no async stuff
@@ -453,7 +453,7 @@ describe('ValidationEngine Validate Form', () => {
453453

454454
// Act
455455
validationEngine.addFieldValidationAsync('fullname',
456-
(vm, value): Promise<FieldValidationResult> => {
456+
(value, vm): Promise<FieldValidationResult> => {
457457
let error: boolean = true;
458458
if (error) {
459459
throw "Intentionally uncontrolled exception, single field validation testing fullform validations"
@@ -741,7 +741,7 @@ describe('ValidationEngine Validate Form', () => {
741741

742742
// Act
743743
validationEngine.addFieldValidationAsync('address',
744-
(vm, value): Promise<FieldValidationResult> => {
744+
(value, vm): Promise<FieldValidationResult> => {
745745
// We will isolate this into common functions
746746
// Required field
747747
// in this case no async stuff
@@ -803,7 +803,7 @@ describe('ValidationEngine Validate Form', () => {
803803

804804
// Act
805805
validationEngine.addFieldValidationAsync('address',
806-
(vm, value): Promise<FieldValidationResult> => {
806+
(value, vm): Promise<FieldValidationResult> => {
807807
// We will isolate this into common functions
808808
// Required field
809809
// in this case no async stuff
@@ -865,7 +865,7 @@ describe('ValidationEngine Validate Form', () => {
865865

866866
// Act
867867
validationEngine.addFieldValidationAsync('address',
868-
(vm, value): Promise<FieldValidationResult> => {
868+
(value, vm): Promise<FieldValidationResult> => {
869869
// We will isolate this into common functions
870870
// Required field
871871
// in this case no async stuff
@@ -927,7 +927,7 @@ describe('ValidationEngine Validate Form', () => {
927927

928928
// Act
929929
validationEngine.addFieldValidationAsync('address',
930-
(vm, value): Promise<FieldValidationResult> => {
930+
(value, vm): Promise<FieldValidationResult> => {
931931
// We will isolate this into common functions
932932
// Required field
933933
// in this case no async stuff
@@ -1020,7 +1020,7 @@ describe('ValidationEngine Validate Form', () => {
10201020

10211021
// Act
10221022
validationEngine.addFieldValidation('fullname',
1023-
(vm, value): FieldValidationResult => {
1023+
(value, vm): FieldValidationResult => {
10241024
// Required field
10251025
// in this case no async stuff
10261026
// we can directly resolve the promise
@@ -1060,7 +1060,7 @@ describe('ValidationEngine Validate Form', () => {
10601060

10611061
// Act
10621062
validationEngine.addFieldValidation('fullname',
1063-
(vm, value): FieldValidationResult => {
1063+
(value, vm): FieldValidationResult => {
10641064
// Required field
10651065
// in this case no async stuff
10661066
// we can directly resolve the promise
@@ -1101,7 +1101,7 @@ describe('ValidationEngine Validate Form', () => {
11011101

11021102
// Act
11031103
validationEngine.addFieldValidation('fullname',
1104-
(vm, value): FieldValidationResult => {
1104+
(value, vm): FieldValidationResult => {
11051105
let isFieldInformed: boolean = (value != null && value.length > 0);
11061106
let errorInfo: string = (isFieldInformed) ? "" : "Mandatory field";
11071107

@@ -1115,7 +1115,7 @@ describe('ValidationEngine Validate Form', () => {
11151115
);
11161116

11171117
validationEngine.addFieldValidationAsync('password',
1118-
(vm, value): Promise<FieldValidationResult> => {
1118+
(value, vm): Promise<FieldValidationResult> => {
11191119
let isFieldInformed: boolean = (value != null && value.length > 0);
11201120
let errorInfo: string = (isFieldInformed) ? "" : "Mandatory field";
11211121

@@ -1160,7 +1160,7 @@ describe('ValidationEngine Validate Form', () => {
11601160
// Act
11611161
// name mandatory
11621162
validationEngine.addFieldValidation('fullname',
1163-
(vm, value): FieldValidationResult => {
1163+
(value, vm): FieldValidationResult => {
11641164
let isFieldInformed: boolean = (value != null && value.length > 0);
11651165
let errorInfo: string = (isFieldInformed) ? "" : "Mandatory field";
11661166

@@ -1175,7 +1175,7 @@ describe('ValidationEngine Validate Form', () => {
11751175

11761176
// password mandatory and min length 3
11771177
validationEngine.addFieldValidationAsync('password',
1178-
(vm, value): Promise<FieldValidationResult> => {
1178+
(value, vm): Promise<FieldValidationResult> => {
11791179
let isFieldInformed: boolean = (value != null && value.length > 0);
11801180
let errorInfo: string = (isFieldInformed) ? "" : "Mandatory field";
11811181

lib/src/spec/validationEngineValidateSingleField.spec.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ describe('lcFormValidation simple form', () => {
1616
const viewModel = { id: '1', fullname: 'john' };
1717

1818
// Act
19-
formValidationBase.addFieldValidationAsync('nameId',
20-
(vm, value): Promise<FieldValidationResult> => {
19+
formValidationBase.addFieldValidationAsync('fullname',
20+
(value, vm): Promise<FieldValidationResult> => {
2121
// Required field
2222
// in this case no async stuff
2323
// we can directly resolve the promise
@@ -35,7 +35,7 @@ describe('lcFormValidation simple form', () => {
3535
)
3636

3737
formValidationBase
38-
.triggerFieldValidation(viewModel, 'nameId', 'newContent')
38+
.triggerFieldValidation(viewModel, 'fullname', 'newContent')
3939
.then((errors) => {
4040
// Assert
4141
expect(formValidationBase.isValidationInProgress()).to.be.false;
@@ -54,8 +54,8 @@ describe('lcFormValidation simple form', () => {
5454
const viewModel = { id: '1', fullname: 'john' };
5555

5656
// Act
57-
formValidationBase.addFieldValidationAsync('nameId',
58-
(vm, value): Promise<FieldValidationResult> => {
57+
formValidationBase.addFieldValidationAsync('fullname',
58+
(value, vm): Promise<FieldValidationResult> => {
5959
// Required field
6060
// in this case no async stuff
6161
// we can directly resolve the promise
@@ -73,10 +73,10 @@ describe('lcFormValidation simple form', () => {
7373
);
7474

7575
formValidationBase
76-
.triggerFieldValidation(viewModel, 'nameId', '')
76+
.triggerFieldValidation(viewModel, 'fullname', '')
7777
.then((fieldValidationResult: FieldValidationResult) => {
7878
// Assert
79-
expect(fieldValidationResult.key).to.be.equal('nameId');
79+
expect(fieldValidationResult.key).to.be.equal('fullname');
8080
expect(fieldValidationResult.type).to.equal('REQUIRED');
8181
expect(fieldValidationResult.succeeded).to.be.false;
8282
expect(fieldValidationResult.errorMessage).to.equal("Mandatory field");
@@ -91,8 +91,8 @@ describe('lcFormValidation simple form', () => {
9191
const viewModel = { id: '1', fullname: 'john' };
9292

9393
// Act
94-
formValidationBase.addFieldValidationAsync('nameId',
95-
(vm, value): Promise<FieldValidationResult> => {
94+
formValidationBase.addFieldValidationAsync('fullname',
95+
(value, vm): Promise<FieldValidationResult> => {
9696
// Required field
9797
// in this case no async stuff
9898
// we can directly resolve the promise
@@ -109,11 +109,11 @@ describe('lcFormValidation simple form', () => {
109109
}
110110
);
111111
formValidationBase
112-
.triggerFieldValidation(viewModel, 'nameId', 'john')
112+
.triggerFieldValidation(viewModel, 'fullname', 'john')
113113
.then((fieldValidationResult: FieldValidationResult) => {
114114

115115
// Assert
116-
expect(fieldValidationResult.key).to.be.equal('nameId');
116+
expect(fieldValidationResult.key).to.be.equal('fullname');
117117
expect(fieldValidationResult.type).to.equal('REQUIRED');
118118
expect(fieldValidationResult.succeeded).to.be.true;
119119
expect(fieldValidationResult.errorMessage).to.be.empty;
@@ -128,8 +128,8 @@ describe('lcFormValidation simple form', () => {
128128
const viewModel = { id: '1', fullname: 'john' };
129129

130130
// Act
131-
formValidationBase.addFieldValidationAsync('nameId',
132-
(vm, value): Promise<FieldValidationResult> => {
131+
formValidationBase.addFieldValidationAsync('fullname',
132+
(value, vm): Promise<FieldValidationResult> => {
133133
let error = true;
134134

135135
if (error == true) {
@@ -149,7 +149,7 @@ describe('lcFormValidation simple form', () => {
149149
);
150150

151151
const promise = formValidationBase
152-
.triggerFieldValidation(viewModel, 'nameId', '');
152+
.triggerFieldValidation(viewModel, 'fullname', '');
153153

154154
//Assert
155155
expect(promise).to.eventually.be.rejected.notify(done);

lib/src/validationEngine.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ export interface IValidationEngine {
1212
validateFullForm(vm: any): Promise<FormValidationResult>;
1313
triggerFieldValidation(vm: any, key: string, value: any, filter?: any): Promise<FieldValidationResult>;
1414
// TODO: Implement Issue #15
15-
addFieldValidation(key: string, validation: (vm, value) => FieldValidationResult, filter?: any);
16-
addFieldValidationAsync(key: string, validation: (vm, value) => Promise<FieldValidationResult>, filter?: any);
15+
addFieldValidation(key: string, validation: (value, vm) => FieldValidationResult, filter?: any);
16+
addFieldValidationAsync(key: string, validation: (value, vm) => Promise<FieldValidationResult>, filter?: any);
1717
addFormValidation(validation: (vm) => FieldValidationResult);
1818
addFormValidationAsync(validation: (vm) => Promise<FieldValidationResult>);
1919
isValidationInProgress(): boolean;
@@ -49,7 +49,7 @@ export class ValidationEngine implements IValidationEngine {
4949
const fullFormValidatedPromise = new Promise((resolve, reject) => {
5050
// Let's add fileValidationResults
5151
let fieldValidationResultsPromises = validationsDispatcher.fireAllFieldsValidations(
52-
viewModel,
52+
viewModel,
5353
this.validateSingleField.bind(this)
5454
);
5555

@@ -140,16 +140,16 @@ export class ValidationEngine implements IValidationEngine {
140140
this._validationsPerField[key] !== null;
141141
}
142142

143-
addFieldValidation(key: string, validation: (vm, value) => FieldValidationResult, filter: any = consts.defaultFilter) {
144-
const validationAsync = (vm, value): Promise<FieldValidationResult> => {
145-
return Promise.resolve(validation(vm, value))
143+
addFieldValidation(key: string, validation: (value, vm) => FieldValidationResult, filter: any = consts.defaultFilter) {
144+
const validationAsync = (value, vm): Promise<FieldValidationResult> => {
145+
return Promise.resolve(validation(value, vm));
146146
}
147147

148148
this.addFieldValidationAsync(key, validationAsync, filter);
149149
return this;
150150
}
151151

152-
addFieldValidationAsync(key: string, validation: (vm, value) => Promise<FieldValidationResult>, filter: any = consts.defaultFilter) {
152+
addFieldValidationAsync(key: string, validation: (value, vm) => Promise<FieldValidationResult>, filter: any = consts.defaultFilter) {
153153
if (!this.isFieldKeyMappingDefined(key)) {
154154
this._validationsPerField[key] = [];
155155
}

0 commit comments

Comments
 (0)