more tests for external modules

This commit is contained in:
Tim Sebastian 2017-02-19 13:44:42 +11:00
parent b363611750
commit 9a1df0277e
1 changed files with 82 additions and 3 deletions

View File

@ -1,10 +1,8 @@
/* globals describe, it, beforeEach, afterEach */
/* globals describe, it, beforeEach */
"use strict";
require("should");
const sinon = require("sinon");
const ExternalModule = require("../lib/ExternalModule");
const path = require("path");
const SourceMapSource = require("webpack-sources").SourceMapSource;
const OriginalSource = require("webpack-sources").OriginalSource;
const RawSource = require("webpack-sources").RawSource;
@ -232,4 +230,85 @@ module.exports = some/request;`;
});
});
});
describe("#getSourceString", function() {
let globalExternalStub;
let globalCommonJsStub;
let globalAmdOrUmdStub;
let defaultExternalStub;
beforeEach(function() {
globalExternalStub = externalModule.getSourceForGlobalVariableExternal = sinon.stub();
globalCommonJsStub = externalModule.getSourceForCommonJsExternal = sinon.stub();
globalAmdOrUmdStub = externalModule.getSourceForAmdOrUmdExternal = sinon.stub();
defaultExternalStub = externalModule.getSourceForDefaultCase = sinon.stub();
});
describe("with type being 'this', 'window' or 'global'", function() {
it("deletgates to #getSourceForGlobalVariableExternal", function() {
["this", "window", "global"].forEach((type, i) => {
// set up
externalModule.type = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(i + 1);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being 'commonjs' or 'commonjs2'", function() {
it("deletgates to #getSourceForCommonJsExternal", function() {
["commonjs", "commonjs2"].forEach((type, i) => {
// set up
externalModule.type = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(i + 1);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being 'amd', 'umd' or 'umd2'", function() {
it("deletgates to #getSourceForAmdOrUmdExternal", function() {
["amd", "umd", "umd2"].forEach((type, i) => {
// set up
externalModule.type = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(i + 1);
defaultExternalStub.callCount.should.eql(0);
});
});
});
describe("with type being non of the above", function() {
it("deletgates to #getSourceForGlobalVariableExternal", function() {
["foo", "bar", undefined].forEach((type, i) => {
// set up
externalModule.type = type;
// invoke
externalModule.getSourceString();
// check
globalExternalStub.callCount.should.eql(0);
globalCommonJsStub.callCount.should.eql(0);
globalAmdOrUmdStub.callCount.should.eql(0);
defaultExternalStub.callCount.should.eql(i + 1);
});
});
});
});
});