Skip to content

Commit c9b3974

Browse files
committed
Migrate deep test schemas.
1 parent 1981853 commit c9b3974

File tree

6 files changed

+94
-100
lines changed

6 files changed

+94
-100
lines changed

test/fixtures/schema/deep-array.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var schema = {
2+
type: 'object',
3+
fields: {
4+
roles: {
5+
type: 'array', required: true, len: 3,
6+
fields: {
7+
0: {type: 'string', required: true},
8+
1: {type: 'string', required: true},
9+
2: {type: 'string', required: true}
10+
}
11+
}
12+
}
13+
}
14+
15+
module.exports = schema;

test/fixtures/schema/deep-details.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var schema = {
2+
type: 'object',
3+
fields: {
4+
name: {type: 'string', required: true},
5+
address: {
6+
type: 'object',
7+
required: true,
8+
fields: {
9+
street: {type: 'string', required: true},
10+
city: {type: 'string', required: true},
11+
zip: {type: 'string', required: true, len: 8, message: 'invalid zip'}
12+
}
13+
}
14+
}
15+
}
16+
17+
module.exports = schema;

test/fixtures/schema/deep-object.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
var schema = {
2+
type: 'object',
3+
fields: {
4+
address: {
5+
type: 'object',
6+
required: true,
7+
fields: {
8+
house: {
9+
type: 'object',
10+
required: true,
11+
fields: {
12+
name: {type: 'string', required: true},
13+
number: {type: 'string', required: true}
14+
}
15+
}
16+
}
17+
}
18+
}
19+
}
20+
21+
module.exports = schema;

test/fixtures/schema/deep-required.js

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
var schema = {
2+
type: 'object',
3+
fields: {
4+
address: {
5+
type: 'object',
6+
required: true,
7+
fields: {
8+
street: {type: 'string', required: true},
9+
city: {type: 'string', required: true},
10+
zip: {type: 'string', required: true, len: 8, message: 'Invalid zip'}
11+
}
12+
}
13+
}
14+
}
15+
16+
module.exports = schema;

test/fixtures/schema/deep.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var schema = {
2+
type: 'object',
3+
fields: {
4+
address: {
5+
type: 'object',
6+
fields: {
7+
street: {type: 'string', required: true},
8+
city: {type: 'string', required: true},
9+
zip: {type: 'string', required: true, len: 8, message: 'Invalid zip'}
10+
}
11+
}
12+
}
13+
}
14+
15+
module.exports = schema;

test/spec/deep.js

+10-100
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,13 @@
11
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');
38

49
describe('async-validate:', function() {
510

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-
6411
it('should error on invalid deep rule (required/no matching property)',
6512
function(done) {
6613
var schema = new Schema(required);
@@ -72,7 +19,7 @@ describe('async-validate:', function() {
7219
}
7320
);
7421

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)',
7623
function(done) {
7724
var schema = new Schema(details);
7825
schema.validate({ address: {} }, function(err, res) {
@@ -87,17 +34,7 @@ describe('async-validate:', function() {
8734
);
8835

8936
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);
10138
schema.validate({ roles: ['admin', 'user'] }, function(err, res) {
10239
expect(res.errors.length).to.eql(2);
10340
expect(res.errors[0].message).to.eql('roles must be exactly 3 in length');
@@ -107,23 +44,7 @@ describe('async-validate:', function() {
10744
});
10845

10946
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);
12748
schema.validate({ address: {house: {}} }, function(err, res) {
12849
expect(res.errors.length).to.eql(2);
12950
expect(res.errors[0].message).to.eql('name is required');
@@ -144,17 +65,7 @@ describe('async-validate:', function() {
14465
);
14566

14667
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)
15869
, source = {roles: ['admin', 'user', 'guest']};
15970
schema.validate(source, function(err, res) {
16071
expect(err).to.eql(null);
@@ -163,5 +74,4 @@ describe('async-validate:', function() {
16374
});
16475
});
16576

166-
16777
});

0 commit comments

Comments
 (0)