-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvalidators.test.ts
28 lines (25 loc) · 982 Bytes
/
validators.test.ts
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
import { testCases } from "./validation-data"
import { Validator, TestCase, solutions } from '.'
import * as _ from "lodash"
describe('Validator Test', () => {
// prepare case table
const caseTable: [string, TestCase, Validator][] = [];
for (let [solName, solModule] of solutions) {
for (let tcase of testCases) {
const validator = solModule[tcase.schema];
if (validator !== undefined) {
caseTable.push([`${solName} / ${tcase.schema}: ${tcase.id} [${String(tcase.result).toUpperCase()}]`, tcase, validator])
}
}
}
test.each(caseTable)('%s', (name, tcase, validator) => {
// some validator may modify data (type coercion)
// make a clone first
const clonedData = _.cloneDeep(tcase.data);
if (tcase.result === true) {
const result = validator(clonedData);
} else {
expect(()=>validator(clonedData)).toThrow()
}
})
})