swatchjs-utils
Version:
Utilities for SwatchJS, a framework for easily creating and exposing APIs as methods
181 lines (153 loc) • 7.02 kB
JavaScript
;
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]);
});
});
});