Skip to content

Commit

Permalink
feat: add describe to Logger tests, add m-dash to test assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
Vadim Dalecky authored and Vadim Dalecky committed Nov 7, 2017
1 parent e3595c0 commit ac844d7
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 106 deletions.
7 changes: 4 additions & 3 deletions src/TapReporter.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const STATUS_FAILED = 'failed';
const STATUS_PENDING = 'pending';

const REG_TRACE_LINE = /\s*(.+)\((.+):([0-9]+):([0-9]+)\)$/;
const MDASH = '\u2014';

class TapReporter {
constructor (globalConfig = {}, options = {}) {
Expand Down Expand Up @@ -74,15 +75,15 @@ class TapReporter {
this.counter += 1;
const {counter} = this;
const {ancestorTitles, duration, failureMessages, location, numPassingAsserts, title, status} = assertiontResult;
const formattedTitle = [...ancestorTitles, title].join(' › ');
const formattedTitle = [...ancestorTitles, chalk`{rgb(80,80,80) ${title}}`].join(' › ');

let formattedLine;
let formattedDiagnostics;

switch (status) {
case STATUS_PASSED:
if (!this._watch) {
formattedLine = chalk`{green ok} {grey.dim ${counter}} ${formattedTitle}`;
formattedLine = chalk`{green ok} {grey.dim ${counter}} ${MDASH} ${formattedTitle}`;
}
break;
case STATUS_FAILED:
Expand Down Expand Up @@ -111,7 +112,7 @@ class TapReporter {
const label = numFailingTests > 0 ?
chalk`{bgRed.bold.rgb(255,255,255) FAIL }` :
chalk`{bgGreen.bold.rgb(255,255,255) PASS }`;
const tapLine = chalk`${prefix}{rgb(255,255,255) #} ${label} {grey ${dir}${path.sep}}{bold ${base}}`;
const tapLine = chalk`${prefix}{hidden #} ${label} {grey ${dir}${path.sep}}{bold ${base}}`;

this.logger.info(tapLine + '\n');
}
Expand Down
208 changes: 105 additions & 103 deletions test/helpers/Logger.spec.js
Original file line number Diff line number Diff line change
@@ -1,144 +1,146 @@
const Logger = require('../../src/helpers/Logger');

test('Logger must set the INFO as the default level', () => {
const logger = new Logger();
describe('Logger', () => {
test('must set the INFO as the default level', () => {
const logger = new Logger();

expect(logger.getLevel()).toBe('INFO');
});
expect(logger.getLevel()).toBe('INFO');
});

/* eslint-disable no-console */
test('Logger must use console.log as default log function', () => {
const realLog = console.log;
/* eslint-disable no-console */
test('must use console.log as default log function', () => {
const realLog = console.log;

console.log = jest.fn();
const logger = new Logger();
console.log = jest.fn();
const logger = new Logger();

logger.log('foo', 'bar');
logger.log('foo', 'bar');

expect(console.log).toHaveBeenCalledTimes(1);
expect(console.log).toHaveBeenCalledWith('foo', 'bar');
expect(console.log).toHaveBeenCalledTimes(1);
expect(console.log).toHaveBeenCalledWith('foo', 'bar');

console.log = realLog;
});
/* eslint-enable no-console */
console.log = realLog;
});
/* eslint-enable no-console */

test('Logger must be possible to pass a log function', () => {
const log = jest.fn();
const logger = new Logger({log});
test('must be possible to pass a log function', () => {
const log = jest.fn();
const logger = new Logger({log});

logger.log('foo', 'bar');
logger.log('foo', 'bar');

expect(log).toHaveBeenCalledTimes(1);
expect(log).toHaveBeenCalledWith('foo', 'bar');
});
expect(log).toHaveBeenCalledTimes(1);
expect(log).toHaveBeenCalledWith('foo', 'bar');
});

test('Logger must be possible to pass a default log level', () => {
const config = {
logLevel: 'ERROR'
};
const logger = new Logger(config);
test('must be possible to pass a default log level', () => {
const config = {
logLevel: 'ERROR'
};
const logger = new Logger(config);

expect(logger.getLevel()).toBe('ERROR');
});
expect(logger.getLevel()).toBe('ERROR');
});

test('Logger must be possible to change the log level', () => {
const logger = new Logger();
test('must be possible to change the log level', () => {
const logger = new Logger();

expect(logger.getLevel()).toBe('INFO');
logger.setLevel('ERROR');
expect(logger.getLevel()).toBe('ERROR');
logger.setLevel('WARN');
expect(logger.getLevel()).toBe('WARN');
});

test('Logger must throw if you try to change the level with an unknown one', () => {
const logger = new Logger();
expect(logger.getLevel()).toBe('INFO');
logger.setLevel('ERROR');
expect(logger.getLevel()).toBe('ERROR');
logger.setLevel('WARN');
expect(logger.getLevel()).toBe('WARN');
});

expect(() => logger.setLevel('asfasdfsadf')).toThrow(TypeError);
expect(() => logger.setLevel(23423)).toThrow(TypeError);
expect(() => logger.setLevel()).toThrow(TypeError);
});
test('must throw if you try to change the level with an unknown one', () => {
const logger = new Logger();

test('logger warn log must log no matter the log level', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'INFO'
expect(() => logger.setLevel('asfasdfsadf')).toThrow(TypeError);
expect(() => logger.setLevel(23423)).toThrow(TypeError);
expect(() => logger.setLevel()).toThrow(TypeError);
});

logger.log('INFO');
expect(log).toHaveBeenCalledWith('INFO');
test('warn log must log no matter the log level', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'INFO'
});

logger.setLevel('WARN');
logger.log('WARN');
expect(log).toHaveBeenCalledWith('WARN');
logger.log('INFO');
expect(log).toHaveBeenCalledWith('INFO');

logger.setLevel('ERROR');
logger.log('ERROR');
expect(log).toHaveBeenCalledWith('ERROR');
logger.setLevel('WARN');
logger.log('WARN');
expect(log).toHaveBeenCalledWith('WARN');

expect(log).toHaveBeenCalledTimes(3);
});
logger.setLevel('ERROR');
logger.log('ERROR');
expect(log).toHaveBeenCalledWith('ERROR');

test('logger info must log if log level is INFO', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
expect(log).toHaveBeenCalledTimes(3);
});

logger.info('test');
expect(log).not.toHaveBeenCalled();
test('info must log if log level is INFO', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
});

logger.setLevel('WARN');
logger.info('test');
expect(log).not.toHaveBeenCalled();
logger.info('test');
expect(log).not.toHaveBeenCalled();

logger.setLevel('INFO');
logger.info('test');
expect(log).toHaveBeenCalledWith('test');
logger.setLevel('WARN');
logger.info('test');
expect(log).not.toHaveBeenCalled();

expect(log).toHaveBeenCalledTimes(1);
});
logger.setLevel('INFO');
logger.info('test');
expect(log).toHaveBeenCalledWith('test');

