ce4c83ff
wxy
初始提交
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
"use strict";
const Tapable = require("../Tapable");
const SyncHook = require("../SyncHook");
const HookMap = require("../HookMap");
describe("Tapable", () => {
it("should use same name or camelCase hook by default", () => {
const t = new Tapable();
t.hooks = {
myHook: new SyncHook()
};
let called = 0;
t.plugin("my-hook", () => called++);
t.hooks.myHook.call();
t.plugin("myHook", () => (called += 10));
t.hooks.myHook.call();
expect(called).toEqual(12);
});
it("should throw on unknown hook", () => {
const t = new Tapable();
t.hooks = {
myHook: new SyncHook()
};
expect(() => {
t.plugin("some-hook", () => {});
}).toThrow(/some-hook/);
t.hooks.myHook.call();
});
it("should use custom mapping", () => {
const t = new Tapable();
t.hooks = {
myHook: new SyncHook(),
hookMap: new HookMap(name => new SyncHook())
};
let called = 0;
t._pluginCompat.tap("hookMap custom mapping", options => {
const match = /^hookMap (.+)$/.exec(options.name);
if (match) {
t.hooks.hookMap.tap(
match[1],
options.fn.name || "unnamed compat plugin",
options.fn
);
return true;
}
});
t.plugin("my-hook", () => called++);
t.plugin("hookMap test", () => (called += 10));
t.hooks.myHook.call();
expect(called).toEqual(1);
t.hooks.hookMap.for("test").call();
expect(called).toEqual(11);
t.hooks.hookMap.for("other").call();
expect(called).toEqual(11);
});
});
|