UNPKG

swatchjs-utils

Version:

Utilities for SwatchJS, a framework for easily creating and exposing APIs as methods

115 lines (94 loc) 3.5 kB
'use strict'; var _require = require('chai'), expect = _require.expect; var errors = require('../../../lib/errors'); var anyParsers = require('../../../lib/api/parsers/any'); var error = errors.ERROR_CODE_INVALID_OBJECT; describe('parsers.any', function () { describe('parseAny', function () { it('should parse and return an arbitrary data value', function () { function checkTargetObject(obj) { var result = anyParsers.parseAny(obj); expect(result).to.deep.equal(obj); } // Check that it properly parses objects with expected keys var t1 = { id: 'test.id', key: 'something' }; checkTargetObject(t1); var t2 = { id: ' some other item ', key: '-another-' }; checkTargetObject(t2); var t3 = { id: 'user-id1', other: 100, key: 'extra' }; checkTargetObject(t3); // Check that it allows booleans, numbers, strings, and arrays checkTargetObject('a'); checkTargetObject(100); checkTargetObject(true); checkTargetObject(false); checkTargetObject('false'); checkTargetObject([1, 2, 3]); }); it('should throw an error parsing an empty value', function () { // Check that it rejects false-y empty input values expect(function () { return anyParsers.parseAny(null); }).to.throw(error); expect(function () { return anyParsers.parseAny(undefined); }).to.throw(error); // Check that it rejects complex object-like values expect(function () { return anyParsers.parseAny(Number('a')); }).to.throw(error); var fn = function fn() { return 100; }; expect(function () { return anyParsers.parseAny(fn); }).to.throw(error); var regexp = new RegExp('\\w+'); expect(function () { return anyParsers.parseAny(regexp); }).to.throw(error); }); }); describe('parseOptionalAny', function () { it('should parse and return an arbitrary data value', function () { function checkTargetObject(obj) { var result = anyParsers.parseOptionalAny(obj); expect(result).to.deep.equal(obj); } // Check that it properly parses objects with expected keys var t1 = { id: 'test.id', key: 'something' }; checkTargetObject(t1); var t2 = { id: ' some other item ', key: '-another-' }; checkTargetObject(t2); var t3 = { id: 'user-id1', other: 100, key: 'extra' }; checkTargetObject(t3); // Check that it allows false-y empty input values expect(anyParsers.parseOptionalAny(null)).to.equal(undefined); checkTargetObject(undefined); // Check that it allows booleans, numbers, strings, and arrays checkTargetObject('a'); checkTargetObject(100); checkTargetObject(true); checkTargetObject(false); checkTargetObject('false'); checkTargetObject([1, 2, 3]); }); it('should throw an error parsing an empty value', function () { // Check that it rejects complex object-like values expect(function () { return anyParsers.parseOptionalAny(Number('a')); }).to.throw(error); var fn = function fn() { return 100; }; expect(function () { return anyParsers.parseOptionalAny(fn); }).to.throw(error); var regexp = new RegExp('\\w+'); expect(function () { return anyParsers.parseOptionalAny(regexp); }).to.throw(error); }); }); });