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

Commit

Permalink
Merge pull request #11 from kellyselden/unit
Browse files Browse the repository at this point in the history
add mocker
  • Loading branch information
Kelly Selden committed Jan 9, 2016
2 parents f5bdeb5 + d7d2663 commit fbb6d27
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 11 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"]
}
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 fbb6d27

Please sign in to comment.