@reown/appkit-adapter-wagmi 1.6.9 → 1.7.0-alpha.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.
- package/dist/esm/src/tests/LimitUtil.test.js +25 -0
- package/dist/esm/src/tests/LimitUtil.test.js.map +1 -0
- package/dist/esm/src/tests/UniversalConnector.test.js +125 -0
- package/dist/esm/src/tests/UniversalConnector.test.js.map +1 -0
- package/dist/esm/src/tests/client.test.js +686 -0
- package/dist/esm/src/tests/client.test.js.map +1 -0
- package/dist/esm/src/tests/mocks/AppKit.js +117 -0
- package/dist/esm/src/tests/mocks/AppKit.js.map +1 -0
- package/dist/esm/src/tests/mocks/adapter.mock.js +2 -0
- package/dist/esm/src/tests/mocks/adapter.mock.js.map +1 -0
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/src/tests/LimitUtil.test.d.ts +1 -0
- package/dist/types/src/tests/UniversalConnector.test.d.ts +1 -0
- package/dist/types/src/tests/client.test.d.ts +1 -0
- package/dist/types/src/tests/mocks/AppKit.d.ts +35 -0
- package/dist/types/src/tests/mocks/adapter.mock.d.ts +0 -0
- package/package.json +21 -10
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { LimitterUtil } from '../utils/LimitterUtil';
|
|
3
|
+
describe('LimitterUtil', () => {
|
|
4
|
+
it('should have valid default state', () => {
|
|
5
|
+
expect(LimitterUtil.state).toEqual({
|
|
6
|
+
pendingTransactions: 0
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
it('should increase state limit', () => {
|
|
10
|
+
LimitterUtil.increase('pendingTransactions');
|
|
11
|
+
expect(LimitterUtil.state.pendingTransactions).toBe(1);
|
|
12
|
+
});
|
|
13
|
+
it('should decrease state limit', () => {
|
|
14
|
+
expect(LimitterUtil.state.pendingTransactions).toBe(1);
|
|
15
|
+
LimitterUtil.decrease('pendingTransactions');
|
|
16
|
+
expect(LimitterUtil.state.pendingTransactions).toBe(0);
|
|
17
|
+
});
|
|
18
|
+
it('should reset state limit', () => {
|
|
19
|
+
LimitterUtil.increase('pendingTransactions');
|
|
20
|
+
expect(LimitterUtil.state.pendingTransactions).toEqual(1);
|
|
21
|
+
LimitterUtil.reset('pendingTransactions');
|
|
22
|
+
expect(LimitterUtil.state.pendingTransactions).toEqual(0);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=LimitUtil.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LimitUtil.test.js","sourceRoot":"","sources":["../../../../src/tests/LimitUtil.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACjC,mBAAmB,EAAE,CAAC;SACvB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtD,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;QAC5C,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACzD,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACzC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { getAddress } from 'viem';
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { mainnet } from '@reown/appkit/networks';
|
|
4
|
+
import { walletConnect } from '../connectors/UniversalConnector';
|
|
5
|
+
import { mockAddress, mockAppKit, mockCaipAddress, mockCaipNetworks, mockProvider, mockSession } from './mocks/AppKit';
|
|
6
|
+
vi.mock('@reown/appkit-core', async (importOriginal) => {
|
|
7
|
+
const actual = await importOriginal();
|
|
8
|
+
return {
|
|
9
|
+
...actual,
|
|
10
|
+
StorageUtil: {
|
|
11
|
+
getActiveNamespace: vi.fn(),
|
|
12
|
+
getStoredActiveCaipNetworkId: vi.fn()
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
const mockStorage = {
|
|
17
|
+
getItem: vi.fn(),
|
|
18
|
+
setItem: vi.fn()
|
|
19
|
+
};
|
|
20
|
+
const mockEmitter = {
|
|
21
|
+
emit: vi.fn(),
|
|
22
|
+
on: vi.fn(),
|
|
23
|
+
removeListener: vi.fn()
|
|
24
|
+
};
|
|
25
|
+
describe('UniversalConnector', () => {
|
|
26
|
+
let connectorInstance;
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
const createConnector = walletConnect({
|
|
29
|
+
isNewChainsStale: false
|
|
30
|
+
}, mockAppKit, mockCaipNetworks);
|
|
31
|
+
connectorInstance = createConnector({
|
|
32
|
+
chains: mockCaipNetworks,
|
|
33
|
+
options: {},
|
|
34
|
+
storage: mockStorage,
|
|
35
|
+
emitter: mockEmitter
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
afterEach(() => {
|
|
39
|
+
vi.clearAllMocks();
|
|
40
|
+
});
|
|
41
|
+
describe('connect', () => {
|
|
42
|
+
it('should connect successfully', async () => {
|
|
43
|
+
const expectedChainId = mainnet.id;
|
|
44
|
+
mockProvider.enable.mockResolvedValue([mockAddress]);
|
|
45
|
+
const result = await connectorInstance.connect();
|
|
46
|
+
expect(result).toEqual({
|
|
47
|
+
accounts: [getAddress(mockAddress)],
|
|
48
|
+
chainId: expectedChainId
|
|
49
|
+
});
|
|
50
|
+
expect(mockProvider.on).toHaveBeenCalled();
|
|
51
|
+
expect(mockProvider.session.namespaces.eip155.accounts).toEqual([mockCaipAddress]);
|
|
52
|
+
expect(mockProvider.setDefaultChain).toHaveBeenCalledWith(`eip155:${expectedChainId}`);
|
|
53
|
+
});
|
|
54
|
+
it('should handle user rejection', async () => {
|
|
55
|
+
mockProvider.enable.mockRejectedValue(new Error('user rejected'));
|
|
56
|
+
await expect(connectorInstance.connect()).rejects.toThrow('User rejected the request.');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('getAccounts', () => {
|
|
60
|
+
it('should return accounts from provider session', async () => {
|
|
61
|
+
mockProvider.enable.mockResolvedValue([mockAddress]);
|
|
62
|
+
await connectorInstance.connect();
|
|
63
|
+
const accounts = await connectorInstance.getAccounts();
|
|
64
|
+
expect(accounts).toEqual([mockAddress]);
|
|
65
|
+
});
|
|
66
|
+
it('should return empty array when no session exists', async () => {
|
|
67
|
+
mockProvider.session = undefined;
|
|
68
|
+
const accounts = await connectorInstance.getAccounts();
|
|
69
|
+
expect(accounts).toEqual([]);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('disconnect', () => {
|
|
73
|
+
it('should disconnect successfully', async () => {
|
|
74
|
+
mockProvider.session = mockSession;
|
|
75
|
+
await connectorInstance.connect();
|
|
76
|
+
await connectorInstance.disconnect();
|
|
77
|
+
expect(mockProvider.disconnect).toHaveBeenCalled();
|
|
78
|
+
expect(mockProvider.removeListener).toHaveBeenCalled();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('switchChain', () => {
|
|
82
|
+
it('should switch chain successfully', async () => {
|
|
83
|
+
mockProvider.request.mockResolvedValue(null);
|
|
84
|
+
const result = await connectorInstance.switchChain({ chainId: 1 });
|
|
85
|
+
expect(result).toEqual(expect.objectContaining({
|
|
86
|
+
id: 1,
|
|
87
|
+
name: 'Ethereum'
|
|
88
|
+
}));
|
|
89
|
+
expect(mockProvider.request).toHaveBeenCalledWith({
|
|
90
|
+
method: 'wallet_switchEthereumChain',
|
|
91
|
+
params: [{ chainId: '0x1' }]
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
it('should handle adding a new chain', async () => {
|
|
95
|
+
mockProvider.request.mockRejectedValueOnce(new Error('chain not found'));
|
|
96
|
+
mockProvider.request.mockResolvedValueOnce(null);
|
|
97
|
+
const result = await connectorInstance.switchChain({ chainId: 1 });
|
|
98
|
+
expect(result).toEqual(expect.objectContaining({
|
|
99
|
+
id: 1,
|
|
100
|
+
name: 'Ethereum'
|
|
101
|
+
}));
|
|
102
|
+
expect(mockProvider.request).toHaveBeenCalledWith({
|
|
103
|
+
method: 'wallet_addEthereumChain',
|
|
104
|
+
params: [
|
|
105
|
+
expect.objectContaining({
|
|
106
|
+
chainId: '0x1',
|
|
107
|
+
chainName: 'Ethereum'
|
|
108
|
+
})
|
|
109
|
+
]
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe.skip('isAuthorized', () => {
|
|
114
|
+
it('should return true when authorized', async () => {
|
|
115
|
+
const result = await connectorInstance.isAuthorized();
|
|
116
|
+
expect(result).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
it('should return false when no accounts exist', async () => {
|
|
119
|
+
mockProvider.session.namespaces.eip155.accounts = [];
|
|
120
|
+
const result = await connectorInstance.isAuthorized();
|
|
121
|
+
expect(result).toBe(false);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=UniversalConnector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UniversalConnector.test.js","sourceRoot":"","sources":["../../../../src/tests/UniversalConnector.test.ts"],"names":[],"mappings":"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"}
|