Manual Reference Source Test

src/modules/logger.test.js

/* eslint-disable no-console */

import Logger from './logger.js';

const consoleLogFunction = console.log;

let sut;

describe('Logger', () => {
  beforeEach(() => {
    sut = new Logger('prefix', true);
    console.log = function() {};
  });

  afterEach(() => {
    console.log = consoleLogFunction;
  });

  it('constructor must set prefix and enabled flag', () => {
    expect(sut.prefix).toBe('prefix');
    expect(sut.enabled).toBeTruthy();
  });

  it('log must prefix line with set prefix', () => {
    console.log = jest.fn();

    sut.log('test');

    expect(console.log.mock.calls[0][0]).toBe(sut.prefix);
    expect(console.log.mock.calls[0][1]).toBe('test');
  });

  it('log must not log output if logger is disabled', () => {
    console.log = jest.fn();

    sut.enabled = false;
    sut.log('test');

    expect(console.log.mock.calls.length).toBe(0);
  });
});