From fda2c237a3594d9e23ded5ff04da79a1b071054a Mon Sep 17 00:00:00 2001 From: 0xmad <0xmad@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:31:28 -0600 Subject: [PATCH] fix: types for tests --- .../src/sdk/CryptKeeperInjectedProvider.ts | 6 ++--- .../CryptKeeperInjectedProvider.test.ts | 18 ++++--------- .../src/sdk/initializeInjectedProvider.ts | 25 +++---------------- packages/providers/src/sdk/interface.ts | 20 +++++++++++++++ 4 files changed, 32 insertions(+), 37 deletions(-) diff --git a/packages/providers/src/sdk/CryptKeeperInjectedProvider.ts b/packages/providers/src/sdk/CryptKeeperInjectedProvider.ts index 2018f1770..e43dca11d 100644 --- a/packages/providers/src/sdk/CryptKeeperInjectedProvider.ts +++ b/packages/providers/src/sdk/CryptKeeperInjectedProvider.ts @@ -2,7 +2,7 @@ import type { ICryptKeeperInjectedProvider } from "./interface"; import type { IInjectedMessageData, IInjectedProviderRequest } from "@cryptkeeperzk/types"; import { RPCExternalAction } from "../constants"; -import { type EventHandler, type EventName, type IHandler, Handler } from "../services"; +import { type EventHandler, type EventName, type IHandler } from "../services"; /** * Represents the CryptKeeper provider that is injected into the application. @@ -26,8 +26,8 @@ export class CryptKeeperInjectedProvider implements ICryptKeeperInjectedProvider * * @constructor */ - constructor(connectedOrigin?: string) { - this.handler = new Handler(connectedOrigin); + constructor(handler: IHandler) { + this.handler = handler; } /** diff --git a/packages/providers/src/sdk/__tests__/CryptKeeperInjectedProvider.test.ts b/packages/providers/src/sdk/__tests__/CryptKeeperInjectedProvider.test.ts index 8c67042fd..1fe2a2eec 100644 --- a/packages/providers/src/sdk/__tests__/CryptKeeperInjectedProvider.test.ts +++ b/packages/providers/src/sdk/__tests__/CryptKeeperInjectedProvider.test.ts @@ -1,6 +1,7 @@ /** * @jest-environment jsdom */ +/* eslint-disable @typescript-eslint/unbound-method */ import { RPCExternalAction } from "@src/constants"; import type { IInjectedMessageData } from "@cryptkeeperzk/types"; @@ -12,11 +13,6 @@ jest.mock("nanoevents", (): unknown => ({ createNanoEvents: jest.fn(), })); -jest.mock("../../services", (): unknown => ({ - ...jest.requireActual("../../services"), - Handler: jest.fn(), -})); - describe("sdk/CryptKeeperInjectedProvider", () => { const defaultHandler = { request: jest.fn(), @@ -25,18 +21,14 @@ describe("sdk/CryptKeeperInjectedProvider", () => { emit: jest.fn(), cleanListeners: jest.fn(), getConnectedOrigin: jest.fn(), - }; - - beforeEach(() => { - (Handler as jest.Mock).mockReturnValue(defaultHandler); - }); + } as unknown as Handler; afterEach(() => { jest.clearAllMocks(); }); test("should connect properly", async () => { - const provider = new CryptKeeperInjectedProvider(); + const provider = new CryptKeeperInjectedProvider(defaultHandler); await provider.connect(); @@ -51,7 +43,7 @@ describe("sdk/CryptKeeperInjectedProvider", () => { }); test("should request rpc properly", async () => { - const provider = new CryptKeeperInjectedProvider(); + const provider = new CryptKeeperInjectedProvider(defaultHandler); await provider.request({ method: RPCExternalAction.GET_CONNECTED_IDENTITY_DATA }); @@ -62,7 +54,7 @@ describe("sdk/CryptKeeperInjectedProvider", () => { }); test("should handle events properly", () => { - const provider = new CryptKeeperInjectedProvider(); + const provider = new CryptKeeperInjectedProvider(defaultHandler); provider.eventResponser({} as MessageEvent); provider.on(EventName.CONNECT, jest.fn()); diff --git a/packages/providers/src/sdk/initializeInjectedProvider.ts b/packages/providers/src/sdk/initializeInjectedProvider.ts index ca0998422..4155e52b2 100644 --- a/packages/providers/src/sdk/initializeInjectedProvider.ts +++ b/packages/providers/src/sdk/initializeInjectedProvider.ts @@ -1,26 +1,8 @@ import type { ICryptKeeperInjectedProvider } from "./interface"; -import { CryptKeeperInjectedProvider } from "./CryptKeeperInjectedProvider"; - -/** - * Extends the global Window interface to include CryptKeeper-related properties. - */ -declare global { - /** - * Represents the CryptKeeperInjectedProvider instance. - */ - interface Window { - /** - * The CryptKeeperInjectedProvider instance. - */ - cryptkeeper: CryptKeeperInjectedProvider; +import { Handler } from "../services"; - /** - * Indicates whether CryptKeeper is injected. - */ - isCryptkeeperInjected?: boolean; - } -} +import { CryptKeeperInjectedProvider } from "./CryptKeeperInjectedProvider"; /** * Initializes the CryptKeeper provider within the CryptKeeper extension. @@ -28,7 +10,8 @@ declare global { * @returns {CryptKeeperInjectedProvider | undefined} The initialized CryptKeeperInjectedProvider instance or undefined. */ export function initializeCryptKeeperProvider(connectedOrigin?: string): ICryptKeeperInjectedProvider { - const cryptkeeperInjectedProvider = new CryptKeeperInjectedProvider(connectedOrigin); + const handler = new Handler(connectedOrigin); + const cryptkeeperInjectedProvider = new CryptKeeperInjectedProvider(handler); window.cryptkeeper = cryptkeeperInjectedProvider; window.dispatchEvent(new Event(`cryptkeeper#initialized`)); window.addEventListener("message", cryptkeeperInjectedProvider.eventResponser); diff --git a/packages/providers/src/sdk/interface.ts b/packages/providers/src/sdk/interface.ts index 60addecb2..385e47011 100644 --- a/packages/providers/src/sdk/interface.ts +++ b/packages/providers/src/sdk/interface.ts @@ -1,6 +1,26 @@ import type { EventHandler, EventName } from "../services"; import type { IInjectedMessageData, IInjectedProviderRequest } from "@cryptkeeperzk/types"; +/** + * Extends the global Window interface to include CryptKeeper-related properties. + */ +declare global { + /** + * Represents the CryptKeeperInjectedProvider instance. + */ + interface Window { + /** + * The CryptKeeperInjectedProvider instance. + */ + cryptkeeper: ICryptKeeperInjectedProvider; + + /** + * Indicates whether CryptKeeper is injected. + */ + isCryptkeeperInjected?: boolean; + } +} + /** * Represents the CryptKeeper provider that is injected into the application. * This class is responsible for handling interactions with the CryptKeeper extension.