Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit 8355cbc

Browse files
authored
Merge branch '4.x' into ok/6844-Fix-unstable-tests
2 parents 219f8a2 + edf3164 commit 8355cbc

File tree

15 files changed

+90
-152
lines changed

15 files changed

+90
-152
lines changed

packages/web3-core/test/unit/__snapshots__/web3_context.test.ts.snap

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,27 @@ exports[`Web3Context getContextObject should return correct context object 1`] =
4242
"requestManager": Web3RequestManager {
4343
"_emitter": {
4444
"_events": {
45-
"BEFORE_PROVIDER_CHANGE": [Function],
46-
"PROVIDER_CHANGED": [Function],
45+
"BEFORE_PROVIDER_CHANGE": EE {
46+
"context": EventEmitter {
47+
"_events": [Circular],
48+
"_eventsCount": 2,
49+
"maxListeners": 9007199254740991,
50+
},
51+
"fn": [Function],
52+
"once": false,
53+
},
54+
"PROVIDER_CHANGED": EE {
55+
"context": EventEmitter {
56+
"_events": [Circular],
57+
"_eventsCount": 2,
58+
"maxListeners": 9007199254740991,
59+
},
60+
"fn": [Function],
61+
"once": false,
62+
},
4763
},
4864
"_eventsCount": 2,
49-
"_maxListeners": undefined,
50-
Symbol(kCapture): false,
65+
"maxListeners": 9007199254740991,
5166
Symbol(shapeMode): false,
5267
},
5368
"_provider": HttpProvider {
@@ -62,12 +77,27 @@ exports[`Web3Context getContextObject should return correct context object 1`] =
6277
"requestManager": Web3RequestManager {
6378
"_emitter": {
6479
"_events": {
65-
"BEFORE_PROVIDER_CHANGE": [Function],
66-
"PROVIDER_CHANGED": [Function],
80+
"BEFORE_PROVIDER_CHANGE": EE {
81+
"context": EventEmitter {
82+
"_events": [Circular],
83+
"_eventsCount": 2,
84+
"maxListeners": 9007199254740991,
85+
},
86+
"fn": [Function],
87+
"once": false,
88+
},
89+
"PROVIDER_CHANGED": EE {
90+
"context": EventEmitter {
91+
"_events": [Circular],
92+
"_eventsCount": 2,
93+
"maxListeners": 9007199254740991,
94+
},
95+
"fn": [Function],
96+
"once": false,
97+
},
6798
},
6899
"_eventsCount": 2,
69-
"_maxListeners": undefined,
70-
Symbol(kCapture): false,
100+
"maxListeners": 9007199254740991,
71101
Symbol(shapeMode): false,
72102
},
73103
"_provider": HttpProvider {

packages/web3-eth-contract/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"eslint-config-base-web3": "0.1.0",
6363
"eslint-config-prettier": "^8.5.0",
6464
"eslint-plugin-import": "^2.26.0",
65+
"flatted": "^3.3.1",
6566
"jest": "^29.7.0",
6667
"jest-extended": "^3.0.1",
6768
"prettier": "^2.7.1",

packages/web3-eth-contract/test/unit/contract.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { Web3ContractError } from 'web3-errors';
2121
import { Web3Context , Web3ConfigEvent } from 'web3-core';
2222
import { Web3ValidatorError } from 'web3-validator';
2323
import { AbiItem } from 'web3-utils';
24+
import { stringify } from 'flatted';
2425
import {Abi} from '../fixtures/AbiItem'
2526
import { Contract } from '../../src';
2627
import { sampleStorageContractABI } from '../fixtures/storage';
@@ -755,7 +756,7 @@ describe('Contract', () => {
755756

756757
const clonnedContract = contract.clone();
757758

758-
expect(JSON.stringify(contract)).toStrictEqual(JSON.stringify(clonnedContract));
759+
expect(stringify(contract)).toStrictEqual(stringify(clonnedContract));
759760

760761
contract.options.jsonInterface = GreeterAbi;
761762
});
@@ -764,7 +765,7 @@ describe('Contract', () => {
764765
const contract = new Contract(sampleStorageContractABI);
765766

766767
const clonnedContract = contract.clone();
767-
expect(JSON.stringify(contract)).toStrictEqual(JSON.stringify(clonnedContract));
768+
expect(stringify(contract)).toStrictEqual(stringify(clonnedContract));
768769
});
769770

770771
it('should be able to update the jsonInterface', () => {

packages/web3-providers-ipc/test/unit/check_implementation.test.ts

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,6 @@ describe('IPCProvider', () => {
9797
expect(end).toHaveBeenCalled();
9898
});
9999

100-
it('connection error', async () => {
101-
const ipc = new IpcProvider(socketPath);
102-
// @ts-expect-error mock method
103-
ipc._socketConnection.connecting = false;
104-
// @ts-expect-error mock method
105-
ipc._connectionStatus = 'disconnected';
106-
ipc.connect = jest.fn();
107-
108-
await expect(
109-
ipc.request({
110-
jsonrpc: '2.0',
111-
id: 42,
112-
method: 'eth_getBalance',
113-
params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
114-
}),
115-
).rejects.toThrow('Connection not open');
116-
});
117100
it('_onCloseHandler autoReconnect=false', () => {
118101
const ipc = new IpcProvider(socketPath, {}, { autoReconnect: false });
119102
const _clearQueues = jest.fn();

packages/web3-providers-ws/test/integration/web_socket_provider_integration.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,21 @@ describeIf(isWs)('WebSocketProvider - implemented methods', () => {
137137
webSocketProvider.disconnect(code);
138138
await closePromise;
139139
});
140+
141+
it('should error when no connection is established', async () => {
142+
const wsProvider = new WebSocketProvider("ws://localhost:999",{}, { autoReconnect: false });
143+
let errored = false;
144+
try{
145+
await wsProvider.request(jsonRpcPayload);
146+
// should not be able to reach here
147+
148+
}catch(e){
149+
// eslint-disable-next-line jest/no-conditional-expect
150+
expect((e as any).message).toBe('Connection not open')
151+
errored = true;
152+
}
153+
expect(errored).toBe(true);
154+
});
140155
});
141156

142157
describe('disconnect and reset test', () => {

packages/web3-providers-ws/test/unit/__mocks__/isomorphic-ws.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@ export default class WebSocket extends EventEmitter {
2323
public CONNECTING = 0;
2424
public OPEN = 1;
2525

26-
public constructor(...args: any[]) {
26+
public constructor() {
27+
super()
2728
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
28-
super(...args);
29-
3029
// Connected state
3130
this.readyState = 1;
3231
}
@@ -43,13 +42,12 @@ export default class WebSocket extends EventEmitter {
4342
}, 100);
4443
}
4544

46-
public addEventListener(event: any, cb: () => void) {
47-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
48-
this.prependListener(event, cb);
45+
public addEventListener(_event: any, _cb: () => void) {
46+
this.on(_event, _cb)
47+
4948
}
5049

51-
public removeEventListener(event: any, cb: () => void) {
52-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
53-
this.removeListener(event, cb);
50+
public removeEventListener(_event: any, _cb: () => void) {
51+
this.off(_event, _cb)
5452
}
5553
}

packages/web3-providers-ws/test/unit/check_implementation.test.ts

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,28 +85,14 @@ describe('WebSocketProvider', () => {
8585
ws.disconnect(code, data);
8686
expect(close).toHaveBeenCalledWith(code, data);
8787
});
88-
it('connection error', async () => {
89-
const ws = new WebSocketProvider('ws://localhost:8545');
90-
// @ts-expect-error mock method
91-
ws._socketConnection.readyState = 2;
92-
ws.connect = jest.fn();
93-
94-
await expect(
95-
ws.request({
96-
jsonrpc: '2.0',
97-
id: 42,
98-
method: 'eth_getBalance',
99-
params: ['0x407d73d8a49eeb85d32cf465507dd71d507100c1', 'latest'],
100-
}),
101-
).rejects.toThrow('Connection not open');
102-
});
10388
it('onCloseEvent autoReconnect=false', () => {
10489
const ws = new WebSocketProvider('ws://localhost:8545', {}, { autoReconnect: false });
10590
const _clearQueues = jest.fn();
10691
const _removeSocketListeners = jest.fn();
10792
const _onDisconnect = jest.fn();
10893
// @ts-expect-error mock method
10994
ws._socketConnection.close = jest.fn();
95+
11096
// @ts-expect-error mock method
11197
ws._clearQueues = _clearQueues;
11298
// @ts-expect-error mock method
@@ -140,7 +126,7 @@ describe('WebSocketProvider', () => {
140126
const ws = new WebSocketProvider('ws://localhost:8545');
141127
// @ts-expect-error mock method
142128
ws._socketConnection.listeners = () => {
143-
throw new Error('error');
129+
throw new Error('error');
144130
};
145131
const addEventListener = jest.fn();
146132
// @ts-expect-error mock method
@@ -161,6 +147,6 @@ describe('WebSocketProvider', () => {
161147
expect(removeEventListener).toHaveBeenCalledWith('open', ws._onOpenHandler);
162148
// @ts-expect-error mock method
163149
expect(removeEventListener).toHaveBeenCalledWith('close', ws._onCloseHandler);
164-
});
150+
});
165151
});
166152
});

packages/web3-utils/CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,4 +193,8 @@ Documentation:
193193

194194
- Adds missing exported type `AbiItem` from 1.x to v4 for compatabiltiy (#6678)
195195

196-
## [Unreleased]
196+
## [Unreleased]
197+
198+
### Fixed
199+
200+
- replaced our eventEmitter to EventEmitter3 to support react native builds (#6253)

packages/web3-utils/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
},
6565
"dependencies": {
6666
"ethereum-cryptography": "^2.0.0",
67+
"eventemitter3": "^5.0.1",
6768
"web3-errors": "^1.1.4",
6869
"web3-types": "^1.4.0",
6970
"web3-validator": "^2.0.4"

packages/web3-utils/src/chunk_response_parser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
1616
*/
1717
import { JsonRpcResponse } from 'web3-types';
1818
import { InvalidResponseError } from 'web3-errors';
19-
import { EventEmitter } from 'events';
19+
import { EventEmitter } from 'eventemitter3';
2020
import { Timeout } from './promise_helpers.js';
2121

2222
export class ChunkResponseParser {

0 commit comments

Comments
 (0)