UNPKG

swatchjs-utils

Version:

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

181 lines (153 loc) 7.02 kB
'use strict'; var _require = require('chai'), expect = _require.expect; var errors = require('../../../lib/errors'); var numberParsers = require('../../../lib/api/parsers/numbers'); describe('parsers.numbers', function () { describe('parseNumber', function () { it('should throw an error for invalid number param', function () { var error = errors.ERROR_CODE_INVALID_NUMBER; expect(function () { return numberParsers.parseNumber(); }).to.throw(error); expect(function () { return numberParsers.parseNumber(null); }).to.throw(error); expect(function () { return numberParsers.parseNumber(undefined); }).to.throw(error); expect(function () { return numberParsers.parseNumber('val'); }).to.throw(error); expect(function () { return numberParsers.parseNumber([1, 2, 3]); }).to.throw(error); expect(function () { return numberParsers.parseNumber(['a', 'b', 'c']); }).to.throw(error); expect(function () { return numberParsers.parseNumber({}); }).to.throw(error); expect(function () { return numberParsers.parseNumber({ key: 2 }); }).to.throw(error); }); it('should parse and coerce param to number', function () { expect(numberParsers.parseNumber(0)).to.equal(0); expect(numberParsers.parseNumber(10)).to.equal(10); expect(numberParsers.parseNumber(-20)).to.equal(-20); expect(numberParsers.parseNumber('0')).to.equal(0); expect(numberParsers.parseNumber('1')).to.equal(1); expect(numberParsers.parseNumber('-11')).to.equal(-11); expect(numberParsers.parseNumber(true)).to.equal(1); expect(numberParsers.parseNumber(false)).to.equal(0); expect(numberParsers.parseNumber([])).to.equal(0); expect(numberParsers.parseNumber([10])).to.equal(10); }); }); describe('parseOptionalNumber', function () { it('should throw an error for invalid number param', function () { var error = errors.ERROR_CODE_INVALID_NUMBER; expect(function () { return numberParsers.parseOptionalNumber('val'); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumber([1, 2, 3]); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumber(['a', 'b', 'c']); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumber({}); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumber({ key: 2 }); }).to.throw(error); }); it('should parse and coerce param to number', function () { expect(numberParsers.parseOptionalNumber()).to.equal(undefined); expect(numberParsers.parseOptionalNumber(null)).to.equal(undefined); expect(numberParsers.parseOptionalNumber(undefined)).to.equal(undefined); expect(numberParsers.parseOptionalNumber(0)).to.equal(0); expect(numberParsers.parseOptionalNumber(10)).to.equal(10); expect(numberParsers.parseOptionalNumber(-20)).to.equal(-20); expect(numberParsers.parseOptionalNumber('0')).to.equal(0); expect(numberParsers.parseOptionalNumber('1')).to.equal(1); expect(numberParsers.parseOptionalNumber('-11')).to.equal(-11); expect(numberParsers.parseOptionalNumber(true)).to.equal(1); expect(numberParsers.parseOptionalNumber(false)).to.equal(0); expect(numberParsers.parseOptionalNumber([])).to.equal(0); expect(numberParsers.parseOptionalNumber([10])).to.equal(10); }); }); describe('parseNumberList', function () { it('should throw an error for invalid number list param', function () { var error = errors.ERROR_CODE_INVALID_ARRAY; expect(function () { return numberParsers.parseNumberList(); }).to.throw(error); expect(function () { return numberParsers.parseNumberList(null); }).to.throw(error); expect(function () { return numberParsers.parseNumberList(undefined); }).to.throw(error); expect(function () { return numberParsers.parseNumberList(10); }).to.throw(error); expect(function () { return numberParsers.parseNumberList({}); }).to.throw(error); expect(function () { return numberParsers.parseNumberList(''); }).to.throw(error); expect(function () { return numberParsers.parseNumberList(true); }).to.throw(error); expect(function () { return numberParsers.parseNumberList([1, 2, 'a']); }).to.throw(errors.ERROR_CODE_INVALID_NUMBER); }); it('should parse and coerce param to number list', function () { expect(numberParsers.parseNumberList([])).to.deep.equal([]); expect(numberParsers.parseNumberList([-3])).to.deep.equal([-3]); expect(numberParsers.parseNumberList([1, 3, 5])).to.deep.equal([1, 3, 5]); expect(numberParsers.parseNumberList(['10'])).to.deep.equal([10]); expect(numberParsers.parseNumberList([1, '2', '-1'])).to.deep.equal([1, 2, -1]); expect(numberParsers.parseNumberList([true, false])).to.deep.equal([1, 0]); expect(numberParsers.parseNumberList(['0', 0])).to.deep.equal([0, 0]); }); }); describe('parseOptionalNumberList', function () { it('should throw an error for invalid number list param', function () { var error = errors.ERROR_CODE_INVALID_ARRAY; expect(function () { return numberParsers.parseOptionalNumberList(10); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumberList({}); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumberList(''); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumberList(true); }).to.throw(error); expect(function () { return numberParsers.parseOptionalNumberList([1, 2, 'a']); }).to.throw(errors.ERROR_CODE_INVALID_NUMBER); }); it('should parse and coerce param to number list', function () { expect(numberParsers.parseOptionalNumberList()).to.deep.equal(undefined); expect(numberParsers.parseOptionalNumberList(null)).to.deep.equal(undefined); expect(numberParsers.parseOptionalNumberList(undefined)).to.deep.equal(undefined); expect(numberParsers.parseOptionalNumberList([])).to.deep.equal([]); expect(numberParsers.parseOptionalNumberList([-3])).to.deep.equal([-3]); expect(numberParsers.parseOptionalNumberList([1, 3, 5])).to.deep.equal([1, 3, 5]); expect(numberParsers.parseOptionalNumberList(['10'])).to.deep.equal([10]); expect(numberParsers.parseOptionalNumberList([1, '2', '-1'])).to.deep.equal([1, 2, -1]); expect(numberParsers.parseOptionalNumberList([true, false])).to.deep.equal([1, 0]); expect(numberParsers.parseOptionalNumberList(['0', 0])).to.deep.equal([0, 0]); }); }); });