remove unused function
[squeep-indie-auther] / test / src / common.js
1 /* eslint-env mocha */
2 'use strict';
3
4 const assert = require('assert');
5 const sinon = require('sinon');
6 const StubLogger = require('../stub-logger');
7 const common = require('../../src/common');
8
9 describe('Common', function () {
10
11 describe('camelfy', function () {
12 it('covers', function () {
13 const snake = 'snake_case';
14 const expected = 'snakeCase';
15 const result = common.camelfy(snake);
16 assert.strictEqual(result, expected);
17 });
18 it('covers edge-cases', function () {
19 const kebab = '-kebab-case-';
20 const expected = 'KebabCase';
21 const result = common.camelfy(kebab, '-');
22 assert.strictEqual(result, expected);
23 });
24 it('covers empty input', function () {
25 const empty = '';
26 const expected = undefined;
27 const result = common.camelfy(empty);
28 assert.strictEqual(result, expected);
29 });
30 it('covers un-camelfiable input', function () {
31 const bad = {};
32 const expected = undefined;
33 const result = common.camelfy(bad);
34 assert.strictEqual(result, expected);
35 });
36 }); // camelfy
37
38 describe('freezeDeep', function () {
39 it('freezes things', function () {
40 const obj = {
41 sub1: {
42 sub2: {
43 foo: 'blah',
44 },
45 },
46 };
47 const result = common.freezeDeep(obj);
48 assert(Object.isFrozen(result));
49 assert(Object.isFrozen(result.sub1));
50 assert(Object.isFrozen(result.sub1.sub2));
51 assert(Object.isFrozen(result.sub1.sub2.foo));
52 });
53 }); // freezeDeep
54
55 describe('logTruncate', function () {
56 it('returns short string', function () {
57 const str = 'this is a short string';
58 const result = common.logTruncate(str, 100);
59 assert.strictEqual(result, str);
60 });
61 it('truncates long string', function () {
62 const str = 'this is not really a very long string but it is long enough for this test';
63 const result = common.logTruncate(str, 10);
64 assert(result.length < str.length);
65 });
66 }); // logTruncate
67
68 describe('ensureArray', function () {
69 it('returns empty array for no data', function () {
70 const result = common.ensureArray();
71 assert.deepStrictEqual(result, []);
72 });
73 it('returns same array passed in', function () {
74 const expected = [1, 2, 3, 'foo'];
75 const result = common.ensureArray(expected);
76 assert.deepStrictEqual(result, expected);
77 });
78 it('returns array containing non-array data', function () {
79 const data = 'bar';
80 const result = common.ensureArray(data);
81 assert.deepStrictEqual(result, [data]);
82 });
83 }); // ensureArray
84
85 describe('validError', function () {
86 it('covers valid', function () {
87 const result = common.validError('error');
88 assert.strictEqual(result, true);
89 });
90 it('covers invalid', function () {
91 const result = common.validError('🐔');
92 assert.strictEqual(result, false);
93 });
94 it('covers empty', function () {
95 const result = common.validError();
96 assert.strictEqual(result, false);
97 });
98 }); // validError
99
100 describe('validScope', function () {
101 it('covers valid', function () {
102 const result = common.validScope('scope');
103 assert.strictEqual(result, true);
104 });
105 it('covers invalid', function () {
106 const result = common.validScope('🐔');
107 assert.strictEqual(result, false);
108 });
109 it('covers empty', function () {
110 const result = common.validScope();
111 assert.strictEqual(result, false);
112 });
113 }); // validScope
114
115 describe('newSecret', function () {
116 it('covers default', async function () {
117 const result = await common.newSecret();
118 assert(result.length);
119 });
120 it('covers specified', async function () {
121 const result = await common.newSecret(21);
122 assert(result.length);
123 });
124 }); // newSecret
125
126 describe('dateToEpoch', function () {
127 it('covers no supplied date', function () {
128 const nowMs = Date.now() / 1000;
129 const result = common.dateToEpoch();
130 const drift = Math.abs(result - nowMs);
131 assert(drift < 2000);
132 });
133 it('covers supplied date', function () {
134 const now = new Date();
135 const nowEpoch = Math.ceil(now / 1000);
136 const result = common.dateToEpoch(now);
137 assert.strictEqual(result, nowEpoch);
138 });
139 }); // dateToEpoch
140
141 describe('omit', function () {
142 it('covers', function () {
143 const obj = {
144 foo: true,
145 bar: 'bar',
146 baz: {
147 quux: false,
148 },
149 };
150 const omitted = ['bar', 'baz'];
151 const expected = {
152 foo: true,
153 };
154 const result = common.omit(obj, omitted);
155 assert.deepStrictEqual(result, expected);
156 });
157 }); // omit
158
159 describe('mysteryBoxLogger', function () {
160 let mbl, stubLogger;
161 beforeEach(function () {
162 stubLogger = new StubLogger();
163 stubLogger._reset();
164 mbl = common.mysteryBoxLogger(stubLogger, 'test:scope');
165 });
166 afterEach(function () {
167 sinon.restore();
168 });
169 it('covers', function () {
170 const stat = {
171 packageName: 'fake-mystery-box',
172 packageVersion: '0.0.0',
173 data: 'exists',
174 };
175 mbl(stat);
176 assert(stubLogger.debug.called);
177 });
178 }); // mysteryBoxLogger
179
180 }); // Common