const Debug = require('../../../helper/debug'); module.exports.tests = {}; module.exports.tests.debug = function(test, common) { test('initialize the debugger with a name', (t) => { const debugLog = new Debug('debugger'); t.deepEquals(debugLog.name, 'debugger'); t.end(); }); test('don\'t push debug message if enableDebug is false', (t) => { const debugLog = new Debug('debugger'); const req = { clean: { enableDebug: false } }; debugLog.push(req, 'This should not be pushed'); t.deepEquals(req.debug, undefined); t.end(); }); test('don\'t start timer if enableDebug is false', (t) => { const debugLog = new Debug('debugger'); const req = { clean: { enableDebug: false } }; debugLog.beginTimer(req, 'This should not be pushed'); t.deepEquals(req.debug, undefined); t.end(); }); test('don\'t push debug message if req.clean is empty', (t) => { const debugLog = new Debug('debugger'); const req = { clean: {} }; debugLog.push('This should not be pushed'); t.deepEquals(req.debug, undefined); t.end(); }); test('Push messages if enableDebug is true', (t) => { const debugLog = new Debug('debugger'); const req = { clean: { enableDebug: true } }; const expected_req = [ { debugger: 'This should be pushed' }, { debugger: 'Timer Began. Timer 1' } ]; debugLog.push(req, 'This should be pushed'); debugLog.beginTimer(req, 'Timer 1'); t.deepEquals(req.debug, expected_req); t.end(); }); test('Push messages can take output of function', (t) => { const debugLog = new Debug('debugger'); const req = { clean: { enableDebug: true } }; const expected_req = [ { debugger: 'This should be pushed' } ]; debugLog.push(req, () => ('This should be pushed')); t.deepEquals(req.debug, expected_req); t.end(); }); test('Timer should return number of milliseconds', (t) => { const debugLog = new Debug('debugger'); const req = { clean: { enableDebug: true } }; const timer = debugLog.beginTimer(req); debugLog.stopTimer(req, timer); // Checks that there is a debug message // that matches the pattern "Timer Stopped. [number] ms" t.deepEquals(req.debug[1].debugger.match(/Timer Stopped\. \d+ ms/i).length, 1); t.end(); }); }; module.exports.all = function (tape, common) { function test(name, testFunction) { return tape('[helper] debug: ' + name, testFunction); } for( var testCase in module.exports.tests ){ module.exports.tests[testCase](test, common); } };