mirror of
				https://github.com/alchemy-fr/Phraseanet.git
				synced 2025-10-26 19:33:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			615 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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);
 | |
|             });
 | |
|         });
 | |
|     });
 | |
| });
 | 
