mirror of
https://github.com/webpack/tapable.git
synced 2026-01-25 15:07:55 +00:00
73 lines
1.8 KiB
JavaScript
73 lines
1.8 KiB
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
Author Tobias Koppers @sokra
|
|
*/
|
|
"use strict";
|
|
|
|
const MultiHook = require("../MultiHook");
|
|
|
|
describe("MultiHook", () => {
|
|
const redirectedMethods = ["tap", "tapAsync", "tapPromise"];
|
|
for (const name of redirectedMethods) {
|
|
it(`should redirect ${name}`, () => {
|
|
const calls = [];
|
|
const fakeHook = {
|
|
[name]: (options, fn) => {
|
|
calls.push({ options, fn });
|
|
}
|
|
};
|
|
new MultiHook([fakeHook, fakeHook])[name]("options", "fn");
|
|
expect(calls).toEqual([
|
|
{ options: "options", fn: "fn" },
|
|
{ options: "options", fn: "fn" }
|
|
]);
|
|
});
|
|
}
|
|
|
|
it("should redirect intercept", () => {
|
|
const calls = [];
|
|
const fakeHook = {
|
|
intercept: (interceptor) => {
|
|
calls.push(interceptor);
|
|
}
|
|
};
|
|
new MultiHook([fakeHook, fakeHook]).intercept("interceptor");
|
|
expect(calls).toEqual(["interceptor", "interceptor"]);
|
|
});
|
|
|
|
it("should redirect withOptions", () => {
|
|
const calls = [];
|
|
const fakeHook = {
|
|
withOptions: (options) => {
|
|
calls.push(options);
|
|
return {
|
|
tap: (options, fn) => {
|
|
calls.push({ options, fn });
|
|
}
|
|
};
|
|
}
|
|
};
|
|
const newHook = new MultiHook([fakeHook, fakeHook]).withOptions("options");
|
|
newHook.tap("options", "fn");
|
|
expect(calls).toEqual([
|
|
"options",
|
|
"options",
|
|
{ options: "options", fn: "fn" },
|
|
{ options: "options", fn: "fn" }
|
|
]);
|
|
});
|
|
|
|
it("should redirect isUsed", () => {
|
|
const fakeHook1 = {
|
|
isUsed: () => true
|
|
};
|
|
const fakeHook2 = {
|
|
isUsed: () => false
|
|
};
|
|
expect(new MultiHook([fakeHook1, fakeHook1]).isUsed()).toBe(true);
|
|
expect(new MultiHook([fakeHook1, fakeHook2]).isUsed()).toBe(true);
|
|
expect(new MultiHook([fakeHook2, fakeHook1]).isUsed()).toBe(true);
|
|
expect(new MultiHook([fakeHook2, fakeHook2]).isUsed()).toBe(false);
|
|
});
|
|
});
|