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')).toBeTruthy();
expect(NumberFieldValidator.isNumber('1.0')).toBeTruthy(); expect(NumberFieldValidator.isNumber('1.0')).toBeTruthy();
expect(NumberFieldValidator.isNumber('-1')).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', () => { it('should not verify number', () => {
@ -177,6 +180,24 @@ describe('FormFieldValidator', () => {
expect(validator.validate(field)).toBeTruthy(); 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', () => { it('should fail for wrong number value', () => {
let field = new FormFieldModel(new FormModel(), { let field = new FormFieldModel(new FormModel(), {
type: FormFieldTypes.NUMBER, type: FormFieldTypes.NUMBER,

View File

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