33351479b38c9826466cea086a9103e3e91dc452
3 const assert
= require('assert');
4 const sinon
= require('sinon');
5 const StubLogger
= require('../stub-logger');
6 const common
= require('../../src/common');
8 describe('Common', function () {
10 describe('camelfy', function () {
11 it('covers', function () {
12 const snake
= 'snake_case';
13 const expected
= 'snakeCase';
14 const result
= common
.camelfy(snake
);
15 assert
.strictEqual(result
, expected
);
17 it('covers edge-cases', function () {
18 const kebab
= '-kebab-case-';
19 const expected
= 'KebabCase';
20 const result
= common
.camelfy(kebab
, '-');
21 assert
.strictEqual(result
, expected
);
23 it('covers empty input', function () {
25 const expected
= undefined;
26 const result
= common
.camelfy(empty
);
27 assert
.strictEqual(result
, expected
);
29 it('covers un-camelfiable input', function () {
31 const expected
= undefined;
32 const result
= common
.camelfy(bad
);
33 assert
.strictEqual(result
, expected
);
37 describe('freezeDeep', function () {
38 it('freezes things', function () {
46 const result
= common
.freezeDeep(obj
);
47 assert(Object
.isFrozen(result
));
48 assert(Object
.isFrozen(result
.sub1
));
49 assert(Object
.isFrozen(result
.sub1
.sub2
));
50 assert(Object
.isFrozen(result
.sub1
.sub2
.foo
));
54 describe('logTruncate', function () {
55 it('returns short string', function () {
56 const str
= 'this is a short string';
57 const result
= common
.logTruncate(str
, 100);
58 assert
.strictEqual(result
, str
);
60 it('truncates long string', function () {
61 const str
= 'this is not really a very long string but it is long enough for this test';
62 const result
= common
.logTruncate(str
, 10);
63 assert(result
.length
< str
.length
);
67 describe('ensureArray', function () {
68 it('returns empty array for no data', function () {
69 const result
= common
.ensureArray();
70 assert
.deepStrictEqual(result
, []);
72 it('returns same array passed in', function () {
73 const expected
= [1, 2, 3, 'foo'];
74 const result
= common
.ensureArray(expected
);
75 assert
.deepStrictEqual(result
, expected
);
77 it('returns array containing non-array data', function () {
79 const result
= common
.ensureArray(data
);
80 assert
.deepStrictEqual(result
, [data
]);
84 describe('validError', function () {
85 it('covers valid', function () {
86 const result
= common
.validError('error');
87 assert
.strictEqual(result
, true);
89 it('covers invalid', function () {
90 const result
= common
.validError('🐔');
91 assert
.strictEqual(result
, false);
93 it('covers empty', function () {
94 const result
= common
.validError();
95 assert
.strictEqual(result
, false);
99 describe('validScope', function () {
100 it('covers valid', function () {
101 const result
= common
.validScope('scope');
102 assert
.strictEqual(result
, true);
104 it('covers invalid', function () {
105 const result
= common
.validScope('🐔');
106 assert
.strictEqual(result
, false);
108 it('covers empty', function () {
109 const result
= common
.validScope();
110 assert
.strictEqual(result
, false);
114 describe('newSecret', function () {
115 it('covers default', async
function () {
116 const result
= await common
.newSecret();
117 assert(result
.length
);
119 it('covers specified', async
function () {
120 const result
= await common
.newSecret(21);
121 assert(result
.length
);
125 describe('dateToEpoch', function () {
126 it('covers no supplied date', function () {
127 const nowMs
= Date
.now() / 1000;
128 const result
= common
.dateToEpoch();
129 const drift
= Math
.abs(result
- nowMs
);
130 assert(drift
< 2000);
132 it('covers supplied date', function () {
133 const now
= new Date();
134 const nowEpoch
= Math
.ceil(now
/ 1000);
135 const result
= common
.dateToEpoch(now
);
136 assert
.strictEqual(result
, nowEpoch
);
140 describe('omit', function () {
141 it('covers', function () {
149 const omitted
= ['bar', 'baz'];
153 const result
= common
.omit(obj
, omitted
);
154 assert
.deepStrictEqual(result
, expected
);
158 describe('mysteryBoxLogger', function () {
160 beforeEach(function () {
161 stubLogger
= new StubLogger();
163 mbl
= common
.mysteryBoxLogger(stubLogger
, 'test:scope');
165 afterEach(function () {
168 it('covers', function () {
170 packageName: 'fake-mystery-box',
171 packageVersion: '0.0.0',
175 assert(stubLogger
.debug
.called
);
177 }); // mysteryBoxLogger