@tdb/web
Version:
Common condiguration for serving a web-site and testing web-based UI components.
71 lines (60 loc) • 1.11 kB
JavaScript
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
;
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"]);
});
});