tynder
Version:
TypeScript friendly Data validator for JavaScript.
103 lines (92 loc) • 3.01 kB
text/typescript
import {} from '../types';
import { validate } from '../validator';
import { pick } from '../picker';
import { picked,
partial,
intersect,
oneOf,
subtract,
primitive,
primitiveValue,
optional,
repeated,
sequenceOf,
spread,
objectType,
derived,
withMsg as $$,
withMsgId as $ } from '../operators';
describe("operator", function() {
it("operator-1", function() {
const myType = oneOf(
derived(
objectType(
['foo', 10],
['qoo', $$({valueUnmatched: ''})(
optional(20))],
['zoo', $('msgid-myType-zoo')(
optional('aaa'))],
['www', sequenceOf(10, 20, spread(primitive('string'), {min: 3, max: 10}), 50)],
),
objectType(
['bar', optional(primitive('string'))],
['bar2', primitive('string?')],
['bar3', repeated('string', {min: 3, max: 10})],
['bar4', primitive('integer')],
['bar5', primitive('integer?')],
[[/^[a-z][0-9]$/], optional(primitive('string'))],
),
intersect(
objectType(
['baz', 10],
),
objectType(
['baz', 10],
),
),
subtract(
objectType(
['baz', 10],
),
objectType(
['baz', 10],
),
),
),
10, 20, 30,
primitive('string'),
primitiveValue(50),
);
expect(validate({
foo: 10,
www: [10, 20, 'a', 'b', 'c', 50],
bar3: ['a', 'b', 'c'],
bar4: 11,
bar5: 13,
baz: 10,
}, myType)).toEqual({value: {
foo: 10,
www: [10, 20, 'a', 'b', 'c', 50],
bar3: ['a', 'b', 'c'],
bar4: 11,
bar5: 13,
baz: 10,
}});
/*
console.log(JSON.stringify(myType, null, 2));
const myType2 = picked(myType, 'foo', 'baz');
console.log(JSON.stringify(myType2, null, 2));
const myType3 = partial(myType);
console.log(JSON.stringify(myType3, null, 2));
expect(validate({
aaaaaa: 'ppppppppppppp',
foo: 10,
www: [10, 20, 'a', 'b', 'c', 50],
bar3: ['a', 'b', 'c'],
}, myType)).toEqual({} as any);
pick({}, myType2);
merge({}, {});
*/
expect(1).toEqual(1);
});
});