Skip to content

Commit c477fb6

Browse files
committed
minor #116 Adding tests for the logger and cleaning up a bit internally (weaverryan)
This PR was merged into the master branch. Discussion ---------- Adding tests for the logger and cleaning up a bit internally ... also added the `recommendation` method, which we will use in #101. Commits ------- 7ecfece Adding tests for the logger and cleaning up a bit internally
2 parents 2cae5df + 7ecfece commit c477fb6

File tree

3 files changed

+101
-21
lines changed

3 files changed

+101
-21
lines changed

lib/logger.js

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,31 @@
1010
'use strict';
1111

1212
const chalk = require('chalk');
13-
let isVerbose = false;
14-
let quiet = false;
15-
let messages = {
16-
debug: [],
17-
warning: [],
13+
14+
const messagesKeys = [
15+
'debug',
16+
'recommendation',
17+
'warning',
18+
];
19+
const defaultConfig = {
20+
isVerbose: false,
21+
quiet: false
22+
};
23+
24+
let messages = {};
25+
let config = {};
26+
27+
const reset = function() {
28+
messages = {};
29+
for (let messageKey of messagesKeys) {
30+
messages[messageKey] = [];
31+
}
32+
config = Object.assign({}, defaultConfig);
1833
};
34+
reset();
1935

2036
function log(message) {
21-
if (quiet) {
37+
if (config.quiet) {
2238
return;
2339
}
2440

@@ -29,31 +45,36 @@ module.exports = {
2945
debug(message) {
3046
messages.debug.push(message);
3147

32-
if (isVerbose) {
33-
log(`${chalk.bgBlack.white(' DEBUG ')} ${message}`);
48+
if (config.isVerbose) {
49+
log(`${chalk.bgBlack.white(' DEBUG ')} ${message}`);
3450
}
3551
},
3652

37-
warning(message) {
38-
messages.warning.push(message);
53+
recommendation(message) {
54+
messages.recommendation.push(message);
3955

40-
log(`${chalk.bgYellow.black(' WARNING ')} ${chalk.yellow(message)}`);
56+
log(`${chalk.bgBlue.white(' RECOMMEND ')} ${message}`);
4157
},
4258

43-
clearMessages() {
44-
messages.debug = [];
45-
messages.warning = [];
59+
warning(message) {
60+
messages.warning.push(message);
61+
62+
log(`${chalk.bgYellow.black(' WARNING ')} ${chalk.yellow(message)}`);
4663
},
4764

4865
getMessages() {
4966
return messages;
5067
},
5168

52-
quiet() {
53-
quiet = true;
69+
quiet(setQuiet = true) {
70+
config.quiet = setQuiet;
71+
},
72+
73+
verbose(setVerbose = true) {
74+
config.isVerbose = setVerbose;
5475
},
5576

56-
verbose() {
57-
isVerbose = true;
77+
reset() {
78+
reset();
5879
}
5980
};

test/config/validator.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ const RuntimeConfig = require('../../lib/config/RuntimeConfig');
1515
const validator = require('../../lib/config/validator');
1616
const logger = require('../../lib/logger');
1717

18-
logger.quiet();
19-
2018
function createConfig() {
2119
const runtimeConfig = new RuntimeConfig();
2220
runtimeConfig.context = __dirname;
@@ -77,7 +75,8 @@ describe('The validator function', () => {
7775
config.addEntry('main', './main');
7876
config.runtimeConfig.useDevServer = true;
7977

80-
logger.clearMessages();
78+
logger.reset();
79+
logger.quiet();
8180
validator(config);
8281

8382
expect(logger.getMessages().warning).to.have.lengthOf(1);

test/logger.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* This file is part of the Symfony package.
3+
*
4+
* (c) Fabien Potencier <fabien@symfony.com>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
'use strict';
11+
12+
const expect = require('chai').expect;
13+
require('../lib/context').runtimeConfig = {};
14+
const logger = require('../lib/logger');
15+
16+
describe('logger', () => {
17+
beforeEach(() => {
18+
logger.reset();
19+
});
20+
21+
afterEach(() => {
22+
logger.reset();
23+
});
24+
25+
it('Smoke test for log methods', () => {
26+
27+
const methods = [
28+
'debug',
29+
'recommendation',
30+
'warning',
31+
];
32+
const testString = 'TEST MESSAGE';
33+
const expectedMessages = {
34+
debug: [testString],
35+
recommendation: [testString],
36+
warning: [testString],
37+
};
38+
39+
logger.quiet();
40+
logger.verbose();
41+
42+
for (let loggerMethod of methods) {
43+
logger[loggerMethod](testString);
44+
}
45+
46+
// clone the object so the afterEach doesn't clear out before
47+
// a failure message is shown
48+
const actualMessages = Object.assign({}, logger.getMessages());
49+
expect(actualMessages).to.deep.equal(expectedMessages);
50+
});
51+
52+
it('test reset()', () => {
53+
logger.debug('DEBUG!');
54+
logger.reset();
55+
56+
const actualMessages = Object.assign({}, logger.getMessages());
57+
58+
expect(actualMessages.debug).to.have.lengthOf(0);
59+
});
60+
});

0 commit comments

Comments
 (0)