'use strict'; var tap = require('tap') , test = tap.test , sinon = require('sinon') , shimmer = require('../index.js') ; test("shimmer initialization", function (t) { t.plan(4); t.doesNotThrow(function () { shimmer(); }); var mock = sinon.expectation .create('logger') .withArgs("no original function undefined to wrap") .once(); t.doesNotThrow(function () { shimmer({logger : mock}); }, "initializer doesn't throw"); t.doesNotThrow(function () { shimmer.wrap(); }, "invoking the wrap method with no params doesn't throw"); t.doesNotThrow(function () { mock.verify(); }, "logger method was called with the expected message"); }); test("shimmer initialized with non-function logger", function (t) { t.plan(2); var mock = sinon.expectation .create('logger') .withArgs("new logger isn't a function, not replacing") .once(); shimmer({logger : mock}); t.doesNotThrow(function () { shimmer({logger : {ham : 'chunx'}}); }, "even bad initialization doesn't throw"); t.doesNotThrow(function () { mock.verify(); }, "logger initialization failed in the expected way"); });