UNPKG

4.05 kBJavaScriptView Raw
1/* global it describe */
2const assert = require('assert');
3const { setPrecision, parseOr, jsonOr, intOr, floatOr } = require('../conversions');
4const { identity } = require('../logic');
5
6describe('Conversions', function() {
7 describe('#jsonOr()', function() {
8 it('should return default value if empty', function() {
9 assert.strictEqual(jsonOr(0)(null), 0);
10 assert.strictEqual(jsonOr(0)(''), 0);
11 assert.strictEqual(jsonOr(0)(), 0);
12 assert.strictEqual(jsonOr(1)(0), 0);
13 assert.strictEqual(jsonOr(0)('asdffsda'), 0);
14 assert.deepStrictEqual(jsonOr(0)('{a:b}'), 0);
15 });
16 it('should return empty object if empty object passed', function() {
17 assert.deepStrictEqual(jsonOr(0)('{}'), {});
18 assert.deepStrictEqual(jsonOr(0)('{"a":{"b":1}}'), { a: { b: 1 } });
19 });
20 it('should return function returned value if passed a function', function() {
21 assert.strictEqual(jsonOr(x => 3)(null), 3);
22 });
23 it('should return same value if identity is passed as default value', function() {
24 assert.strictEqual(jsonOr(identity)(null), null);
25 });
26 });
27 describe('#floatOr()', function() {
28 it('should return default value if empty', function() {
29 assert.strictEqual(floatOr(0)(null), 0);
30 assert.strictEqual(floatOr(0)(), 0);
31 assert.strictEqual(floatOr(0)('xxxx'), 0);
32 assert.strictEqual(floatOr(0)('x3x'), 0);
33 assert.strictEqual(floatOr(1)(0), 0);
34 });
35 it('should return value if is a float', function() {
36 assert.strictEqual(floatOr(0)(1.1), 1.1);
37 assert.strictEqual(floatOr(0)('1.1'), 1.1);
38 assert.strictEqual(floatOr(0)('1.123456789'), 1.123456789);
39 });
40 it('should return function returned value if passed a function', function() {
41 assert.strictEqual(floatOr(x => 3)(null), 3);
42 });
43 it('should return same value if identity is passed as default value', function() {
44 assert.strictEqual(floatOr(identity)(null), null);
45 });
46 });
47 describe('#intOr()', function() {
48 it('should return default value if empty', function() {
49 assert.strictEqual(intOr(0)(null), 0);
50 assert.strictEqual(intOr(0)(), 0);
51 assert.strictEqual(intOr(0)('xxxx'), 0);
52 assert.strictEqual(intOr(0)('x3x'), 0);
53 assert.strictEqual(intOr(1)(0), 0);
54 });
55 it('should return value if is a int', function() {
56 assert.strictEqual(intOr(0)(1), 1);
57 assert.strictEqual(intOr(0)('1'), 1);
58 });
59 it('should return an int if passed a float', function() {
60 assert.strictEqual(intOr(0)(1.1), 1);
61 assert.strictEqual(intOr(0)('1.9'), 1);
62 });
63 it('should return function returned value if passed a function', function() {
64 assert.strictEqual(intOr(x => 3)(null), 3);
65 });
66 it('should return same value if identity is passed as default value', function() {
67 assert.strictEqual(intOr(identity)(null), null);
68 });
69 });
70 describe('#setPrecision()', function() {
71 it('should return with no decimals if 0 passed', function() {
72 assert.strictEqual(setPrecision(0, 1.3), 1);
73 });
74 it('should return with no decimals if wrong precision passed', function() {
75 assert.strictEqual(setPrecision(null, 1.3), 1);
76 assert.strictEqual(setPrecision(undefined, 1.3), 1);
77 });
78 it('should return the exact decimals passed', function() {
79 assert.strictEqual(setPrecision(2, 1.12345), 1.12);
80 });
81 it('should return decimals rounded', function() {
82 assert.strictEqual(setPrecision(3, 1.12345), 1.123);
83 assert.strictEqual(setPrecision(4, 1.12345), 1.1235);
84 });
85 });
86 describe('#parseOr()', function() {
87 it('should return default value if parser throws an exception', function() {
88 assert.strictEqual(
89 parseOr(x => {
90 throw Error('whatever');
91 })(33)(1),
92 33
93 );
94 });
95 it('should return value if identity passes as a parser', function() {
96 assert.strictEqual(parseOr(identity)(33)(1), 1);
97 assert.strictEqual(parseOr(identity)(33)(0), 0);
98 });
99 });
100});