Files
Phraseanet/www/scripts/tests/specs/validator.js
Romain Neutron 9fa95db23c Fix JS codestyle
2013-11-12 12:49:23 +01:00

615 lines
20 KiB
JavaScript

define([
'chai',
'common/forms/validator'
], function (chai, Validator) {
var expect = chai.expect;
var assert = chai.assert;
var should = chai.should();
describe("Validator", function () {
describe("Validator rules", function () {
beforeEach(function () {
this.validator = new Validator([
{
name: "required",
rules: "required"
},
{
name: "valid_email",
rules: "valid_email"
},
{
name: "equal",
rules: "equal[toto]"
},
{
name: "matches",
rules: "matches[to_match]"
},
{
name: "valid_emails",
rules: "valid_emails"
},
{
name: "min_length",
rules: "min_length[5]"
},
{
name: "max_length",
rules: "max_length[5]"
},
{
name: "exact_length",
rules: "exact_length[5]"
},
{
name: "greater_than",
rules: "greater_than[5]"
},
{
name: "less_than",
rules: "less_than[5]"
},
{
name: "alpha",
rules: "alpha"
},
{
name: "alpha_numeric",
rules: "alpha_numeric"
},
{
name: "alpha_dash",
rules: "alpha_dash"
},
{
name: "numeric",
rules: "numeric"
},
{
name: "integer",
rules: "integer"
},
{
name: "decimal",
rules: "decimal"
},
{
name: "is_natural",
rules: "is_natural"
},
{
name: "is_natural_no_zero",
rules: "is_natural_no_zero"
},
{
name: "valid_ip",
rules: "valid_ip"
},
{
name: "valid_url",
rules: "valid_url"
}
]);
});
it("should detect an error if field is required and value is blank", function () {
this.validator.validate([
{
name: "required",
value: ""
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should detect an error if field is not a valid email", function () {
this.validator.validate([
{
name: "valid_email",
value: "email.not.va@"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field is a valid email", function () {
this.validator.validate([
{
name: "valid_email",
value: "valid@email.com"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_email",
value: "valid+34@email.com"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field is not a valid emails", function () {
this.validator.validate([
{
name: "valid_emails",
value: "valid@email.com, email.not.va@"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field is a valid emails", function () {
this.validator.validate([
{
name: "valid_emails",
value: "valid32@email.com, valid2@email.com"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_emails",
value: "valid@email.com"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field is not equal to default string toto", function () {
this.validator.validate([
{
name: "equal",
value: "tata"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field is equal to default string toto", function () {
this.validator.validate([
{
name: "equal",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'match 'is not equal to field value 'to_match'", function () {
this.validator.validate([
{
name: "matches",
value: "toto"
},
{
name: "to_match",
value: "tata"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'match' is equal to field value 'to_match'", function () {
this.validator.validate([
{
name: "matches",
value: "toto"
},
{
name: "to_match",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'min_length' is < to 5", function () {
this.validator.validate([
{
name: "min_length",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'min_length' is >= to 5", function () {
this.validator.validate([
{
name: "min_length",
value: "totos"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'max_length' is > to 5", function () {
this.validator.validate([
{
name: "max_length",
value: "tostos"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'max_length' is <= to 5", function () {
this.validator.validate([
{
name: "max_length",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'greater_than' is < to 5", function () {
this.validator.validate([
{
name: "greater_than",
value: "3"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'greater_than' is > to 5", function () {
this.validator.validate([
{
name: "greater_than",
value: "6"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'less_than' is > to 5", function () {
this.validator.validate([
{
name: "less_than",
value: "6"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'less_than' is <= to 5", function () {
this.validator.validate([
{
name: "less_than",
value: "3"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'exact_length' is = to 5", function () {
this.validator.validate([
{
name: "exact_length",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'exact_length' is = to 5", function () {
this.validator.validate([
{
name: "exact_length",
value: "totos"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'alpha' is not alpha", function () {
this.validator.validate([
{
name: "alpha",
value: "toto12"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'alpha' is alpha", function () {
this.validator.validate([
{
name: "alpha",
value: "totos"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'alpha_numeric' is not alpha numeric", function () {
this.validator.validate([
{
name: "alpha_numeric",
value: "toto#"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'alpha_numeric' is alpha numeric", function () {
this.validator.validate([
{
name: "alpha_numeric",
value: "totos12"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'numeric' is not numeric", function () {
this.validator.validate([
{
name: "numeric",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'numeric' is numeric", function () {
this.validator.validate([
{
name: "numeric",
value: "123"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'integer' is not integer", function () {
this.validator.validate([
{
name: "integer",
value: "3.44"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'integer' is integer", function () {
this.validator.validate([
{
name: "integer",
value: "123"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'decimal' is not decimal", function () {
this.validator.validate([
{
name: "decimal",
value: "23a"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'decimal' is decimal", function () {
this.validator.validate([
{
name: "decimal",
value: "1.23"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "decimal",
value: "123"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'natural' is not natural", function () {
this.validator.validate([
{
name: "is_natural",
value: "-2"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'natural' is natural", function () {
this.validator.validate([
{
name: "is_natural",
value: "0"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'is_natural_no_zero' is not a natural no zero", function () {
this.validator.validate([
{
name: "is_natural_no_zero",
value: "0"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'is_natural_no_zero' is a natural no zero", function () {
this.validator.validate([
{
name: "is_natural_no_zero",
value: "1"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'valid_ip' is not a valid ip", function () {
this.validator.validate([
{
name: "valid_ip",
value: "12.8.1.187.2"
}
]);
this.validator.getErrors().length.should.equal(1);
this.validator.validate([
{
name: "valid_ip",
value: "1234.12.12"
}
]);
this.validator.getErrors().length.should.equal(1);
this.validator.validate([
{
name: "valid_ip",
value: "0.0"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'valid_ip' a valid ip", function () {
this.validator.validate([
{
name: "valid_ip",
value: "127.0.0.1"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_ip",
value: "my.domain"
}
]);
this.validator.getErrors().length.should.equal(0);
});
it("should detect an error if field value 'valid_url' is not a valid http url", function () {
this.validator.validate([
{
name: "valid_url",
value: "toto"
}
]);
this.validator.getErrors().length.should.equal(1);
this.validator.validate([
{
name: "valid_url",
value: "toto.123s"
}
]);
this.validator.getErrors().length.should.equal(1);
this.validator.validate([
{
name: "valid_url",
value: "http:/#toto.com"
}
]);
this.validator.getErrors().length.should.equal(1);
this.validator.validate([
{
name: "valid_url",
value: "htp:/toto.com"
}
]);
this.validator.getErrors().length.should.equal(1);
});
it("should not detect an error if field value 'valid_url' is a valid http url", function () {
this.validator.validate([
{
name: "valid_url",
value: "http://valid.url.com"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_url",
value: "https://valid.url.com"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_url",
value: "http://valid.url.com/?test=3"
}
]);
this.validator.getErrors().length.should.equal(0);
this.validator.validate([
{
name: "valid_url",
value: "http://valid.url.com/?test=3#salut"
}
]);
this.validator.getErrors().length.should.equal(0);
});
});
});
});