UNPKG

2.62 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('nested validation rules', function() {
10 var nestedObject = {
11 name: 'required',
12 data: {
13 weight: 'required',
14 hair: {
15 color: 'required'
16 }
17 }
18 };
19
20 var nestedFlatten = {
21 name: 'required',
22 'data.weight': 'required',
23 'data.hair.color': 'required'
24 };
25
26 var dataPass = {
27 name: 'David',
28 data: {
29 weight: 70,
30 hair: {
31 color: 'black'
32 }
33 }
34 };
35
36 var failAsserts = [
37 [{}, {
38 name: 'The name field is required.',
39 'data.weight': 'The data.weight field is required.',
40 'data.hair.color': 'The data.hair.color field is required.'
41 }],
42 [{ name: 'David' }, {
43 'data.weight': 'The data.weight field is required.',
44 'data.hair.color': 'The data.hair.color field is required.'
45 }],
46 [{ data: { weight: 70 } }, {
47 name: 'The name field is required.',
48 'data.hair.color': 'The data.hair.color field is required.'
49 }],
50 [{ data: { hair: { color: 'black' } } }, {
51 name: 'The name field is required.',
52 'data.weight': 'The data.weight field is required.'
53 }]
54 ];
55
56 it('should pass with validation rules nested object', function() {
57 var validator = new Validator(dataPass, nestedObject);
58 expect(validator.passes()).to.be.true;
59 expect(validator.fails()).to.be.false;
60 });
61
62 it('should fail with validation rules nested object', function() {
63 failAsserts.forEach(function (assert) {
64 var validator = new Validator(assert[0], nestedObject);
65 expect(validator.passes()).to.be.false;
66 expect(validator.fails()).to.be.true;
67 Object.keys(assert[1]).forEach(function (key) {
68 expect(validator.errors.first(key)).to.equal(assert[1][key]);
69 });
70 });
71 });
72
73 it('should pass with validation rules flatten object', function() {
74 var validator = new Validator(dataPass, nestedFlatten);
75 expect(validator.passes()).to.be.true;
76 expect(validator.fails()).to.be.false;
77 });
78
79 it('should fail with validation rules flatten object', function() {
80 failAsserts.forEach(function (assert) {
81 var validator = new Validator(assert[0], nestedFlatten);
82 expect(validator.passes()).to.be.false;
83 expect(validator.fails()).to.be.true;
84 Object.keys(assert[1]).forEach(function (key) {
85 expect(validator.errors.first(key)).to.equal(assert[1][key]);
86 });
87 });
88 });
89}); // Page constructor