text: import test from 'ava';
  import {stub} from 'sinon';
  import logger from '../lib/logger';
  
  test.beforeEach(t => {
    t.context.log = stub(console, 'log');
    t.context.error = stub(console, 'error');
  });
  
  test.afterEach.always(t => {
    t.context.log.restore();
    t.context.error.restore();
  });
  
  test.serial('Basic log', t => {
    logger.log('test log');
    logger.error('test error');
  
    t.regex(t.context.log.args[0][0], /.*test log/);
    t.regex(t.context.error.args[0][0], /.*test error/);
  });
  
  test.serial('Log object', t => {
    const obj = {a: 1, b: '2'};
    logger.log(obj);
    logger.error(obj);
  
    t.is(t.context.log.args[0][1], obj);
    t.is(t.context.error.args[0][1], obj);
  });
  
  test.serial('Log with string formatting', t => {
    logger.log('test log %s', 'log value');
    logger.error('test error %s', 'error value');
  
    t.regex(t.context.log.args[0][0], /.*test log/);
    t.regex(t.context.error.args[0][0], /.*test error/);
    t.is(t.context.log.args[0][1], 'log value');
    t.is(t.context.error.args[0][1], 'error value');
  });
  
  test.serial('Log with error stacktrace and properties', t => {
    const error = new Error('error message');
    logger.error(error);
    const otherError = new Error('other error message');
    logger.error('test error %O', otherError);
  
    t.is(t.context.error.args[0][1], error);
    t.regex(t.context.error.args[1][0], /.*test error/);
    t.is(t.context.error.args[1][1], otherError);
  });
  