Skip to content

Commit

Permalink
adding safe restore test helper, because safer and cuts on code dupli…
Browse files Browse the repository at this point in the history
…cation
  • Loading branch information
Kelly Selden committed Dec 14, 2015
1 parent a3f7c61 commit 1b3b40c
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 46 deletions.
6 changes: 6 additions & 0 deletions tests/helpers/stub.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,11 @@ module.exports = {
install: function() { }
};
};
},
safeRestore: function(obj, name) {
var value = obj[name];
if (value && value.restore) {
value.restore();
}
}
};
25 changes: 12 additions & 13 deletions tests/unit/cli/cli-test.js
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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;
Expand Down
9 changes: 6 additions & 3 deletions tests/unit/commands/build-test.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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() {
Expand Down
9 changes: 5 additions & 4 deletions tests/unit/commands/generate-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,17 @@ 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');
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;

Expand Down Expand Up @@ -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() {
Expand Down
9 changes: 6 additions & 3 deletions tests/unit/commands/install-test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
'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');
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;
Expand Down Expand Up @@ -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() {
Expand Down
7 changes: 5 additions & 2 deletions tests/unit/commands/serve-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', {
Expand Down Expand Up @@ -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() {
Expand Down
13 changes: 6 additions & 7 deletions tests/unit/models/blueprint-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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() {
Expand Down
29 changes: 15 additions & 14 deletions tests/unit/models/project-test.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -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() {
Expand Down

0 comments on commit 1b3b40c

Please sign in to comment.