1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- 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);
- });
- })
|