-
-
Notifications
You must be signed in to change notification settings - Fork 49
/
async-tests.spec.js
50 lines (41 loc) · 1.01 KB
/
async-tests.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'use strict';
var Ajv = require('ajv');
var jsonSchemaTest = require('json-schema-test');
var defineKeywords = require('..');
var ajvs = [
// defineKeywords(getAjv(), 'switch'),
defineKeywords(getAjv()),
defineKeywords(getAjv(true))
];
jsonSchemaTest(ajvs, {
skip: true,
description: 'keywords "switch" with async schemas',
suites: {
'tests': './async-tests/{**/,}*.json'
},
async: true,
// afterError: after.error,
// afterEach: after.each,
cwd: __dirname,
hideFolder: 'async-tests/'
});
function getAjv(extras) {
var ajv = new Ajv({ allErrors: extras, verbose: extras });
ajv.addKeyword('idExists', {
async: true,
type: 'number',
validate: checkIdExists,
errors: false
});
return ajv;
}
function checkIdExists(schema, data) {
switch (schema.table) {
case 'users': return check([1, 5, 8]);
case 'posts': return check([21, 25, 28]);
default: throw new Error('no such table');
}
function check(IDs) {
return Promise.resolve(IDs.indexOf(data) >= 0);
}
}