From df950d0ed633efcbaa71c8133c1a4ad194627bf4 Mon Sep 17 00:00:00 2001 From: SergioCrisostomo Date: Sun, 22 Jun 2014 10:53:22 +0200 Subject: [PATCH] Type error fix for empty string When input value is a empty string of spaces, date validator returns null, and `formatted = date.format(format);` gives a type error. This commits returns false on such cases. Fixed indent. --- Source/Forms/Form.Validator.js | 14 ++++++++------ Specs/Forms/Form.Validator.js | 4 ++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/Forms/Form.Validator.js b/Source/Forms/Form.Validator.js index 4f90b972..9cf0f2a8 100644 --- a/Source/Forms/Form.Validator.js +++ b/Source/Forms/Form.Validator.js @@ -455,13 +455,15 @@ Form.Validator.addAllThese([ value = element.get('value'), wordsInValue = value.match(/[a-z]+/gi); - if (wordsInValue && !wordsInValue.every(dateNouns.exec, dateNouns)) return false; + if (wordsInValue && !wordsInValue.every(dateNouns.exec, dateNouns)) return false; - var date = Date.parse(value), - format = props.dateFormat || '%x', - formatted = date.format(format); - if (formatted != 'invalid date') element.set('value', formatted); - return date.isValid(); + var date = Date.parse(value); + if (!date) return false; + + var format = props.dateFormat || '%x', + formatted = date.format(format); + if (formatted != 'invalid date') element.set('value', formatted); + return date.isValid(); } }], diff --git a/Specs/Forms/Form.Validator.js b/Specs/Forms/Form.Validator.js index bc3a8361..f1b63ca0 100644 --- a/Specs/Forms/Form.Validator.js +++ b/Specs/Forms/Form.Validator.js @@ -314,6 +314,10 @@ describe('Form.Validator', function(){ expect(validator.test(createInput('Boo 12'))).toEqual(false); }); + it('should return false, instead of Type Error, when passed a empty string', function(){ + expect(validator.test(createInput(' '))).toBeFalsy() + }); + it('should return true for fields whose value parses to a date', function(){ expect(validator.test(createInput('Nov 12'))).toEqual(true); expect(validator.test(createInput('10-10-2000'))).toEqual(true);