@dillonkearns/elm-graphql
Version:
<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">
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"]);
});
});