12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- require("babel-polyfill");
- const MultiHook = require("../MultiHook");
- describe("MultiHook", () => {
- const redirectedMethods = ["tap", "tapAsync", "tapPromise"];
- for(const name of redirectedMethods) {
- it(`should redirect ${name}`, () => {
- const calls = [];
- const fakeHook = {
- [name]: (options, fn) => {
- calls.push({ options, fn });
- }
- };
- new MultiHook([fakeHook, fakeHook])[name]("options", "fn");
- expect(calls).toEqual([
- { options: "options", fn: "fn" },
- { options: "options", fn: "fn" }
- ]);
- });
- }
- it("should redirect intercept", () => {
- const calls = [];
- const fakeHook = {
- intercept: (interceptor) => {
- calls.push(interceptor);
- }
- };
- new MultiHook([fakeHook, fakeHook]).intercept("interceptor");
- expect(calls).toEqual([
- "interceptor",
- "interceptor"
- ]);
- });
- it("should redirect withOptions", () => {
- const calls = [];
- const fakeHook = {
- withOptions: (options) => {
- calls.push(options);
- return {
- tap: (options, fn) => {
- calls.push({ options, fn });
- }
- }
- }
- };
- const newHook = new MultiHook([fakeHook, fakeHook]).withOptions("options");
- newHook.tap("options", "fn")
- expect(calls).toEqual([
- "options",
- "options",
- { options: "options", fn: "fn" },
- { options: "options", fn: "fn" }
- ]);
- });
- it("should redirect isUsed", () => {
- const calls = [];
- const fakeHook1 = {
- isUsed: () => {
- return true;
- }
- };
- const fakeHook2 = {
- isUsed: () => {
- return false;
- }
- };
- expect(new MultiHook([fakeHook1, fakeHook1]).isUsed()).toEqual(true);
- expect(new MultiHook([fakeHook1, fakeHook2]).isUsed()).toEqual(true);
- expect(new MultiHook([fakeHook2, fakeHook1]).isUsed()).toEqual(true);
- expect(new MultiHook([fakeHook2, fakeHook2]).isUsed()).toEqual(false);
- });
- });
|