aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tapable/lib/__tests__/HookCodeFactory.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tapable/lib/__tests__/HookCodeFactory.js')
-rw-r--r--node_modules/tapable/lib/__tests__/HookCodeFactory.js252
1 files changed, 252 insertions, 0 deletions
diff --git a/node_modules/tapable/lib/__tests__/HookCodeFactory.js b/node_modules/tapable/lib/__tests__/HookCodeFactory.js
new file mode 100644
index 00000000..759d1511
--- /dev/null
+++ b/node_modules/tapable/lib/__tests__/HookCodeFactory.js
@@ -0,0 +1,252 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const HookCodeFactory = require("../HookCodeFactory");
+
+const expectNoSyntaxError = code => {
+ new Function("a, b, c", code);
+};
+
+describe("HookCodeFactory", () => {
+ describe("callTap", () => {
+ const factoryConfigurations = {
+ "no args, no intercept": {
+ args: [],
+ taps: [
+ {
+ type: "sync"
+ },
+ {
+ type: "async"
+ },
+ {
+ type: "promise"
+ }
+ ],
+ interceptors: []
+ },
+ "with args, no intercept": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "sync"
+ },
+ {
+ type: "async"
+ },
+ {
+ type: "promise"
+ }
+ ],
+ interceptors: []
+ },
+ "with args, with intercept": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "sync"
+ },
+ {
+ type: "async"
+ },
+ {
+ type: "promise"
+ }
+ ],
+ interceptors: [
+ {
+ call: () => {},
+ tap: () => {}
+ },
+ {
+ tap: () => {}
+ },
+ {
+ call: () => {}
+ }
+ ]
+ }
+ };
+ for (const configurationName in factoryConfigurations) {
+ describe(`(${configurationName})`, () => {
+ let factory;
+ beforeEach(() => {
+ factory = new HookCodeFactory();
+ factory.init(factoryConfigurations[configurationName]);
+ });
+ it("sync without onResult", () => {
+ const code = factory.callTap(0, {
+ onError: err => `onError(${err});\n`,
+ onDone: () => "onDone();\n"
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("sync with onResult", () => {
+ const code = factory.callTap(0, {
+ onError: err => `onError(${err});\n`,
+ onResult: result => `onResult(${result});\n`
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("async without onResult", () => {
+ const code = factory.callTap(1, {
+ onError: err => `onError(${err});\n`,
+ onDone: () => "onDone();\n"
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("async with onResult", () => {
+ const code = factory.callTap(1, {
+ onError: err => `onError(${err});\n`,
+ onResult: result => `onResult(${result});\n`
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("promise without onResult", () => {
+ const code = factory.callTap(2, {
+ onError: err => `onError(${err});\n`,
+ onDone: () => "onDone();\n"
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("promise with onResult", () => {
+ const code = factory.callTap(2, {
+ onError: err => `onError(${err});\n`,
+ onResult: result => `onResult(${result});\n`
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ });
+ }
+ });
+ describe("taps", () => {
+ const factoryConfigurations = {
+ none: {
+ args: ["a", "b", "c"],
+ taps: [],
+ interceptors: []
+ },
+ "single sync": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "sync"
+ }
+ ],
+ interceptors: []
+ },
+ "multiple sync": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "sync"
+ },
+ {
+ type: "sync"
+ },
+ {
+ type: "sync"
+ }
+ ],
+ interceptors: []
+ },
+ "single async": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "async"
+ }
+ ],
+ interceptors: []
+ },
+ "single promise": {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "promise"
+ }
+ ],
+ interceptors: []
+ },
+ mixed: {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "sync"
+ },
+ {
+ type: "async"
+ },
+ {
+ type: "promise"
+ }
+ ],
+ interceptors: []
+ },
+ mixed2: {
+ args: ["a", "b", "c"],
+ taps: [
+ {
+ type: "async"
+ },
+ {
+ type: "promise"
+ },
+ {
+ type: "sync"
+ }
+ ],
+ interceptors: []
+ }
+ };
+ for (const configurationName in factoryConfigurations) {
+ describe(`(${configurationName})`, () => {
+ let factory;
+ beforeEach(() => {
+ factory = new HookCodeFactory();
+ factory.init(factoryConfigurations[configurationName]);
+ });
+ it("callTapsSeries", () => {
+ const code = factory.callTapsSeries({
+ onError: (i, err) => `onError(${i}, ${err});\n`,
+ onResult: (i, result, next, doneBreak) =>
+ `onResult(${i}, ${result}, () => {\n${next()}}, () => {\n${doneBreak()}});\n`,
+ onDone: () => "onDone();\n",
+ rethrowIfPossible: true
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("callTapsParallel", () => {
+ const code = factory.callTapsParallel({
+ onError: (i, err) => `onError(${i}, ${err});\n`,
+ onResult: (i, result, done, doneBreak) =>
+ `onResult(${i}, ${result}, () => {\n${done()}}, () => {\n${doneBreak()}});\n`,
+ onDone: () => "onDone();\n",
+ rethrowIfPossible: true
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ it("callTapsLooping", () => {
+ const code = factory.callTapsLooping({
+ onError: (i, err) => `onError(${i}, ${err});\n`,
+ onDone: () => "onDone();\n",
+ rethrowIfPossible: true
+ });
+ expect(code).toMatchSnapshot();
+ expectNoSyntaxError(code);
+ });
+ });
+ }
+ });
+});