1 | if (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 |
|
9 | describe('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 | });
|