Skip to content

Instantly share code, notes, and snippets.

@jkyoutsey
Last active October 15, 2020 02:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jkyoutsey/01e3e2db4ba9a570245bd63d543960e1 to your computer and use it in GitHub Desktop.
Save jkyoutsey/01e3e2db4ba9a570245bd63d543960e1 to your computer and use it in GitHub Desktop.
Unit test for logger.ts
import { Logger } from './logger';
import { environment } from '@environments/environment';
describe('Logger Spec', () => {
let debug;
let info;
let warn;
let err;
let log;
beforeEach(() => {
debug = spyOn(console, 'debug');
info = spyOn(console, 'info');
warn = spyOn(console, 'warn');
err = spyOn(console, 'error');
log = spyOn(console, 'log');
});
it('can log empty message', () => {
Logger.debug('MODULE', 'METHOD', '');
expect(debug).toHaveBeenCalledWith('MODULE.METHOD');
});
it('can log without message', () => {
Logger.debug('MODULE', 'METHOD');
expect(debug).toHaveBeenCalledWith('MODULE.METHOD');
});
it('can log with undefined message', () => {
Logger.debug('MODULE', 'METHOD', undefined);
expect(debug).toHaveBeenCalledWith('MODULE.METHOD');
});
it('can log debug number', () => {
Logger.debug('MODULE', 'METHOD', 42);
expect(debug).toHaveBeenCalledWith('MODULE.METHOD - 42');
});
it('can log debug string', () => {
Logger.debug('MODULE', 'METHOD', 'STRING');
expect(debug).toHaveBeenCalledWith('MODULE.METHOD - STRING');
});
it('can log debug object', () => {
const obj = { prop1: 'hello' };
Logger.debug('MODULE', 'METHOD', obj);
expect(debug).toHaveBeenCalledWith(`MODULE.METHOD - ${JSON.stringify(obj)}`);
});
it('debug honors devOnly flag', () => {
if (environment.production) {
Logger.debug('MODULE', 'METHOD', 'STRING', true);
expect(debug).toHaveBeenCalledWith('MODULE.METHOD');
} else {
Logger.debug('MODULE', 'METHOD', 'STRING', true);
expect(debug).toHaveBeenCalledWith('MODULE.METHOD - STRING');
}
});
it('can log info string', () => {
Logger.info('MODULE', 'METHOD', 'STRING');
expect(info).toHaveBeenCalledWith('MODULE.METHOD - STRING');
});
it('can log info object', () => {
const obj = { prop1: 'hello' };
Logger.info('MODULE', 'METHOD', obj);
expect(info).toHaveBeenCalledWith(`MODULE.METHOD - ${JSON.stringify(obj)}`);
});
it('info honors devOnly flag', () => {
if (environment.production) {
Logger.info('MODULE', 'METHOD', 'STRING', true);
expect(info).toHaveBeenCalledWith('MODULE.METHOD');
} else {
Logger.info('MODULE', 'METHOD', 'STRING', true);
expect(info).toHaveBeenCalledWith('MODULE.METHOD - STRING');
}
});
it('can log warn string', () => {
Logger.warn('MODULE', 'METHOD', 'STRING');
expect(warn).toHaveBeenCalledWith('MODULE.METHOD - STRING');
});
it('can log warn object', () => {
const obj = { prop1: 'hello' };
Logger.warn('MODULE', 'METHOD', obj);
expect(warn).toHaveBeenCalledWith(`MODULE.METHOD - ${JSON.stringify(obj)}`);
});
it('warn honors devOnly flag', () => {
if (environment.production) {
Logger.warn('MODULE', 'METHOD', 'STRING', true);
expect(warn).toHaveBeenCalledWith('MODULE.METHOD');
} else {
Logger.warn('MODULE', 'METHOD', 'STRING', true);
expect(warn).toHaveBeenCalledWith('MODULE.METHOD - STRING');
}
});
it('can log error string', () => {
Logger.error('MODULE', 'METHOD', 'STRING');
expect(err).toHaveBeenCalledWith('MODULE.METHOD - STRING');
});
it('can log error object', () => {
const obj = { prop1: 'hello' };
Logger.error('MODULE', 'METHOD', obj);
expect(err).toHaveBeenCalledWith(`MODULE.METHOD - ${JSON.stringify(obj)}`);
});
it('error honors devOnly flag', () => {
if (environment.production) {
Logger.error('MODULE', 'METHOD', 'STRING', true);
expect(err).toHaveBeenCalledWith('MODULE.METHOD');
} else {
Logger.error('MODULE', 'METHOD', 'STRING', true);
expect(err).toHaveBeenCalledWith('MODULE.METHOD - STRING');
}
});
it('can devOnly log string', () => {
Logger.devOnly('MODULE', 'METHOD', 'STRING');
if (environment.production) {
expect(log).not.toHaveBeenCalled();
} else {
expect(log).toHaveBeenCalled();
}
});
it('can devOnly log object', () => {
const obj = { prop1: 'hello' };
Logger.devOnly('MODULE', 'METHOD', obj);
if (environment.production) {
expect(log).not.toHaveBeenCalled();
} else {
expect(log).toHaveBeenCalledWith(`MODULE.METHOD - ${JSON.stringify(obj)}`);
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment