Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions lib/src/baseFormValidation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ export class BaseFormValidation implements FormValidation {
}
}

private parseFieldValidations(constraint: string, fieldValidationConstraints: FieldValidationConstraint[]) {
private parseFieldValidations(field: string, fieldValidationConstraints: FieldValidationConstraint[]) {
if (fieldValidationConstraints instanceof Array) {
fieldValidationConstraints.forEach((fieldValidationConstraint) => {
if (fieldValidationConstraint && typeof fieldValidationConstraint === 'object') {
this.addFieldValidation(constraint, fieldValidationConstraint);
this.addFieldValidation(field, fieldValidationConstraint);
}
});
}
Expand All @@ -73,7 +73,7 @@ export class BaseFormValidation implements FormValidation {
}

validateField(vm: any, key: string, value: any, eventsFilter?: ValidationEventsFilter): Promise<FieldValidationResult> {
return this.validationEngine.triggerFieldValidation(vm, key, value, eventsFilter);
return this.validationEngine.validateField(vm, key, value, eventsFilter);
}

validateForm(vm: any): Promise<FormValidationResult> {
Expand Down
2 changes: 1 addition & 1 deletion lib/src/consts.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export const consts = {
globalFormValidationId: "_GLOBAL_FORM_",
defaultFilter: { OnChange: true }
defaultFilter: { onChange: true }
}
6 changes: 1 addition & 5 deletions lib/src/entities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,7 @@ export interface FormValidationFunction {
}

export interface FieldValidationFunction {
(value: any, vm: any, customParams: any): Promise<FieldValidationResult> |ValidationResult;
}

export interface AsyncFieldValidationFunction {
(value: any, vm: any, customParams: any): Promise<FieldValidationResult>;
(value: any, vm: any, customParams: any): ValidationResult;
}

export interface FieldValidationConstraint {
Expand Down
8 changes: 4 additions & 4 deletions lib/src/spec/baseFormValidation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ describe('formValidation tests', () => {
expect(isFormDirty.calledOnce).to.be.true;
}));

it('Spec#3 => should have an exposed method "validateField" that calls ValidationEngine.validateSingleField', sinon.test(function () {
it('Spec#3 => should have an exposed method "validateField" that calls ValidationEngine.fireFieldValidations', sinon.test(function () {
// Arrange
const sinon: sinon.SinonStatic = this;
const validateSingleField = sinon.stub(ValidationEngine.prototype, 'validateSingleField', () => { });
const fireFieldValidations = sinon.stub(ValidationEngine.prototype, 'fireFieldValidations', () => { });
const validationConstraints = {};
const viewModel = {};
const key = 'fullname';
Expand All @@ -49,7 +49,7 @@ describe('formValidation tests', () => {
formValidation.validateField(viewModel, key, value, eventsFilter);

// Assert
expect(validateSingleField.calledOnce).to.be.true;
expect(fireFieldValidations.calledOnce).to.be.true;
}));

it('Spec#4 => should have an exposed method "validateForm" that calls ValidationEngine.validateForm', sinon.test(function () {
Expand Down Expand Up @@ -353,7 +353,7 @@ describe('formValidation tests', () => {
const addFieldValidation = sinon.stub(ValidationEngine.prototype, 'addFieldValidation', () => { });
const validation1 = () => new FieldValidationResult();
const customParams = { foo: 'bar' };
const eventsFilter = { OnBlur: true };
const eventsFilter = { onBlur: true };
const validationConstraints: ValidationConstraints = {
fields: {
property1: [
Expand Down
72 changes: 36 additions & 36 deletions lib/src/spec/fieldValidationEventFilter.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,42 @@ import { fieldValidationEventFilter } from '../fieldValidationEventFilter'
describe('FieldValidationEventFilter ', () => {

describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having only one elmenent matching the eventsFilter {OnChange: true} ' +
'when passing a list of validations containg only one Element and having OnChange true for that element', () => {
it('should returns new Array<FieldValidation> having only one element matching the eventsFilter {onChange: true} ' +
'when passing a list of validations containg only one Element and having onChange true for that element', () => {
//Arrange
const allValidations: FieldValidation[] = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
}
];

const eventFilter = { OnChange: true };
const eventFilter = { onChange: true };

//Act
const result = fieldValidationEventFilter.filter(allValidations, eventFilter);

//Assert
expect(result.length).to.be.equal(1);
expect(result[0].eventsFilter.OnChange).to.be.true;
expect(result[0].eventsFilter).to.have.property('onChange').that.is.true;
});

});

describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having zero elmenent matching the eventsFilter {OnBlur: true} ' +
'when passing a list of validations containg only one Element and having OnChange true for that element', () => {
it('should returns new Array<FieldValidation> having zero elements matching the eventsFilter {onBlur: true} ' +
'when passing a list of validations containg only one Element and having onChange true for that element', () => {
//Arrange
const allValidations: Array<FieldValidation> = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
}
];

const eventsFilter = { OnBlur: true };
const eventsFilter = { onBlur: true };

//Act
const result = fieldValidationEventFilter.filter(allValidations, eventsFilter);
Expand All @@ -51,84 +51,84 @@ describe('FieldValidationEventFilter ', () => {

describe('FieldValidationEventFilter ', () => {
describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having only one elmenent matching the eventsFilter {OnChange: true} ' +
'when passing a list of validations containg two elements, one OnChange the other OnBlur', () => {
it('should returns new Array<FieldValidation> having only one element matching the eventsFilter {onChange: true} ' +
'when passing a list of validations containg two elements, one onChange the other onBlur', () => {
//Arrange
const allValidations: Array<FieldValidation> = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
},
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnBlur: true },
eventsFilter: { onBlur: true },
customParams: {}
}
];

const eventsFilter = { OnChange: true };
const eventsFilter = { onChange: true };

//Act
const result = fieldValidationEventFilter.filter(allValidations, eventsFilter);

//Assert
expect(result.length).to.be.equal(1);
expect(result[0].eventsFilter.OnChange).to.be.true;
expect(result[0].eventsFilter).to.have.property('onChange').that.is.true;
});
});
});

describe('FieldValidationEventFilter ', () => {
describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having two elements matching the eventsFilter {OnChange: true} ' +
'when passing a list of validations containg three elements, two OnChange the other OnBlur', () => {
it('should returns new Array<FieldValidation> having two elements matching the eventsFilter {onChange: true} ' +
'when passing a list of validations containg three elements, two onChange the other onBlur', () => {
//Arrange
const allValidations: Array<FieldValidation> = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
},
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnBlur: true },
eventsFilter: { onBlur: true },
customParams: {}
},
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
}
];

const eventsFilter = { OnChange: true };
const eventsFilter = { onChange: true };

//Act
const result = fieldValidationEventFilter.filter(allValidations, eventsFilter);

//Assert
expect(result.length).to.be.equal(2);
expect(result[0].eventsFilter.OnChange).to.be.true;
expect(result[1].eventsFilter.OnChange).to.be.true;
expect(result[0].eventsFilter).to.have.property('onChange').that.is.true;
expect(result[1].eventsFilter).to.have.property('onChange').that.is.true;
});
});
});

describe('FieldValidationEventFilter ', () => {
describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having two elements matching the eventsFilter {OnChange: true, OnBlur: true} (OR) ' +
'when passing a list of validations containg three elements, one OnChange the other OnBlur, the other OnWhatever', () => {
it('should returns new Array<FieldValidation> having two elements matching the eventsFilter {onChange: true, onBlur: true} (OR) ' +
'when passing a list of validations containg three elements, one onChange the other onBlur, the other OnWhatever', () => {
//Arrange
const allValidations: Array<FieldValidation> = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
},
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnBlur: true },
eventsFilter: { onBlur: true },
customParams: {}
},
{
Expand All @@ -138,33 +138,33 @@ describe('FieldValidationEventFilter ', () => {
}
];

const eventsFilter = { OnChange: true, OnBlur: true };
const eventsFilter = { onChange: true, onBlur: true };

//Act
const result = fieldValidationEventFilter.filter(allValidations, eventsFilter);

//Assert
expect(result.length).to.be.equal(2);
expect(result[0].eventsFilter.OnChange).to.be.true;
expect(result[1].eventsFilter.OnBlur).to.be.true;
expect(result[0].eventsFilter).to.have.property('onChange').that.is.true;
expect(result[1].eventsFilter).to.have.property('onBlur').that.is.true;
});
});
});

describe('FieldValidationEventFilter ', () => {
describe('when calling filter ', () => {
it('should returns new Array<FieldValidation> having three elements matching the eventsFilter null ' +
'when passing a list of validations containg three elements, one OnChange the other OnBlur, the other OnWhatever', () => {
'when passing a list of validations containg three elements, one onChange the other onBlur, the other OnWhatever', () => {
//Arrange
const allValidations: Array<FieldValidation> = [
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnChange: true },
eventsFilter: { onChange: true },
customParams: {}
},
{
validationFn: (vm, value) => { return null },
eventsFilter: { OnBlur: true },
eventsFilter: { onBlur: true },
customParams: {}
},
{
Expand All @@ -181,9 +181,9 @@ describe('FieldValidationEventFilter ', () => {

//Assert
expect(result.length).to.be.equal(3);
expect(result[0].eventsFilter.OnChange).to.be.true;
expect(result[1].eventsFilter.OnBlur).to.be.true;
expect(result[2].eventsFilter.OnWhatever).to.be.true;
expect(result[0].eventsFilter).to.have.property('onChange').that.is.true;
expect(result[1].eventsFilter).to.have.property('onBlur').that.is.true;
expect(result[2].eventsFilter).to.have.property('OnWhatever').that.is.true;
});
});
});
Expand Down
7 changes: 3 additions & 4 deletions lib/src/spec/validationEngine.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { ValidationEngine } from '../validationEngine';
import { FieldValidationResult } from '../entities';

//TODO: Implement Issue #20
describe('ValidationEngine tests', () => {
it('should return isFormPristine true after initialization', () => {
// Arrange
Expand All @@ -17,7 +16,7 @@ describe('ValidationEngine tests', () => {
const viewModel = [{ formFieldName: 'nameId', vmFieldName: 'name' }];

formValidationBase
.triggerFieldValidation(viewModel, 'nameId', 'newContent')
.validateField(viewModel, 'nameId', 'newContent')
.then((errors) => {
// Assert
expect(formValidationBase.isFormPristine()).to.be.false;
Expand All @@ -39,7 +38,7 @@ describe('ValidationEngine tests', () => {
const viewModel = [{ formFieldName: 'nameId', vmFieldName: 'name' }];

formValidationBase
.triggerFieldValidation(viewModel, 'nameId', 'newContent')
.validateField(viewModel, 'nameId', 'newContent')
.then((errors) => {
// Assert
expect(formValidationBase.isFormDirty()).to.be.true;
Expand All @@ -62,7 +61,7 @@ describe('ValidationEngine tests', () => {

// Act
formValidationBase
.triggerFieldValidation(viewModel, 'nameId', 'newContent')
.validateField(viewModel, 'nameId', 'newContent')
.then((errors) => {
// Assert
expect(formValidationBase.isValidationInProgress()).to.be.false;
Expand Down
5 changes: 2 additions & 3 deletions lib/src/spec/validationEngineValidateForm.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { ValidationEngine } from '../validationEngine';
import { FieldValidationResult, FormValidationResult } from '../entities';
import { consts } from '../consts';

//TODO: Implement Issue #20
describe('ValidationEngine Validate Form', () => {
describe('Group #1 => When calling validateForm and addFieldValidation', () => {
it('Spec #1 => should return a failed FormValidationResult with one fieldErrors equals ' +
Expand Down Expand Up @@ -480,8 +479,8 @@ describe('ValidationEngine Validate Form', () => {
const vm = { fullname: '' };

// Act
validationEngine.addFieldValidation('fullname', validationFn1Spy, { OnChange: true, OnBlur: true });
validationEngine.addFieldValidation('fullname', validationFn2Spy, { OnBlur: true });
validationEngine.addFieldValidation('fullname', validationFn1Spy, { onChange: true, onBlur: true });
validationEngine.addFieldValidation('fullname', validationFn2Spy, { onBlur: true });
validationEngine.validateForm(vm).then((validationResult) => {

// Assert
Expand Down
9 changes: 4 additions & 5 deletions lib/src/spec/validationEngineValidateSingleField.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { ValidationEngine } from '../validationEngine';
import { FieldValidationResult } from '../entities';

//TODO: Implement Issue #20 (Take into account if it returns Promise.resolve(undefined))
describe('lcFormValidation simple form', () => {
it('should return isValidationInProgress true if validations are inProgress', (done) => {
// Arrange
Expand All @@ -28,7 +27,7 @@ describe('lcFormValidation simple form', () => {
);

formValidationBase
.triggerFieldValidation(viewModel, 'fullname', 'newContent')
.validateField(viewModel, 'fullname', 'newContent')
.then((errors) => {
// Assert
expect(formValidationBase.isValidationInProgress()).to.be.false;
Expand Down Expand Up @@ -66,7 +65,7 @@ describe('lcFormValidation simple form', () => {
);

formValidationBase
.triggerFieldValidation(viewModel, 'fullname', '')
.validateField(viewModel, 'fullname', '')
.then((fieldValidationResult: FieldValidationResult) => {
// Assert
expect(fieldValidationResult.key).to.be.equal('fullname');
Expand Down Expand Up @@ -103,7 +102,7 @@ describe('lcFormValidation simple form', () => {
);

formValidationBase
.triggerFieldValidation(viewModel, 'fullname', 'john')
.validateField(viewModel, 'fullname', 'john')
.then((fieldValidationResult: FieldValidationResult) => {

// Assert
Expand All @@ -128,7 +127,7 @@ describe('lcFormValidation simple form', () => {
}
);

const promise = formValidationBase.triggerFieldValidation(viewModel, 'fullname', '');
const promise = formValidationBase.validateField(viewModel, 'fullname', '');

//Assert
expect(promise).to.eventually.be.rejected.and.notify(done);
Expand Down
Loading