Skip to content
This repository has been archived by the owner on Feb 2, 2020. It is now read-only.

Commit

Permalink
add mocker
Browse files Browse the repository at this point in the history
  • Loading branch information
Kelly Selden committed Jan 9, 2016
1 parent 4cf7b4f commit a4ff2e8
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"presets": ["es2015", "stage-2"],
"plugins": []
"plugins": ["rewire"]
}
3 changes: 1 addition & 2 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
The MIT License (MIT)

Copyright (c) 2015 Kelly Selden
Copyright (c) 2016 Kelly Selden

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

4 changes: 3 additions & 1 deletion lib/mocha/add-compilers.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
const _require = require;

export default (compilers, extensions) => {
compilers.forEach(compiler => {
let [ext, mod] = compiler.split(':');
Expand All @@ -6,6 +8,6 @@ export default (compilers, extensions) => {
extensions.push(ext);
}

require(mod);
_require(mod);
});
}
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"pretest": "npm run build",
"precover": "npm run build",
"test": "mocha --compilers js:babel-register \"test/@(acceptance|unit)/**/*-test.js\"",
"cover": "babel-node node_modules/isparta/bin/isparta cover --include-all-sources node_modules/mocha/bin/_mocha -- --compilers js:babel-register \"test/@(acceptance|unit)/**/*-test.js\""
"cover": "babel-node node_modules/isparta/bin/isparta cover --include-all-sources node_modules/mocha/bin/_mocha -- --compilers js:babel-register \"test/@(acceptance|unit)/**/*-test.js\"",
"debug": "node debug node_modules/mocha/bin/_mocha --compilers js:babel-register \"test/unit/**/*-test.js\""
},
"repository": {
"type": "git",
Expand All @@ -33,11 +34,13 @@
},
"devDependencies": {
"babel-cli": "^6.0.0",
"babel-plugin-rewire": "1.0.0-beta-3",
"babel-preset-es2015": "^6.0.0",
"babel-preset-stage-2": "^6.0.0",
"babel-register": "^6.0.0",
"chai": "^3.0.0",
"coveralls": "^2.0.0",
"isparta": "^4.0.0"
"isparta": "^4.0.0",
"sinon": "^1.0.0"
}
}
37 changes: 30 additions & 7 deletions test/unit/mocha/add-compilers-test.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,45 @@
import { expect } from 'chai';
import addCompilers from '../../../lib/mocha/add-compilers';

describe('unit - addCompilers', function() {
it('pushes to extentsions', function() {
let compilers = ['js:babel-register'];
describe('unit - mocha/addCompilers', function() {
beforeEach(function() {
addCompilers.__Rewire__('_require', () => {});
});

afterEach(function() {
addCompilers.__ResetDependency__('_require');
});

it('pushes to extensions', function() {
let compilers = ['test-ext:'];
let extensions = [];

addCompilers(compilers, extensions);

expect(extensions).to.deep.equal(['js']);
expect(extensions).to.deep.equal(['test-ext']);
});

it('does not duplicate extensions', function() {
let compilers = ['js:babel-register'];
let extensions = ['js'];
let compilers = ['test-ext:'];
let extensions = ['test-ext'];

addCompilers(compilers, extensions);

expect(extensions).to.deep.equal(['test-ext']);
});

it('calls require with module name', function() {
let compilers = [':test-mod'];
let extensions = [];

let wasCalled;
addCompilers.__Rewire__('_require', module => {
expect(module).to.equal('test-mod');
wasCalled = true;
});

addCompilers(compilers, extensions);

expect(extensions).to.deep.equal(['js']);
expect(wasCalled).to.be.true;
});
});
63 changes: 63 additions & 0 deletions test/unit/mocha/add-files-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { expect } from 'chai';
import sinon from 'sinon';
import addFiles from '../../../lib/mocha/add-files';

describe('unit - mocha/addFiles', function() {
beforeEach(function() {
addFiles.__Rewire__('utils', {
lookupFiles(file) { return [file]; }
});
});

afterEach(function() {
addFiles.__ResetDependency__('utils');
});

it('calls lookupFiles correctly', function() {
let mocha = {
addFile: sinon.stub()
};
let files = ['test-file-1', 'test-file-2'];

let lookupFilesStub = sinon.stub().returns([]);
addFiles.__Rewire__('utils', {
lookupFiles: lookupFilesStub
});

addFiles(mocha, files, ['test-extension'], true, null);

expect(lookupFilesStub.callCount).to.equal(2);
expect(lookupFilesStub.args).to.deep.equal([
['test-file-1', ['test-extension'], true],
['test-file-2', ['test-extension'], true]
]);
});

it('adds "test" if nothing supplied', function() {
let addFileStub = sinon.stub();
let mocha = {
addFile: addFileStub
};
let files = [];

addFiles(mocha, files, null, null, 'lint-test-file');

expect(addFileStub.callCount).to.equal(2);
expect(addFileStub.thisValues).to.deep.equal([mocha, mocha]);
expect(addFileStub.args).to.deep.equal([['test'], ['lint-test-file']]);
});

it('does not add "test" twice', function() {
let addFileStub = sinon.stub();
let mocha = {
addFile: addFileStub
};
let files = ['test'];

addFiles(mocha, files, null, null, 'lint-test-file');

expect(addFileStub.callCount).to.equal(2);
expect(addFileStub.thisValues).to.deep.equal([mocha, mocha]);
expect(addFileStub.args).to.deep.equal([['test'], ['lint-test-file']]);
});
});

0 comments on commit a4ff2e8

Please sign in to comment.