diff --git a/tests/helpers/stub.js b/tests/helpers/stub.js index 86aa8e27d4..6fd13f6239 100644 --- a/tests/helpers/stub.js +++ b/tests/helpers/stub.js @@ -31,5 +31,11 @@ module.exports = { install: function() { } }; }; + }, + safeRestore: function(obj, name) { + var value = obj[name]; + if (value && value.restore) { + value.restore(); + } } }; diff --git a/tests/unit/cli/cli-test.js b/tests/unit/cli/cli-test.js index 78e44737fb..03ffceaaae 100644 --- a/tests/unit/cli/cli-test.js +++ b/tests/unit/cli/cli-test.js @@ -1,16 +1,19 @@ 'use strict'; -var EOL = require('os').EOL; -var expect = require('chai').expect; -var stub = require('../../helpers/stub').stub; -var MockUI = require('../../helpers/mock-ui'); -var MockAnalytics = require('../../helpers/mock-analytics'); -var CLI = require('../../../lib/cli/cli'); +var EOL = require('os').EOL; +var expect = require('chai').expect; +var stub = require('../../helpers/stub'); +var MockUI = require('../../helpers/mock-ui'); +var MockAnalytics = require('../../helpers/mock-analytics'); +var CLI = require('../../../lib/cli/cli'); + +var safeRestore = stub.safeRestore; +stub = stub.stub; + var ui; var analytics; var commands = {}; var argv; - var isWithinProject; // helper to similate running the CLI @@ -68,12 +71,8 @@ beforeEach(function() { afterEach(function() { for(var key in commands) { if (!commands.hasOwnProperty(key)) { continue; } - if (commands[key].prototype.validateAndRun.restore) { - commands[key].prototype.validateAndRun.restore(); - } - if (commands[key].prototype.run.restore) { - commands[key].prototype.run.restore(); - } + safeRestore(commands[key].prototype, 'validateAndRun'); + safeRestore(commands[key].prototype, 'run'); } delete process.env.EMBER_ENV; diff --git a/tests/unit/commands/build-test.js b/tests/unit/commands/build-test.js index e2efb2780c..fb24c0fe4a 100644 --- a/tests/unit/commands/build-test.js +++ b/tests/unit/commands/build-test.js @@ -1,11 +1,14 @@ 'use strict'; var expect = require('chai').expect; -var stub = require('../../helpers/stub').stub; +var stub = require('../../helpers/stub'); var commandOptions = require('../../factories/command-options'); var Task = require('../../../lib/models/task'); var BuildCommand = require('../../../lib/commands/build'); +var safeRestore = stub.safeRestore; +stub = stub.stub; + describe('build command', function() { var tasks, options, command; var buildTaskInstance, buildWatchTaskInstance; @@ -36,8 +39,8 @@ describe('build command', function() { }); afterEach(function() { - tasks.Build.prototype.run.restore(); - tasks.BuildWatch.prototype.run.restore(); + safeRestore(tasks.Build.prototype, 'run'); + safeRestore(tasks.BuildWatch.prototype, 'run'); }); it('Build task is provided with the project instance', function() { diff --git a/tests/unit/commands/generate-test.js b/tests/unit/commands/generate-test.js index 7f4e87b499..17cf24757a 100644 --- a/tests/unit/commands/generate-test.js +++ b/tests/unit/commands/generate-test.js @@ -6,7 +6,7 @@ var expect = require('chai').expect; var EOL = require('os').EOL; var SilentError = require('silent-error'); var commandOptions = require('../../factories/command-options'); -var stub = require('../../helpers/stub').stub; +var stub = require('../../helpers/stub'); var processHelpString = require('../../helpers/process-help-string'); var MockProject = require('../../helpers/mock-project'); var Promise = require('../../../lib/ext/promise'); @@ -14,6 +14,9 @@ var Task = require('../../../lib/models/task'); var Blueprint = require('../../../lib/models/blueprint'); var GenerateCommand = require('../../../lib/commands/generate'); +var safeRestore = stub.safeRestore; +stub = stub.stub; + describe('generate command', function() { var options, command; @@ -46,9 +49,7 @@ describe('generate command', function() { }); afterEach(function() { - if (Blueprint.list.restore) { - Blueprint.list.restore(); - } + safeRestore(Blueprint, 'list'); }); it('runs GenerateFromBlueprint but with null nodeModulesPath', function() { diff --git a/tests/unit/commands/install-test.js b/tests/unit/commands/install-test.js index 5d23280314..41da0b7762 100644 --- a/tests/unit/commands/install-test.js +++ b/tests/unit/commands/install-test.js @@ -1,7 +1,7 @@ 'use strict'; var expect = require('chai').expect; -var stub = require('../../helpers/stub').stub; +var stub = require('../../helpers/stub'); var MockProject = require('../../helpers/mock-project'); var commandOptions = require('../../factories/command-options'); var Task = require('../../../lib/models/task'); @@ -9,6 +9,9 @@ var Promise = require('../../../lib/ext/promise'); var AddonInstall = require('../../../lib/tasks/addon-install'); var InstallCommand = require('../../../lib/commands/install'); +var safeRestore = stub.safeRestore; +stub = stub.stub; + describe('install command', function() { var generateBlueprintInstance, npmInstance; var command, tasks; @@ -73,8 +76,8 @@ describe('install command', function() { }); afterEach(function() { - tasks.NpmInstall.prototype.run.restore(); - tasks.GenerateFromBlueprint.prototype.run.restore(); + safeRestore(tasks.NpmInstall.prototype, 'run'); + safeRestore(tasks.GenerateFromBlueprint.prototype, 'run'); }); it('initializes npm install and generate blueprint task with ui, project and analytics', function() { diff --git a/tests/unit/commands/serve-test.js b/tests/unit/commands/serve-test.js index a8d3fe1bba..1d4735ab50 100644 --- a/tests/unit/commands/serve-test.js +++ b/tests/unit/commands/serve-test.js @@ -3,10 +3,13 @@ var expect = require('chai').expect; var EOL = require('os').EOL; var proxyquire = require('proxyquire'); -var stub = require('../../helpers/stub').stub; +var stub = require('../../helpers/stub'); var commandOptions = require('../../factories/command-options'); var Task = require('../../../lib/models/task'); +var safeRestore = stub.safeRestore; +stub = stub.stub; + var getPortStub; var ServeCommand = proxyquire('../../../lib/commands/serve', { @@ -38,7 +41,7 @@ describe('serve command', function() { }); afterEach(function() { - tasks.Serve.prototype.run.restore(); + safeRestore(tasks.Serve.prototype, 'run'); }); it('has correct options', function() { diff --git a/tests/unit/models/blueprint-test.js b/tests/unit/models/blueprint-test.js index 874e7af344..cdf46916cf 100644 --- a/tests/unit/models/blueprint-test.js +++ b/tests/unit/models/blueprint-test.js @@ -17,13 +17,16 @@ var EOL = require('os').EOL; var root = process.cwd(); var tmproot = path.join(root, 'tmp'); var SilentError = require('silent-error'); -var stub = require('../../helpers/stub').stub; +var stub = require('../../helpers/stub'); var proxyquire = require('proxyquire'); var existsSync = require('exists-sync'); var MarkdownColor = require('../../../lib/utilities/markdown-color'); var assign = require('lodash/object/assign'); var mkTmpDirIn = require('../../../lib/utilities/mk-tmp-dir-in'); +var safeRestore = stub.safeRestore; +stub = stub.stub; + var existsSyncStub; var readdirSyncStub; var readFileSyncStub; @@ -210,12 +213,8 @@ describe('Blueprint', function() { }); afterEach(function() { - if (Blueprint.defaultLookupPaths.restore) { - Blueprint.defaultLookupPaths.restore(); - } - if (Blueprint.load.restore) { - Blueprint.load.restore(); - } + safeRestore(Blueprint, 'defaultLookupPaths'); + safeRestore(Blueprint, 'load'); }); it('returns a list of blueprints grouped by lookup path', function() { diff --git a/tests/unit/models/project-test.js b/tests/unit/models/project-test.js index 78a1dc48c3..b5262e191a 100644 --- a/tests/unit/models/project-test.js +++ b/tests/unit/models/project-test.js @@ -1,16 +1,17 @@ 'use strict'; -var path = require('path'); -var Project = require('../../../lib/models/project'); -var Addon = require('../../../lib/models/addon'); -var stub = require('../../helpers/stub').stub; -var tmp = require('../../helpers/tmp'); -var touch = require('../../helpers/file-utils').touch; -var expect = require('chai').expect; -var MockUI = require('../../helpers/mock-ui'); - -var versionUtils = require('../../../lib/utilities/version-utils'); -var emberCLIVersion = versionUtils.emberCLIVersion; +var path = require('path'); +var Project = require('../../../lib/models/project'); +var Addon = require('../../../lib/models/addon'); +var stub = require('../../helpers/stub'); +var tmp = require('../../helpers/tmp'); +var touch = require('../../helpers/file-utils').touch; +var expect = require('chai').expect; +var MockUI = require('../../helpers/mock-ui'); +var emberCLIVersion = require('../../../lib/utilities/version-utils').emberCLIVersion; + +var safeRestore = stub.safeRestore; +stub = stub.stub; describe('models/project.js', function() { var project, projectPath, tmpPath; @@ -312,8 +313,8 @@ describe('models/project.js', function() { }); afterEach(function() { - Project.prototype.initializeAddons.restore(); - Project.prototype.reloadPkg.restore(); + safeRestore(Project.prototype, 'initializeAddons'); + safeRestore(Project.prototype, 'reloadPkg'); }); it('sets _addonsInitialized to false', function() { @@ -430,7 +431,7 @@ describe('models/project.js', function() { }); afterEach(function() { - Project.prototype.initializeAddons.restore(); + safeRestore(Project.prototype, 'initializeAddons'); }); it('should call initialize addons', function() {