Fix validation of number field values

Refs #1149
This commit is contained in:
Will Abson 2016-11-25 13:46:32 +00:00 committed by Mario Romano
parent c418c2e1d5
commit b7f6d7f466
2 changed files with 23 additions and 1 deletions

View File

@ -158,6 +158,9 @@ describe('FormFieldValidator', () => {
expect(NumberFieldValidator.isNumber('1')).toBeTruthy();
expect(NumberFieldValidator.isNumber('1.0')).toBeTruthy();
expect(NumberFieldValidator.isNumber('-1')).toBeTruthy();
expect(NumberFieldValidator.isNumber(1)).toBeTruthy();
expect(NumberFieldValidator.isNumber(0)).toBeTruthy();
expect(NumberFieldValidator.isNumber(-1)).toBeTruthy();
});
it('should not verify number', () => {
@ -177,6 +180,24 @@ describe('FormFieldValidator', () => {
expect(validator.validate(field)).toBeTruthy();
});
it('should allow number value', () => {
let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.NUMBER,
value: 44
});
expect(validator.validate(field)).toBeTruthy();
});
it('should allow zero number value', () => {
let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.NUMBER,
value: 0
});
expect(validator.validate(field)).toBeTruthy();
});
it('should fail for wrong number value', () => {
let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.NUMBER,

View File

@ -106,11 +106,12 @@ export class NumberFieldValidator implements FormFieldValidator {
field.value === '') {
return true;
}
let valueStr = '' + field.value;
let pattern = new RegExp(/^-?\d+$/);
if (field.enableFractions) {
pattern = new RegExp(/^-?[0-9]+(\.[0-9]{1,2})?$/);
}
if (field.value.match(pattern)) {
if (valueStr.match(pattern)) {
return true;
}
field.validationSummary = 'Incorrect number format';