1
1
var expect = require ( 'chai' ) . expect
2
- , Schema = require ( '../../index' ) ;
2
+ , Schema = require ( '../../index' )
3
+ , descriptor = require ( '../fixtures/schema/deep' )
4
+ , required = require ( '../fixtures/schema/deep-required' )
5
+ , details = require ( '../fixtures/schema/deep-details' )
6
+ , arrayFields = require ( '../fixtures/schema/deep-array' )
7
+ , deepObject = require ( '../fixtures/schema/deep-object' ) ;
3
8
4
9
describe ( 'async-validate:' , function ( ) {
5
10
6
- var descriptor = {
7
- address : {
8
- type : 'object' ,
9
- fields : {
10
- street : { type : 'string' , required : true } ,
11
- city : { type : 'string' , required : true } ,
12
- zip : { type : 'string' , required : true , len : 8 , message : 'Invalid zip' }
13
- }
14
- }
15
- }
16
-
17
- var required = {
18
- address : {
19
- type : 'object' , required : true ,
20
- fields : {
21
- street : { type : 'string' , required : true } ,
22
- city : { type : 'string' , required : true } ,
23
- zip : { type : 'string' , required : true , len : 8 , message : 'Invalid zip' }
24
- }
25
- }
26
- }
27
-
28
- var details = {
29
- name : { type : 'string' , required : true } ,
30
- address : {
31
- type : 'object' ,
32
- required : true ,
33
- fields : {
34
- street : { type : 'string' , required : true } ,
35
- city : { type : 'string' , required : true } ,
36
- zip : { type : 'string' , required : true , len : 8 , message : 'invalid zip' }
37
- }
38
- }
39
- }
40
-
41
- //it('should error on deep rule (with bail out options)', function(done) {
42
- //var descriptor = {
43
- //name: {type: 'string', required: true},
44
- //address: {
45
- //type: 'object', required: true, options: {single: true, first: true},
46
- //fields: {
47
- //street: {type: 'string', required: true},
48
- //city: {type: 'string', required: true},
49
- //zip: {type: 'string', required: true, len: 8, message: 'invalid zip'}
50
- //}
51
- //}
52
- //}
53
- //var schema = new Schema(descriptor);
54
- //schema.validate({address: {}}, function(err, res) {
55
- //expect(res.errors.length).to.eql(2);
56
- //expect(res.errors[0].message).to.eql('name is required');
57
- //expect(res.errors[1].message).to.eql('street is required');
58
- ////expect(res.errors[2].message).to.eql('city is required');
59
- ////expect(res.errors[3].message).to.eql('invalid zip');
60
- //done();
61
- //});
62
- //});
63
-
64
11
it ( 'should error on invalid deep rule (required/no matching property)' ,
65
12
function ( done ) {
66
13
var schema = new Schema ( required ) ;
@@ -72,7 +19,7 @@ describe('async-validate:', function() {
72
19
}
73
20
) ;
74
21
75
- it ( 'should error on invalid deep rule (required and validation failure on deep rule)' ,
22
+ it ( 'should error on invalid deep rule (required and failure on deep rule)' ,
76
23
function ( done ) {
77
24
var schema = new Schema ( details ) ;
78
25
schema . validate ( { address : { } } , function ( err , res ) {
@@ -87,17 +34,7 @@ describe('async-validate:', function() {
87
34
) ;
88
35
89
36
it ( 'should error on deep rule (array type length mismatch)' , function ( done ) {
90
- var descriptor = {
91
- roles : {
92
- type : 'array' , required : true , len : 3 ,
93
- fields : {
94
- 0 : { type : 'string' , required : true } ,
95
- 1 : { type : 'string' , required : true } ,
96
- 2 : { type : 'string' , required : true }
97
- }
98
- }
99
- }
100
- var schema = new Schema ( descriptor ) ;
37
+ var schema = new Schema ( arrayFields ) ;
101
38
schema . validate ( { roles : [ 'admin' , 'user' ] } , function ( err , res ) {
102
39
expect ( res . errors . length ) . to . eql ( 2 ) ;
103
40
expect ( res . errors [ 0 ] . message ) . to . eql ( 'roles must be exactly 3 in length' ) ;
@@ -107,23 +44,7 @@ describe('async-validate:', function() {
107
44
} ) ;
108
45
109
46
it ( 'should error on invalid multiple deep rule' , function ( done ) {
110
-
111
- var descriptor = {
112
- address : {
113
- type : 'object' , required : true ,
114
- fields : {
115
- house : {
116
- type : 'object' , required : true ,
117
- fields : {
118
- name : { type : 'string' , required : true } ,
119
- number : { type : 'string' , required : true }
120
- }
121
- }
122
- }
123
- }
124
- }
125
-
126
- var schema = new Schema ( descriptor ) ;
47
+ var schema = new Schema ( deepObject ) ;
127
48
schema . validate ( { address : { house : { } } } , function ( err , res ) {
128
49
expect ( res . errors . length ) . to . eql ( 2 ) ;
129
50
expect ( res . errors [ 0 ] . message ) . to . eql ( 'name is required' ) ;
@@ -144,17 +65,7 @@ describe('async-validate:', function() {
144
65
) ;
145
66
146
67
it ( 'should validate deep rule (array type)' , function ( done ) {
147
- var descriptor = {
148
- roles : {
149
- type : 'array' , required : true , len : 3 ,
150
- fields : {
151
- 0 : { type : 'string' , required : true } ,
152
- 1 : { type : 'string' , required : true } ,
153
- 2 : { type : 'string' , required : true }
154
- }
155
- }
156
- }
157
- var schema = new Schema ( descriptor )
68
+ var schema = new Schema ( arrayFields )
158
69
, source = { roles : [ 'admin' , 'user' , 'guest' ] } ;
159
70
schema . validate ( source , function ( err , res ) {
160
71
expect ( err ) . to . eql ( null ) ;
@@ -163,5 +74,4 @@ describe('async-validate:', function() {
163
74
} ) ;
164
75
} ) ;
165
76
166
-
167
77
} ) ;
0 commit comments