UNPKG

mockery

Version:

Simplifying the use of mocks with Node.js

72 lines (63 loc) 2.23 kB
var vows = require('vows'), assert = require('assert'), mockery = require('../mockery'), sinon = require('sinon'), m = require('module'); function isCached(name) { var id; // Super-simplistic, but good enough for the tests for (id in m._cache) { if (m._cache.hasOwnProperty(id) && id.indexOf(name) !== -1) { return true; } } return false; } var tests = { "when an allowable is registered for unhooking": { topic: function () { mockery.registerAllowable('./fixtures/fake_module', true); return null; }, "and mockery is enabled": { setup: function () { if (!this.originalCache) { // Initialise a clean cache this.originalCache = m._cache; m._cache = {}; } mockery.enable(); }, teardown: function () { if (this.originalCache) { // Restore the original cache m._cache = this.originalCache; this.originalCache = null; } }, "the module is not cached": function () { assert.ok(!isCached('fixtures/fake_module')); }, "and the module is required": { topic: function () { require('./fixtures/fake_module'); return null; }, "the module is cached": function () { assert.ok(isCached('fixtures/fake_module')); }, "and the module is deregistered": { topic: function () { mockery.deregisterAllowable('not-allowed-already'); mockery.deregisterAllowable('./fixtures/fake_module'); return null; }, "the module is not cached": function () { assert.ok(!isCached('fixtures/fake_module')); } } } } } }; vows.describe('allowable-unhook').addBatch(tests).export(module);