diff --git a/packages/taquito-beacon-wallet/test/__mocks__/broadcast-channel.ts b/packages/taquito-beacon-wallet/test/__mocks__/broadcast-channel.ts new file mode 100644 index 0000000000..58420101b0 --- /dev/null +++ b/packages/taquito-beacon-wallet/test/__mocks__/broadcast-channel.ts @@ -0,0 +1,47 @@ +interface MessageListener { + (message: any): void; + } + + class BroadcastChannel { + name: string; + listeners: MessageListener[]; + + constructor(name: string) { + this.name = name; + this.listeners = []; + } + + postMessage(message: any) { + // Mock implementation of postMessage + this.listeners.forEach((listener) => listener(message)); + } + + addEventListener(event: string, listener: MessageListener) { + if (event === 'message') { + this.listeners.push(listener); + } + } + + removeEventListener(event: string, listener: MessageListener) { + if (event === 'message') { + this.listeners = this.listeners.filter((l) => l !== listener); + } + } + + close() { + // Mock implementation of close + this.listeners = []; + } + } + + function createLeaderElection(_channel: BroadcastChannel) { + // Mock implementation of createLeaderElection + return { + awaitLeadership: jest.fn(), + hasLeader: jest.fn().mockReturnValue(true), + isLeader: jest.fn().mockReturnValue(true), + die: jest.fn(), + }; + } + + export { BroadcastChannel, createLeaderElection }; \ No newline at end of file diff --git a/packages/taquito-beacon-wallet/test/taquito-beacon-wallet.spec.ts b/packages/taquito-beacon-wallet/test/taquito-beacon-wallet.spec.ts index cc44dae449..cdbe9597b1 100644 --- a/packages/taquito-beacon-wallet/test/taquito-beacon-wallet.spec.ts +++ b/packages/taquito-beacon-wallet/test/taquito-beacon-wallet.spec.ts @@ -10,6 +10,25 @@ global.localStorage = new LocalStorageMock(); global.indexedDB = indexedDB; global.window = { addEventListener: jest.fn() } as any; +jest.mock('@airgap/beacon-transport-postmessage', () => { + jest.useFakeTimers() + const originalModule = jest.requireActual('@airgap/beacon-transport-postmessage'); + jest.runAllTimers() + + return { + ...originalModule, + PostMessageTransport: jest.fn().mockImplementation(() => { + return { + connect: jest.fn(), + startOpenChannelListener: jest.fn(), + getPairingRequestInfo: jest.fn(), + listen: jest.fn(), + }; + }), + getAvailableExtensions: jest.fn(), + }; +}); + describe('Beacon Wallet tests', () => { it('Verify that BeaconWallet is instantiable', () => { expect(new BeaconWallet({ name: 'testWallet' })).toBeInstanceOf(BeaconWallet);