Validate format, nullChecks everywhere
This commit is contained in:
parent
c282cc4a13
commit
3eb3399855
|
@ -9,6 +9,7 @@ Validatable.validatesLengthOf = getConfigurator('length');
|
||||||
Validatable.validatesNumericalityOf = getConfigurator('numericality');
|
Validatable.validatesNumericalityOf = getConfigurator('numericality');
|
||||||
Validatable.validatesInclusionOf = getConfigurator('inclusion');
|
Validatable.validatesInclusionOf = getConfigurator('inclusion');
|
||||||
Validatable.validatesExclusionOf = getConfigurator('exclusion');
|
Validatable.validatesExclusionOf = getConfigurator('exclusion');
|
||||||
|
Validatable.validatesFormatOf = getConfigurator('format');
|
||||||
|
|
||||||
function getConfigurator(name) {
|
function getConfigurator(name) {
|
||||||
return function () {
|
return function () {
|
||||||
|
@ -96,6 +97,24 @@ var defaultMessages = {
|
||||||
exclusion: 'is reserved'
|
exclusion: 'is reserved'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function nullCheck(attr, conf, err) {
|
||||||
|
var isNull = this[attr] === null || !(attr in this);
|
||||||
|
if (isNull) {
|
||||||
|
if (!conf.allowNull) {
|
||||||
|
err('null');
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
if (blank(this[attr])) {
|
||||||
|
if (!conf.allowBlank) {
|
||||||
|
err('blank');
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
var validators = {
|
var validators = {
|
||||||
presence: function (attr, conf, err) {
|
presence: function (attr, conf, err) {
|
||||||
if (blank(this[attr])) {
|
if (blank(this[attr])) {
|
||||||
|
@ -103,22 +122,8 @@ var validators = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
length: function (attr, conf, err) {
|
length: function (attr, conf, err) {
|
||||||
var isNull = this[attr] === null || !(attr in this);
|
if (nullCheck.call(this, attr, conf, err)) return;
|
||||||
if (isNull) {
|
|
||||||
if (conf.allowNull) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return err('null');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (blank(this[attr])) {
|
|
||||||
if (conf.allowBlank) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return err('blank');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var len = this[attr].length;
|
var len = this[attr].length;
|
||||||
if (conf.min && len < conf.min) {
|
if (conf.min && len < conf.min) {
|
||||||
err('min');
|
err('min');
|
||||||
|
@ -131,6 +136,8 @@ var validators = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
numericality: function (attr, conf, err) {
|
numericality: function (attr, conf, err) {
|
||||||
|
if (nullCheck.call(this, attr, conf, err)) return;
|
||||||
|
|
||||||
if (typeof this[attr] !== 'number') {
|
if (typeof this[attr] !== 'number') {
|
||||||
return err('number');
|
return err('number');
|
||||||
}
|
}
|
||||||
|
@ -139,14 +146,29 @@ var validators = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
inclusion: function (attr, conf, err) {
|
inclusion: function (attr, conf, err) {
|
||||||
|
if (nullCheck.call(this, attr, conf, err)) return;
|
||||||
|
|
||||||
if (!~conf.in.indexOf(this[attr])) {
|
if (!~conf.in.indexOf(this[attr])) {
|
||||||
err()
|
err()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
exclusion: function (attr, conf, err) {
|
exclusion: function (attr, conf, err) {
|
||||||
|
if (nullCheck.call(this, attr, conf, err)) return;
|
||||||
|
|
||||||
if (~conf.in.indexOf(this[attr])) {
|
if (~conf.in.indexOf(this[attr])) {
|
||||||
err()
|
err()
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
format: function (attr, conf, err) {
|
||||||
|
if (nullCheck.call(this, attr, conf, err)) return;
|
||||||
|
|
||||||
|
if (typeof this[attr] === 'string') {
|
||||||
|
if (!this[attr].match(conf['with'])) {
|
||||||
|
err();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ it 'should validate inclusion', (test) ->
|
||||||
user.gender = 'male'
|
user.gender = 'male'
|
||||||
test.ok user.isValid()
|
test.ok user.isValid()
|
||||||
|
|
||||||
user.gender = ''
|
user.gender = 'man'
|
||||||
test.ok not user.isValid()
|
test.ok not user.isValid()
|
||||||
test.equal user.errors.gender[0], 'is not included in the list'
|
test.equal user.errors.gender[0], 'is not included in the list'
|
||||||
|
|
||||||
|
@ -170,3 +170,15 @@ it 'should validate exclusion', (test) ->
|
||||||
|
|
||||||
test.done()
|
test.done()
|
||||||
|
|
||||||
|
it 'should validate format', (test) ->
|
||||||
|
User.validatesFormatOf 'email', with: /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
|
||||||
|
user = new User validAttributes
|
||||||
|
|
||||||
|
user.email = 'invalid email'
|
||||||
|
test.ok not user.isValid()
|
||||||
|
|
||||||
|
user.email = 'valid@email.tld'
|
||||||
|
test.ok user.isValid()
|
||||||
|
|
||||||
|
test.done()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue