Skip to content

Commit

Permalink
mock ws
Browse files Browse the repository at this point in the history
  • Loading branch information
jdevcs committed Aug 16, 2024
1 parent 8a00c41 commit a16d263
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
1 change: 1 addition & 0 deletions packages/web3-rpc-providers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"eslint-config-base-web3": "0.1.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.26.0",
"isomorphic-ws": "^5.0.0",
"jest": "^29.7.0",
"jest-extended": "^3.0.1",
"prettier": "^2.7.1",
Expand Down
38 changes: 36 additions & 2 deletions packages/web3-rpc-providers/test/unit/constructor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,44 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.

import HttpProvider from 'web3-providers-http';
import WebSocketProvider from 'web3-providers-ws';
import WebSocket from 'isomorphic-ws';

import { Web3ExternalProvider } from '../../src/web3_provider';
import { Network, Transport } from '../../src/types';

// Mock implementation so ws doesnt have openhandle after test exits as it attempts to connects at start
jest.mock('isomorphic-ws', () => {
return {
__esModule: true,
default: jest.fn().mockImplementation(() => {
const eventListeners: { [key: string]: Function[] } = {};

return {
addEventListener: jest.fn((event, handler) => {
if (!eventListeners[event]) {
eventListeners[event] = [];
}
eventListeners[event].push(handler);
}),
removeEventListener: jest.fn((event, handler) => {
if (eventListeners[event]) {
eventListeners[event] = eventListeners[event].filter(h => h !== handler);
}
}),
dispatchEvent: jest.fn((event) => {
const eventType = event.type;
if (eventListeners[eventType]) {
eventListeners[eventType].forEach(handler => handler(event));
}
}),
close: jest.fn(),
send: jest.fn(),
readyState: WebSocket.OPEN,
};
}),
};
});

class MockWeb3ExternalProviderA extends Web3ExternalProvider {
public constructor(network: Network, transport: Transport, token: string){
super(network, transport, token, "");
Expand All @@ -33,7 +68,7 @@ class MockWeb3ExternalProviderA extends Web3ExternalProvider {
else if (_transport === Transport.WebSocket)
transport = "wss://";

return `${transport}example.com/`;
return `${transport}127.0.0.1/`;
}
}

Expand All @@ -54,7 +89,6 @@ describe('Web3ExternalProvider', () => {
const token = 'your-token';

const provider = new MockWeb3ExternalProviderA(network, transport, token);

expect(provider.provider).toBeInstanceOf(WebSocketProvider);
});

Expand Down

0 comments on commit a16d263

Please sign in to comment.