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); }); }); }); });