12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- const SyncHook = require("../SyncHook");
- describe("Hook", () => {
- it("should allow to insert hooks before others and in stages", () => {
- const hook = new SyncHook();
- const calls = [];
- hook.tap("A", () => calls.push("A"));
- hook.tap({
- name: "B",
- before: "A"
- }, () => calls.push("B"));
- calls.length = 0;
- hook.call();
- expect(calls).toEqual(["B", "A"]);
- hook.tap({
- name: "C",
- before: ["A", "B"]
- }, () => calls.push("C"));
- calls.length = 0;
- hook.call();
- expect(calls).toEqual(["C", "B", "A"]);
- hook.tap({
- name: "D",
- before: "B"
- }, () => calls.push("D"));
- calls.length = 0;
- hook.call();
- expect(calls).toEqual(["C", "D", "B", "A"]);
- hook.tap({
- name: "E",
- stage: -5
- }, () => calls.push("E"));
- hook.tap({
- name: "F",
- stage: -3
- }, () => calls.push("F"));
- calls.length = 0;
- hook.call();
- expect(calls).toEqual(["E", "F", "C", "D", "B", "A"]);
- });
- });
|