@reown/appkit-adapter-ethers 1.6.6 → 1.6.7-basic-test.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,456 @@
1
+ import UniversalProvider from '@walletconnect/universal-provider';
2
+ import { InfuraProvider, JsonRpcProvider } from 'ethers';
3
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
4
+ import { WcConstantsUtil } from '@reown/appkit';
5
+ import { Emitter } from '@reown/appkit-common';
6
+ import { CaipNetworksUtil } from '@reown/appkit-utils';
7
+ import { mainnet, polygon } from '@reown/appkit/networks';
8
+ import { ProviderUtil } from '@reown/appkit/store';
9
+ import { EthersAdapter } from '../client';
10
+ import { EthersMethods } from '../utils/EthersMethods';
11
+ class ErrorWithCode extends Error {
12
+ constructor(message, code) {
13
+ super(message);
14
+ this.code = code;
15
+ }
16
+ }
17
+ vi.mock('ethers', async (importOriginal) => {
18
+ const actual = await importOriginal();
19
+ return {
20
+ ...actual,
21
+ formatEther: vi.fn(() => '1.5'),
22
+ InfuraProvider: vi.fn(() => ({
23
+ lookupAddress: vi.fn(),
24
+ getAvatar: vi.fn()
25
+ })),
26
+ JsonRpcProvider: vi.fn(() => ({
27
+ getBalance: vi.fn()
28
+ })),
29
+ BrowserProvider: vi.fn(() => ({
30
+ on: vi.fn((event, callback) => {
31
+ if (event === 'pending') {
32
+ callback();
33
+ }
34
+ })
35
+ }))
36
+ };
37
+ });
38
+ vi.mock('../utils/EthersMethods', () => ({
39
+ EthersMethods: {
40
+ signMessage: vi.fn(),
41
+ sendTransaction: vi.fn(),
42
+ writeContract: vi.fn(),
43
+ estimateGas: vi.fn(),
44
+ getEnsAddress: vi.fn(),
45
+ parseUnits: vi.fn(),
46
+ formatUnits: vi.fn(),
47
+ hexStringToNumber: vi.fn(hex => parseInt(hex, 16)),
48
+ numberToHexString: vi.fn(num => `0x${num.toString(16)}`)
49
+ }
50
+ }));
51
+ const mockProvider = {
52
+ request: vi.fn(),
53
+ on: vi.fn(),
54
+ removeListener: vi.fn()
55
+ };
56
+ const mockWalletConnectProvider = {
57
+ connect: vi.fn(),
58
+ disconnect: vi.fn(),
59
+ on: vi.fn(),
60
+ removeListener: vi.fn(),
61
+ session: true,
62
+ setDefaultChain: vi.fn()
63
+ };
64
+ const mockAuthProvider = {
65
+ connect: vi.fn(),
66
+ disconnect: vi.fn(),
67
+ switchNetwork: vi.fn(),
68
+ getUser: vi.fn()
69
+ };
70
+ const mockNetworks = [mainnet, polygon];
71
+ const mockCaipNetworks = CaipNetworksUtil.extendCaipNetworks(mockNetworks, {
72
+ projectId: 'test-project-id',
73
+ customNetworkImageUrls: {}
74
+ });
75
+ describe('EthersAdapter', () => {
76
+ let adapter;
77
+ beforeEach(() => {
78
+ vi.clearAllMocks();
79
+ adapter = new EthersAdapter();
80
+ });
81
+ describe('EthersAdapter -constructor', () => {
82
+ it('should initialize with correct parameters', () => {
83
+ expect(adapter.adapterType).toBe('ethers');
84
+ expect(adapter.namespace).toBe('eip155');
85
+ });
86
+ it('should not set info property for injected connector', () => {
87
+ const mockConnectors = [
88
+ {
89
+ id: 'Browser Wallet',
90
+ name: 'Browser Wallet',
91
+ type: 'injected',
92
+ info: { rdns: 'Browser Wallet' }
93
+ }
94
+ ];
95
+ adapter.syncConnectors(mockConnectors);
96
+ const injectedConnector = mockConnectors.filter((c) => c.id === 'injected')[0];
97
+ expect(injectedConnector?.info).toBeUndefined();
98
+ });
99
+ });
100
+ describe('EthersAdapter - signMessage', () => {
101
+ it('should sign message successfully', async () => {
102
+ const mockSignature = '0xmocksignature';
103
+ vi.mocked(EthersMethods.signMessage).mockResolvedValue(mockSignature);
104
+ const result = await adapter.signMessage({
105
+ message: 'Hello',
106
+ address: '0x123',
107
+ provider: mockProvider
108
+ });
109
+ expect(result.signature).toBe(mockSignature);
110
+ });
111
+ it('should throw error when provider is undefined', async () => {
112
+ await expect(adapter.signMessage({
113
+ message: 'Hello',
114
+ address: '0x123'
115
+ })).rejects.toThrow('Provider is undefined');
116
+ });
117
+ });
118
+ describe('EthersAdapter -sendTransaction', () => {
119
+ it('should send transaction successfully', async () => {
120
+ const mockTxHash = '0xtxhash';
121
+ vi.mocked(EthersMethods.sendTransaction).mockResolvedValue(mockTxHash);
122
+ const result = await adapter.sendTransaction({
123
+ value: BigInt(1000),
124
+ to: '0x456',
125
+ data: '0x',
126
+ gas: BigInt(21000),
127
+ gasPrice: BigInt(2000000000),
128
+ address: '0x123',
129
+ provider: mockProvider,
130
+ caipNetwork: mockCaipNetworks[0]
131
+ });
132
+ expect(result.hash).toBe(mockTxHash);
133
+ });
134
+ it('should throw error when provider is undefined', async () => {
135
+ await expect(adapter.sendTransaction({
136
+ value: BigInt(1000),
137
+ to: '0x456',
138
+ data: '0x',
139
+ gas: BigInt(21000),
140
+ gasPrice: BigInt(2000000000),
141
+ address: '0x123'
142
+ })).rejects.toThrow('Provider is undefined');
143
+ });
144
+ });
145
+ describe('EthersAdapter -writeContract', () => {
146
+ it('should write contract successfully', async () => {
147
+ const mockTxHash = '0xtxhash';
148
+ vi.mocked(EthersMethods.writeContract).mockResolvedValue(mockTxHash);
149
+ const result = await adapter.writeContract({
150
+ abi: [],
151
+ method: 'transfer',
152
+ caipAddress: 'eip155:1:0x123',
153
+ fromAddress: '0x123',
154
+ args: ['0x789', BigInt(1000)],
155
+ tokenAddress: '0x789',
156
+ provider: mockProvider,
157
+ caipNetwork: mockCaipNetworks[0],
158
+ chainNamespace: 'eip155'
159
+ });
160
+ expect(result.hash).toBe(mockTxHash);
161
+ });
162
+ });
163
+ describe('EthersAdapter -connect', () => {
164
+ it('should connect with external provider', async () => {
165
+ adapter.caipNetworks = mockCaipNetworks;
166
+ vi.mocked(mockProvider.request).mockImplementation(request => {
167
+ if (request.method === 'eth_requestAccounts')
168
+ return Promise.resolve(['0x123']);
169
+ if (request.method === 'eth_chainId')
170
+ return Promise.resolve('0x1');
171
+ if (request.method === 'wallet_switchEthereumChain')
172
+ return Promise.resolve(null);
173
+ return Promise.resolve(null);
174
+ });
175
+ const connectors = [
176
+ {
177
+ id: 'test',
178
+ provider: mockProvider,
179
+ chains: [1],
180
+ type: 'EXTERNAL',
181
+ chain: 1
182
+ }
183
+ ];
184
+ Object.defineProperty(adapter, 'connectors', {
185
+ value: connectors
186
+ });
187
+ const result = await adapter.connect({
188
+ id: 'test',
189
+ provider: mockProvider,
190
+ type: 'EXTERNAL',
191
+ chainId: 1
192
+ });
193
+ expect(result.address).toBe('0x123');
194
+ expect(result.chainId).toBe(1);
195
+ });
196
+ it('should call switch network if wallet chain id is different than requested chain id', async () => {
197
+ adapter.caipNetworks = mockCaipNetworks;
198
+ vi.mocked(mockProvider.request).mockImplementation(request => {
199
+ if (request.method === 'eth_requestAccounts')
200
+ return Promise.resolve(['0x123']);
201
+ if (request.method === 'eth_chainId')
202
+ return Promise.resolve('137');
203
+ if (request.method === 'wallet_switchEthereumChain')
204
+ return Promise.resolve(null);
205
+ return Promise.resolve(null);
206
+ });
207
+ const connectors = [
208
+ {
209
+ id: 'test',
210
+ provider: mockProvider,
211
+ chains: [1],
212
+ type: 'EXTERNAL',
213
+ chain: 1
214
+ }
215
+ ];
216
+ Object.defineProperty(adapter, 'connectors', {
217
+ value: connectors
218
+ });
219
+ const result = await adapter.connect({
220
+ id: 'test',
221
+ provider: mockProvider,
222
+ type: 'EXTERNAL',
223
+ chainId: 1
224
+ });
225
+ expect(mockProvider.request).toHaveBeenCalledWith({
226
+ method: 'wallet_switchEthereumChain',
227
+ params: [{ chainId: '0x1' }]
228
+ });
229
+ expect(result.address).toBe('0x123');
230
+ expect(result.chainId).toBe(1);
231
+ });
232
+ });
233
+ describe('EthersAdapter -disconnect', () => {
234
+ it('should disconnect WalletConnect provider', async () => {
235
+ await adapter.disconnect({
236
+ provider: mockWalletConnectProvider,
237
+ providerType: 'WALLET_CONNECT'
238
+ });
239
+ expect(mockWalletConnectProvider.disconnect).toHaveBeenCalled();
240
+ });
241
+ it('should disconnect Auth provider', async () => {
242
+ await adapter.disconnect({
243
+ provider: mockAuthProvider,
244
+ providerType: 'AUTH'
245
+ });
246
+ expect(mockAuthProvider.disconnect).toHaveBeenCalled();
247
+ });
248
+ });
249
+ describe('EthersAdapter -getBalance', () => {
250
+ it('should get balance successfully', async () => {
251
+ adapter.caipNetworks = mockCaipNetworks;
252
+ const mockBalance = BigInt(1500000000000000000);
253
+ vi.mocked(JsonRpcProvider).mockImplementation(() => ({
254
+ getBalance: vi.fn().mockResolvedValue(mockBalance)
255
+ }));
256
+ const result = await adapter.getBalance({
257
+ address: '0x123',
258
+ chainId: 1
259
+ });
260
+ expect(result).toEqual({
261
+ balance: '1.5',
262
+ symbol: 'ETH'
263
+ });
264
+ });
265
+ });
266
+ describe('EthersAdapter -getProfile', () => {
267
+ it('should get profile successfully', async () => {
268
+ const mockEnsName = 'test.eth';
269
+ const mockAvatar = 'https://avatar.com/test.jpg';
270
+ vi.mocked(InfuraProvider).mockImplementation(() => ({
271
+ lookupAddress: vi.fn().mockResolvedValue(mockEnsName),
272
+ getAvatar: vi.fn().mockResolvedValue(mockAvatar)
273
+ }));
274
+ const result = await adapter.getProfile({
275
+ address: '0x123',
276
+ chainId: 1
277
+ });
278
+ expect(result).toEqual({
279
+ profileName: mockEnsName,
280
+ profileImage: mockAvatar
281
+ });
282
+ });
283
+ });
284
+ describe('EthersAdapter - switchNetwork', () => {
285
+ it('should switch network with Auth provider', async () => {
286
+ await adapter.switchNetwork({
287
+ caipNetwork: mockCaipNetworks[0],
288
+ provider: mockAuthProvider,
289
+ providerType: 'AUTH'
290
+ });
291
+ expect(mockAuthProvider.switchNetwork).toHaveBeenCalledWith('eip155:1');
292
+ expect(mockAuthProvider.getUser).toHaveBeenCalledWith({
293
+ chainId: 'eip155:1',
294
+ preferredAccountType: 'smartAccount'
295
+ });
296
+ });
297
+ it('should add Ethereum chain with external provider and use chain default', async () => {
298
+ vi.mocked(mockProvider.request).mockImplementation(request => {
299
+ if (request.method === 'wallet_switchEthereumChain') {
300
+ throw new ErrorWithCode('Unrecognized chain ID', WcConstantsUtil.ERROR_CODE_UNRECOGNIZED_CHAIN_ID);
301
+ }
302
+ return Promise.resolve(null);
303
+ });
304
+ const mockCaipNetwork = mockCaipNetworks[0];
305
+ await adapter.switchNetwork({
306
+ caipNetwork: mockCaipNetwork,
307
+ provider: mockProvider,
308
+ providerType: 'EXTERNAL'
309
+ });
310
+ expect(mockProvider.request).toHaveBeenCalledWith({
311
+ method: 'wallet_addEthereumChain',
312
+ params: [
313
+ {
314
+ chainId: '0x1',
315
+ rpcUrls: [mockCaipNetwork.rpcUrls['chainDefault']?.http[0]],
316
+ chainName: 'Ethereum',
317
+ iconUrls: ['ba0ba0cd-17c6-4806-ad93-f9d174f17900'],
318
+ nativeCurrency: {
319
+ name: 'Ether',
320
+ decimals: 18,
321
+ symbol: 'ETH'
322
+ },
323
+ blockExplorerUrls: ['https://etherscan.io']
324
+ }
325
+ ]
326
+ });
327
+ });
328
+ it('should call setDefaultChain and request from provider for WALLET_CONNECT', async () => {
329
+ const adapter = new EthersAdapter();
330
+ const mockProvider = {
331
+ request: vi.fn(),
332
+ setDefaultChain: vi.fn()
333
+ };
334
+ const params = {
335
+ caipNetwork: {
336
+ id: 1,
337
+ caipNetworkId: 'eip155:1'
338
+ },
339
+ provider: mockProvider,
340
+ providerType: 'WALLET_CONNECT'
341
+ };
342
+ await adapter.switchNetwork(params);
343
+ expect(mockProvider.request).toHaveBeenCalledWith({
344
+ method: 'wallet_switchEthereumChain',
345
+ params: [{ chainId: '0x1' }]
346
+ });
347
+ });
348
+ });
349
+ describe('EthersAdapter -getWalletConnectProvider', () => {
350
+ it('should return WalletConnect provider', () => {
351
+ Object.defineProperty(adapter, 'availableConnectors', {
352
+ value: [
353
+ {
354
+ id: 'walletconnect',
355
+ type: 'WALLET_CONNECT',
356
+ provider: mockWalletConnectProvider,
357
+ chain: 'eip155',
358
+ chains: []
359
+ }
360
+ ]
361
+ });
362
+ const result = adapter.getWalletConnectProvider();
363
+ expect(result).toBe(mockWalletConnectProvider);
364
+ });
365
+ });
366
+ describe('EthersAdapter -parseUnits and formatUnits', () => {
367
+ it('should parse units correctly', () => {
368
+ const mockBigInt = BigInt('1500000000000000000');
369
+ vi.mocked(EthersMethods.parseUnits).mockReturnValue(mockBigInt);
370
+ const result = adapter.parseUnits({
371
+ value: '1.5',
372
+ decimals: 18
373
+ });
374
+ expect(result).toBe(mockBigInt);
375
+ });
376
+ it('should format units correctly', () => {
377
+ vi.mocked(EthersMethods.formatUnits).mockReturnValue('1.5');
378
+ const result = adapter.formatUnits({
379
+ value: BigInt('1500000000000000000'),
380
+ decimals: 18
381
+ });
382
+ expect(result).toBe('1.5');
383
+ });
384
+ });
385
+ describe('EthersAdapter - Permissions', () => {
386
+ const mockProvider = {
387
+ request: vi.fn()
388
+ };
389
+ beforeEach(() => {
390
+ vi.spyOn(ProviderUtil, 'getProvider').mockImplementation(() => mockProvider);
391
+ });
392
+ it('should call wallet_getCapabilities', async () => {
393
+ await adapter.getCapabilities('eip155:1:0x123');
394
+ expect(mockProvider.request).toHaveBeenCalledWith({
395
+ method: 'wallet_getCapabilities',
396
+ params: ['eip155:1:0x123']
397
+ });
398
+ });
399
+ it('should call wallet_grantPermissions', async () => {
400
+ const mockParams = {
401
+ pci: 'test-pci',
402
+ expiry: 1234567890,
403
+ address: '0x123',
404
+ permissions: ['eth_accounts']
405
+ };
406
+ await adapter.grantPermissions(mockParams);
407
+ expect(mockProvider.request).toHaveBeenCalledWith({
408
+ method: 'wallet_grantPermissions',
409
+ params: mockParams
410
+ });
411
+ });
412
+ it('should call wallet_revokePermissions', async () => {
413
+ vi.mocked(mockProvider.request).mockImplementation(() => Promise.resolve('0x123'));
414
+ const mockParams = {
415
+ pci: 'test-pci',
416
+ expiry: 1234567890,
417
+ address: '0x123',
418
+ permissions: ['eth_accounts']
419
+ };
420
+ const result = await adapter.revokePermissions(mockParams);
421
+ expect(mockProvider.request).toHaveBeenCalledWith({
422
+ method: 'wallet_revokePermissions',
423
+ params: [mockParams]
424
+ });
425
+ expect(result).toBe('0x123');
426
+ });
427
+ });
428
+ describe('EthersAdapter - provider listener', () => {
429
+ it('should disconnect if accountsChanged event emits no accounts', async () => {
430
+ adapter.caipNetworks = mockCaipNetworks;
431
+ const emitter = new Emitter();
432
+ const mockProvider = {
433
+ connect: vi.fn(),
434
+ request: vi.fn().mockResolvedValue(['0x123']),
435
+ removeListener: vi.fn(),
436
+ on: emitter.on.bind(emitter),
437
+ off: emitter.off.bind(emitter),
438
+ emit: emitter.emit.bind(emitter)
439
+ };
440
+ Object.defineProperty(adapter, 'connectors', {
441
+ value: [{ id: 'test', provider: mockProvider }]
442
+ });
443
+ await adapter.connect({
444
+ id: 'test',
445
+ type: 'EXTERNAL',
446
+ chainId: 1
447
+ });
448
+ const disconnect = vi.fn();
449
+ adapter.on('disconnect', disconnect);
450
+ mockProvider.emit('accountsChanged', []);
451
+ expect(disconnect).toHaveBeenCalled();
452
+ expect(mockProvider.removeListener).toHaveBeenCalledWith('disconnect', expect.any(Function));
453
+ });
454
+ });
455
+ });
456
+ //# sourceMappingURL=client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../../src/tests/client.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { vi } from 'vitest';
2
+ import { mainnet } from '@reown/appkit/networks';
3
+ export const mockAppKit = {
4
+ setIsConnected: vi.fn(),
5
+ getIsConnectedState: vi.fn().mockReturnValue(true),
6
+ setCaipAddress: vi.fn(),
7
+ getCaipAddress: vi.fn().mockReturnValue('eip155:1:0xE62a3eD41B21447b67a63880607CD2E746A0E35d'),
8
+ setRequestedCaipNetworks: vi.fn(),
9
+ setConnectors: vi.fn(),
10
+ getConnectors: vi.fn().mockReturnValue([]),
11
+ setConnectedWalletInfo: vi.fn(),
12
+ resetWcConnection: vi.fn(),
13
+ resetNetwork: vi.fn(),
14
+ resetAccount: vi.fn(),
15
+ setPreferredAccountType: vi.fn(),
16
+ getPreferredAccountType: vi.fn().mockReturnValue('eoa'),
17
+ setEIP6963Enabled: vi.fn(),
18
+ getCaipNetwork: vi.fn().mockReturnValue(mainnet),
19
+ getCaipNetworks: vi.fn(),
20
+ subscribeState: vi.fn().mockImplementation(callback => vi.fn(() => callback({}))),
21
+ setApprovedCaipNetworksData: vi.fn(),
22
+ getAddress: vi.fn().mockReturnValue('0xE62a3eD41B21447b67a63880607CD2E746A0E35d'),
23
+ addConnector: vi.fn(),
24
+ setCaipNetwork: vi.fn(),
25
+ setLoading: vi.fn(),
26
+ setSmartAccountEnabledNetworks: vi.fn(),
27
+ setAllAccounts: vi.fn(),
28
+ setStatus: vi.fn(),
29
+ setSmartAccountDeployed: vi.fn(),
30
+ open: vi.fn(),
31
+ isOpen: vi.fn().mockReturnValue(false),
32
+ isTransactionStackEmpty: vi.fn().mockReturnValue(true),
33
+ replace: vi.fn(),
34
+ redirect: vi.fn(),
35
+ showErrorMessage: vi.fn(),
36
+ close: vi.fn(),
37
+ popTransactionStack: vi.fn(),
38
+ setProfileName: vi.fn(),
39
+ setProfileImage: vi.fn(),
40
+ setAddressExplorerUrl: vi.fn(),
41
+ setBalance: vi.fn(),
42
+ getReownName: vi.fn().mockResolvedValue([]),
43
+ fetchIdentity: vi.fn().mockResolvedValue(null),
44
+ getActiveChainNamespace: vi.fn(),
45
+ setClientId: vi.fn(),
46
+ universalAdapter: {
47
+ connectionControllerClient: {
48
+ connectWalletConnect: vi.fn(),
49
+ disconnect: vi.fn()
50
+ },
51
+ networkControllerClient: {
52
+ switchCaipNetwork: vi.fn()
53
+ }
54
+ },
55
+ getConnectorImage: vi.fn(),
56
+ handleUnsafeRPCRequest: vi.fn().mockImplementation(() => {
57
+ if (mockAppKit.isOpen()) {
58
+ if (mockAppKit.isTransactionStackEmpty()) {
59
+ return;
60
+ }
61
+ mockAppKit.redirect('ApproveTransaction');
62
+ }
63
+ else {
64
+ mockAppKit.open({ view: 'ApproveTransaction' });
65
+ }
66
+ })
67
+ };
68
+ export default mockAppKit;
69
+ //# sourceMappingURL=AppKit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppKit.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/AppKit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { vi } from 'vitest';
2
+ export const mockAuthConnector = {
3
+ onRpcRequest: vi.fn(),
4
+ onRpcError: vi.fn(),
5
+ onRpcSuccess: vi.fn(),
6
+ onNotConnected: vi.fn(),
7
+ onIsConnected: vi.fn(),
8
+ onConnect: vi.fn(),
9
+ onSetPreferredAccount: vi.fn(),
10
+ connect: vi.fn().mockResolvedValue({
11
+ address: '0x1234567890123456789012345678901234567890',
12
+ chainId: 1,
13
+ smartAccountDeployed: true,
14
+ preferredAccountType: 'eoa',
15
+ accounts: []
16
+ }),
17
+ getSmartAccountEnabledNetworks: vi.fn().mockResolvedValue({
18
+ smartAccountEnabledNetworks: [1, 137]
19
+ }),
20
+ on: vi.fn(),
21
+ removeListener: vi.fn(),
22
+ getLoginEmailUsed: vi.fn().mockReturnValue(false),
23
+ isConnected: vi.fn().mockResolvedValue({ isConnected: false }),
24
+ disconnect: vi.fn(),
25
+ switchNetwork: vi.fn(),
26
+ rejectRpcRequests: vi.fn(),
27
+ request: vi.fn(),
28
+ getUser: vi.fn().mockResolvedValue({
29
+ address: '0x1234567890123456789012345678901234567890',
30
+ chainId: 1,
31
+ smartAccountDeployed: true,
32
+ preferredAccountType: 'eoa',
33
+ accounts: []
34
+ })
35
+ };
36
+ //# sourceMappingURL=AuthConnector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthConnector.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/AuthConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;IAClB,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC9B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACjC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,oBAAoB,EAAE,IAAI;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,EAAE;KACb,CAAC;IACF,8BAA8B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACxD,2BAA2B,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;KACtC,CAAC;IACF,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;IACX,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;IACjD,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC9D,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACjC,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,oBAAoB,EAAE,IAAI;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,QAAQ,EAAE,EAAE;KACb,CAAC;CACH,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { vi } from 'vitest';
2
+ export const mockEthersConfig = {
3
+ metadata: {
4
+ name: 'Mock dApp',
5
+ description: 'A mock dApp for testing',
6
+ url: 'https://mockdapp.com',
7
+ icons: ['https://mockdapp.com/icon.png']
8
+ },
9
+ injected: {
10
+ request: vi.fn(),
11
+ on: vi.fn(),
12
+ removeListener: vi.fn()
13
+ },
14
+ coinbase: {
15
+ request: vi.fn(),
16
+ on: vi.fn(),
17
+ removeListener: vi.fn()
18
+ },
19
+ EIP6963: true
20
+ };
21
+ export function mockCreateEthersConfig() {
22
+ return {
23
+ ...mockEthersConfig,
24
+ metadata: {
25
+ ...mockEthersConfig.metadata
26
+ }
27
+ };
28
+ }
29
+ //# sourceMappingURL=EthersConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EthersConfig.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/EthersConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAI3B,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,yBAAyB;QACtC,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,CAAC,+BAA+B,CAAC;KACzC;IACD,QAAQ,EAAE;QAER,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;KACxB;IACD,QAAQ,EAAE;QAER,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAChB,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QACX,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;KACxB;IACD,OAAO,EAAE,IAAI;CACa,CAAA;AAG5B,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,GAAG,gBAAgB;QACnB,QAAQ,EAAE;YACR,GAAG,gBAAgB,CAAC,QAAQ;SAC7B;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { mainnet, solana } from '@reown/appkit/networks';
2
+ export const mockMainnetChainImage = 'https://assets.coingecko.com/coins/images/279/large/ethereum.png';
3
+ export const mockOptions = {
4
+ projectId: 'test-project-id',
5
+ adapters: [{ chainNamespace: 'eip155' }],
6
+ networks: [mainnet, solana],
7
+ chainImages: {
8
+ [mainnet.id]: mockMainnetChainImage
9
+ },
10
+ metadata: {
11
+ name: 'Test App',
12
+ description: 'Test App Description',
13
+ url: 'https://test-app.com',
14
+ icons: ['https://test-app.com/icon.png']
15
+ }
16
+ };
17
+ //# sourceMappingURL=Options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Options.js","sourceRoot":"","sources":["../../../../../src/tests/mocks/Options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAChC,kEAAkE,CAAA;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,SAAS,EAAE,iBAAiB;IAC5B,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,EAA6B,CAAC;IACnE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE;QACX,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,qBAAqB;KACpC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sBAAsB;QACnC,GAAG,EAAE,sBAAsB;QAC3B,KAAK,EAAE,CAAC,+BAA+B,CAAC;KACzC;CAC0B,CAAA"}