test('logger WARN must log if log level is INFO or WARN', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
expect(log).toHaveBeenCalledTimes(1);
});

logger.warn('test');
expect(log).not.toHaveBeenCalled();
test('WARN must log if log level is INFO or WARN', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
});

logger.setLevel('WARN');
logger.warn('test');
expect(log).toHaveBeenCalledWith('test');
logger.warn('test');
expect(log).not.toHaveBeenCalled();

logger.setLevel('INFO');
logger.warn('test2');
expect(log).toHaveBeenCalledWith('test2');
logger.setLevel('WARN');
logger.warn('test');
expect(log).toHaveBeenCalledWith('test');

expect(log).toHaveBeenCalledTimes(2);
});
logger.setLevel('INFO');
logger.warn('test2');
expect(log).toHaveBeenCalledWith('test2');

test('logger ERROR must log if log level is INFO or WARN or ERROR', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
expect(log).toHaveBeenCalledTimes(2);
});

logger.error('test');
expect(log).toHaveBeenCalledWith('test');
test('ERROR must log if log level is INFO or WARN or ERROR', () => {
const log = jest.fn();
const logger = new Logger({
log,
logLevel: 'ERROR'
});

logger.setLevel('WARN');
logger.error('test2');
expect(log).toHaveBeenCalledWith('test2');
logger.error('test');
expect(log).toHaveBeenCalledWith('test');

logger.setLevel('INFO');
logger.error('test3');
expect(log).toHaveBeenCalledWith('test3');
logger.setLevel('WARN');
logger.error('test2');
expect(log).toHaveBeenCalledWith('test2');

expect(log).toHaveBeenCalledTimes(3);
logger.setLevel('INFO');
logger.error('test3');
expect(log).toHaveBeenCalledWith('test3');

expect(log).toHaveBeenCalledTimes(3);
});
});

0 comments on commit ac844d7

Please sign in to comment.