UNPKG

4.73 kBJavaScriptView Raw
1if (typeof require !== 'undefined') {
2 var Validator = require('../src/validator.js');
3 var expect = require('chai').expect;
4} else {
5 var Validator = window.Validator;
6 var expect = window.chai.expect;
7}
8
9describe('Validator custom messages', function() {
10 it('override the default message for the validator', function() {
11 var validator = new Validator({
12 name: ''
13 }, {
14 name: 'required'
15 }, {
16 required: 'Name is missing.'
17 });
18 expect(validator.fails()).to.be.true;
19 expect(validator.errors.get('name').length).to.equal(1);
20 expect(validator.errors.first('name')).to.equal('Name is missing.');
21 });
22
23 it('override the default message for a type of the validator', function() {
24 var validator = new Validator({
25 name: 'A'
26 }, {
27 name: 'min:4'
28 }, {
29 min: {
30 string: ':attribute is not long enough. Should be :min.'
31 }
32 });
33 expect(validator.fails()).to.be.true;
34 expect(validator.errors.get('name').length).to.equal(1);
35 expect(validator.errors.first('name')).to.equal('name is not long enough. Should be 4.');
36 });
37
38 it('override the default message for the validator with several :attribute in message', function() {
39 var validator = new Validator({
40 name: ''
41 }, {
42 name: 'required'
43 }, {
44 required: ':attribute is required. :attribute can\'t be empty.'
45 });
46 expect(validator.fails()).to.be.true;
47 expect(validator.errors.get('name').length).to.equal(1);
48 expect(validator.errors.first('name')).to.equal('name is required. name can\'t be empty.');
49 });
50
51 it('override the default message for a type of the validator', function() {
52 var validator = new Validator({
53 name: 'A'
54 }, {
55 name: 'min:4'
56 }, {
57 min: {
58 string: ':attribute is not long enough. Should be :min.'
59 }
60 });
61 expect(validator.fails()).to.be.true;
62 expect(validator.errors.get('name').length).to.equal(1);
63 expect(validator.errors.first('name')).to.equal('name is not long enough. Should be 4.');
64 });
65
66 it('override the default message for a type of the validator with several :attribute and :min in message', function() {
67 var validator = new Validator({
68 name: 'A'
69 }, {
70 name: 'min:4'
71 }, {
72 min: {
73 string: ':attribute is not long enough. :attribute should be :min. Because needed string with :min symbols or more.'
74 }
75 });
76 expect(validator.fails()).to.be.true;
77 expect(validator.errors.get('name').length).to.equal(1);
78 expect(validator.errors.first('name')).to.equal('name is not long enough. name should be 4. Because needed string with 4 symbols or more.');
79 });
80
81 it('can be specified on a per attribute basis for a validator', function() {
82 var validator = new Validator({
83 name: '',
84 email: ''
85 }, {
86 name: 'required',
87 email: 'required'
88 }, {
89 'required.name': 'Name is missing.'
90 });
91 expect(validator.fails()).to.be.true;
92 expect(validator.errors.get('name').length).to.equal(1);
93 expect(validator.errors.first('name')).to.equal('Name is missing.');
94 expect(validator.errors.get('email').length).to.equal(1);
95 expect(validator.errors.first('email')).to.equal('The email field is required.');
96 });
97
98 it('can be specified for custom validators', function() {
99 Validator.register('telephone', function(value, requirement, attribute) {
100 return value.match(/^\d{3}-\d{3}-\d{4}$/);
101 }, 'The :attribute phone number is not in the format XXX-XXX-XXXX.');
102
103 var validator = new Validator({
104 phone: '1234567890'
105 }, {
106 phone: 'telephone'
107 }, {
108 telephone: 'Wrong number.'
109 });
110 expect(validator.fails()).to.be.true;
111 expect(validator.errors.get('phone').length).to.equal(1);
112 expect(validator.errors.first('phone')).to.equal('Wrong number.');
113 });
114
115 it('can be specified for custom validators per attribute', function() {
116 Validator.register('telephone', function(value, requirement, attribute) {
117 return value.match(/^\d{3}-\d{3}-\d{4}$/);
118 }, 'The :attribute phone number is not in the format XXX-XXX-XXXX.');
119
120 var validator = new Validator({
121 phone: '1234567890',
122 fax: '1234567890'
123 }, {
124 phone: 'telephone',
125 fax: 'telephone'
126 }, {
127 'telephone.fax': 'Why are you even using a fax?'
128 });
129 expect(validator.fails()).to.be.true;
130 expect(validator.errors.get('phone').length).to.equal(1);
131 expect(validator.errors.first('phone')).to.equal('The phone phone number is not in the format XXX-XXX-XXXX.');
132 expect(validator.errors.get('fax').length).to.equal(1);
133 expect(validator.errors.first('fax')).to.equal('Why are you even using a fax?');
134 });
135});