@rawmodel/parser
Version:
Parser and type casting for RawModel.
43 lines • 2.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const spec_1 = require("@hayspec/spec");
const __1 = require("../../..");
const types_1 = require("../../../core/types");
const spec = new spec_1.Spec();
spec.test('passes through', (ctx) => {
ctx.is(__1.parse(100, null), 100);
ctx.is(__1.parse('100', undefined), '100');
ctx.is(__1.parse(100, { kind: 'foo' }), 100);
ctx.is(__1.parse(100, { kind: types_1.ParserKind.ANY }), 100);
ctx.deepEqual(__1.parse([1, '2'], { kind: types_1.ParserKind.ANY }), [1, '2']);
ctx.deepEqual(__1.parse({ a: 1 }, { kind: types_1.ParserKind.ANY }), { a: 1 });
});
spec.test('converts to string', (ctx) => {
ctx.is(__1.parse(100, { kind: types_1.ParserKind.STRING }), '100');
});
spec.test('converts to boolean', (ctx) => {
ctx.true(__1.parse(1, { kind: types_1.ParserKind.BOOLEAN }));
ctx.false(__1.parse(0, { kind: types_1.ParserKind.BOOLEAN }));
});
spec.test('converts to integer', (ctx) => {
ctx.is(__1.parse(1.132, { kind: types_1.ParserKind.INTEGER }), 1);
ctx.is(__1.parse('1.132', { kind: types_1.ParserKind.INTEGER }), 1);
});
spec.test('converts to float', (ctx) => {
ctx.is(__1.parse(1.234, { kind: types_1.ParserKind.FLOAT }), 1.234);
ctx.is(__1.parse('1.234', { kind: types_1.ParserKind.FLOAT }), 1.234);
});
spec.test('converts to date', (ctx) => {
ctx.deepEqual(__1.parse(100000, { kind: types_1.ParserKind.DATE }), new Date(100000));
ctx.deepEqual(__1.parse('100000', { kind: types_1.ParserKind.DATE }), new Date(100000));
});
spec.test('converts to arrays', (ctx) => {
ctx.deepEqual(__1.parse(100, { kind: types_1.ParserKind.ARRAY }), [100]);
ctx.deepEqual(__1.parse(100, { kind: types_1.ParserKind.ARRAY, parse: { kind: types_1.ParserKind.STRING } }), ['100']);
ctx.deepEqual(__1.parse([100, '200'], { kind: types_1.ParserKind.ARRAY, parse: { kind: types_1.ParserKind.STRING } }), ['100', '200']);
});
spec.test('converts to custom type', (ctx) => {
ctx.deepEqual(__1.parse(100, { kind: types_1.ParserKind.CUSTOM, handler(v) { return 'foo'; } }), 'foo');
});
exports.default = spec;
//# sourceMappingURL=parse-method.test.js.map