aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tapable/lib/__tests__/SyncBailHook.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tapable/lib/__tests__/SyncBailHook.js')
-rw-r--r--node_modules/tapable/lib/__tests__/SyncBailHook.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/tapable/lib/__tests__/SyncBailHook.js b/node_modules/tapable/lib/__tests__/SyncBailHook.js
new file mode 100644
index 00000000..420b0102
--- /dev/null
+++ b/node_modules/tapable/lib/__tests__/SyncBailHook.js
@@ -0,0 +1,73 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+require("babel-polyfill");
+
+const SyncBailHook = require("../SyncBailHook");
+
+describe("SyncBailHook", () => {
+ it("should allow to create sync bail hooks", async () => {
+ const h1 = new SyncBailHook(["a"]);
+ const h2 = new SyncBailHook(["a", "b"]);
+ const h3 = new SyncBailHook(["a"]);
+
+ let r = h1.call(1);
+ expect(r).toEqual(undefined);
+
+ h1.tap("A", a => undefined);
+ h2.tap("A", (a, b) => [a, b]);
+
+ expect(h1.call(1)).toEqual(undefined);
+ expect(await h1.promise(1)).toEqual(undefined);
+ expect(await pify(cb => h1.callAsync(1, cb))).toEqual(undefined);
+ expect(h2.call(1, 2)).toEqual([1, 2]);
+ expect(await h2.promise(1, 2)).toEqual([1, 2]);
+ expect(await pify(cb => h2.callAsync(1, 2, cb))).toEqual([1, 2]);
+
+ h1.tap("B", a => "ok" + a);
+ h2.tap("B", (a, b) => "wrong");
+
+ expect(h1.call(10)).toEqual("ok10");
+ expect(await h1.promise(10)).toEqual("ok10");
+ expect(await pify(cb => h1.callAsync(10, cb))).toEqual("ok10");
+ expect(h2.call(10, 20)).toEqual([10, 20]);
+ expect(await h2.promise(10, 20)).toEqual([10, 20]);
+ expect(await pify(cb => h2.callAsync(10, 20, cb))).toEqual([10, 20]);
+ });
+
+ it("should allow to intercept calls", () => {
+ const hook = new SyncBailHook(["x"]);
+
+ const mockCall = jest.fn();
+ const mockTap = jest.fn(x => x);
+
+ hook.intercept({
+ call: mockCall,
+ tap: mockTap
+ });
+
+ hook.call(5);
+
+ expect(mockCall).toHaveBeenLastCalledWith(5);
+ expect(mockTap).not.toHaveBeenCalled();
+
+ hook.tap("test", () => 10);
+
+ hook.call(7);
+
+ expect(mockCall).toHaveBeenLastCalledWith(7);
+ expect(mockTap).toHaveBeenCalled();
+ });
+});
+
+function pify(fn) {
+ return new Promise((resolve, reject) => {
+ fn((err, result) => {
+ if (err) reject(err);
+ else resolve(result);
+ });
+ });
+}