mirror of https://github.com/webpack/webpack.git
183 lines
6.4 KiB
JavaScript
183 lines
6.4 KiB
JavaScript
"use strict";
|
|
|
|
const should = require("should");
|
|
const sinon = require("sinon");
|
|
const RequireJsStuffPlugin = require("../lib/RequireJsStuffPlugin");
|
|
const applyPluginWithOptions = require("./helpers/applyPluginWithOptions");
|
|
const PluginEnvironment = require("./helpers/PluginEnvironment");
|
|
|
|
describe("RequireJsStuffPlugin", () => {
|
|
it("has apply function", () => (new RequireJsStuffPlugin()).apply.should.be.a.Function());
|
|
|
|
describe("when applied", () => {
|
|
let eventBindings;
|
|
let eventBinding;
|
|
|
|
beforeEach(() => eventBindings = applyPluginWithOptions(RequireJsStuffPlugin));
|
|
|
|
it("binds one event handler", () => eventBindings.length.should.be.exactly(1));
|
|
|
|
describe("compilation handler", () => {
|
|
beforeEach(() => eventBinding = eventBindings[0]);
|
|
|
|
it("binds to compilation event", () => eventBinding.name.should.be.exactly("compilation"));
|
|
|
|
describe("when called", () => {
|
|
let pluginEnvironment;
|
|
let compilationEventBindings;
|
|
let compilation;
|
|
|
|
beforeEach(() => {
|
|
pluginEnvironment = new PluginEnvironment();
|
|
compilation = {
|
|
dependencyFactories: {
|
|
set: sinon.spy()
|
|
},
|
|
dependencyTemplates: {
|
|
set: sinon.spy()
|
|
}
|
|
};
|
|
const params = {
|
|
normalModuleFactory: pluginEnvironment.getEnvironmentStub()
|
|
};
|
|
eventBinding.handler(compilation, params);
|
|
compilationEventBindings = pluginEnvironment.getEventBindings();
|
|
});
|
|
|
|
it("sets the dependency factory", () =>
|
|
compilation.dependencyFactories.set.callCount.should.be.exactly(1));
|
|
|
|
it("sets the dependency template", () =>
|
|
compilation.dependencyTemplates.set.callCount.should.be.exactly(1));
|
|
|
|
it("binds one event handler", () => compilationEventBindings.length.should.be.exactly(1));
|
|
|
|
describe("parser handler", () => {
|
|
let parser;
|
|
let parserEventBindings;
|
|
let compilationEventBinding;
|
|
|
|
beforeEach(() => {
|
|
compilationEventBinding = compilationEventBindings[0];
|
|
pluginEnvironment = new PluginEnvironment();
|
|
parser = pluginEnvironment.getEnvironmentStub();
|
|
});
|
|
|
|
it("binds to parser event", () => compilationEventBinding.name.should.be.exactly("parser"));
|
|
|
|
describe("when called with parser options of requirejs as false", () => {
|
|
beforeEach(() => {
|
|
compilationEventBinding.handler(parser, {
|
|
requireJs: false
|
|
});
|
|
parserEventBindings = pluginEnvironment.getEventBindings();
|
|
});
|
|
|
|
it("binds no event handlers", () => parserEventBindings.length.should.be.exactly(0));
|
|
});
|
|
|
|
describe("when called with empty parser options", () => {
|
|
let parserEventBinding;
|
|
let parserEventContext;
|
|
let expressionMock;
|
|
|
|
beforeEach(() => {
|
|
parserEventContext = {
|
|
state: {
|
|
current: {
|
|
addDependency: sinon.spy()
|
|
}
|
|
}
|
|
};
|
|
expressionMock = {
|
|
range: 10,
|
|
loc: 5
|
|
};
|
|
compilationEventBinding.handler(parser, {});
|
|
parserEventBindings = pluginEnvironment.getEventBindings();
|
|
});
|
|
|
|
it("binds four event handlers", () => parserEventBindings.length.should.be.exactly(4));
|
|
|
|
describe("'call require.config' handler", () => {
|
|
beforeEach(() => parserEventBinding = parserEventBindings[0]);
|
|
|
|
it("binds to 'call require.config' event", () =>
|
|
parserEventBinding.name.should.be.exactly("call require.config"));
|
|
|
|
describe("when called", () => {
|
|
beforeEach(() =>
|
|
parserEventBinding.handler.call(parserEventContext, expressionMock));
|
|
|
|
it("adds dependency to current state", () => {
|
|
const addDependencySpy = parserEventContext.state.current.addDependency;
|
|
const addedDependency = JSON.stringify(addDependencySpy.getCall(0).args[0]);
|
|
addDependencySpy.callCount.should.be.exactly(1);
|
|
addedDependency.should.be.exactly('{"module":null,"expression":"undefined","range":10,"loc":5}');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("'call requirejs.config' handler", () => {
|
|
beforeEach(() => parserEventBinding = parserEventBindings[1]);
|
|
|
|
it("binds to 'call requirejs.config' event", () =>
|
|
parserEventBinding.name.should.be.exactly("call requirejs.config"));
|
|
|
|
describe("when called", () => {
|
|
beforeEach(() =>
|
|
parserEventBinding.handler.call(parserEventContext, expressionMock));
|
|
|
|
it("adds dependency to current state", () => {
|
|
const addDependencySpy = parserEventContext.state.current.addDependency;
|
|
const addedDependency = JSON.stringify(addDependencySpy.getCall(0).args[0]);
|
|
addDependencySpy.callCount.should.be.exactly(1);
|
|
addedDependency.should.be.exactly('{"module":null,"expression":"undefined","range":10,"loc":5}');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("'expression require.version' handler", () => {
|
|
beforeEach(() => parserEventBinding = parserEventBindings[2]);
|
|
|
|
it("binds to 'expression require.version' event", () =>
|
|
parserEventBinding.name.should.be.exactly("expression require.version"));
|
|
|
|
describe("when called", () => {
|
|
beforeEach(() =>
|
|
parserEventBinding.handler.call(parserEventContext, expressionMock));
|
|
|
|
it("adds dependency to current state", () => {
|
|
const addDependencySpy = parserEventContext.state.current.addDependency;
|
|
const addedDependency = JSON.stringify(addDependencySpy.getCall(0).args[0]);
|
|
addDependencySpy.callCount.should.be.exactly(1);
|
|
addedDependency.should.be.exactly('{"module":null,"expression":"\\"0.0.0\\"","range":10,"loc":5}');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("'expression requirejs.onError' handler", () => {
|
|
beforeEach(() => parserEventBinding = parserEventBindings[3]);
|
|
|
|
it("binds to 'expression requirejs.onError' event", () =>
|
|
parserEventBinding.name.should.be.exactly("expression requirejs.onError"));
|
|
|
|
describe("when called", () => {
|
|
beforeEach(() =>
|
|
parserEventBinding.handler.call(parserEventContext, expressionMock));
|
|
|
|
it("adds dependency to current state", () => {
|
|
const addDependencySpy = parserEventContext.state.current.addDependency;
|
|
const addedDependency = JSON.stringify(addDependencySpy.getCall(0).args[0]);
|
|
addDependencySpy.callCount.should.be.exactly(1);
|
|
addedDependency.should.be.exactly('{"module":null,"expression":"\\"__webpack_require__.oe\\"","range":10,"loc":5}');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|