UNPKG

@rawmodel/parser

Version:

Parser and type casting for RawModel.

43 lines 2.18 kB
"use strict"; 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