4 const assert
= require('assert');
5 const sinon
= require('sinon');
6 const StubLogger
= require('../stub-logger');
7 const common
= require('../../src/common');
9 describe('Common', function () {
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
);
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
);
24 it('covers empty input', function () {
26 const expected
= undefined;
27 const result
= common
.camelfy(empty
);
28 assert
.strictEqual(result
, expected
);
30 it('covers un-camelfiable input', function () {
32 const expected
= undefined;
33 const result
= common
.camelfy(bad
);
34 assert
.strictEqual(result
, expected
);
38 describe('freezeDeep', function () {
39 it('freezes things', function () {
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
));
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
);
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
);
68 describe('ensureArray', function () {
69 it('returns empty array for no data', function () {
70 const result
= common
.ensureArray();
71 assert
.deepStrictEqual(result
, []);
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
);
78 it('returns array containing non-array data', function () {
80 const result
= common
.ensureArray(data
);
81 assert
.deepStrictEqual(result
, [data
]);
85 describe('validError', function () {
86 it('covers valid', function () {
87 const result
= common
.validError('error');
88 assert
.strictEqual(result
, true);
90 it('covers invalid', function () {
91 const result
= common
.validError('🐔');
92 assert
.strictEqual(result
, false);
94 it('covers empty', function () {
95 const result
= common
.validError();
96 assert
.strictEqual(result
, false);
100 describe('validScope', function () {
101 it('covers valid', function () {
102 const result
= common
.validScope('scope');
103 assert
.strictEqual(result
, true);
105 it('covers invalid', function () {
106 const result
= common
.validScope('🐔');
107 assert
.strictEqual(result
, false);
109 it('covers empty', function () {
110 const result
= common
.validScope();
111 assert
.strictEqual(result
, false);
115 describe('newSecret', function () {
116 it('covers default', async
function () {
117 const result
= await common
.newSecret();
118 assert(result
.length
);
120 it('covers specified', async
function () {
121 const result
= await common
.newSecret(21);
122 assert(result
.length
);
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);
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
);
141 describe('omit', function () {
142 it('covers', function () {
150 const omitted
= ['bar', 'baz'];
154 const result
= common
.omit(obj
, omitted
);
155 assert
.deepStrictEqual(result
, expected
);
159 describe('mysteryBoxLogger', function () {
161 beforeEach(function () {
162 stubLogger
= new StubLogger();
164 mbl
= common
.mysteryBoxLogger(stubLogger
, 'test:scope');
166 afterEach(function () {
169 it('covers', function () {
171 packageName: 'fake-mystery-box',
172 packageVersion: '0.0.0',
176 assert(stubLogger
.debug
.called
);
178 }); // mysteryBoxLogger