@spacesops/wdk-react-native-core 1.0.0-beta.69 → 1.0.0-beta.71

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.
Files changed (142) hide show
  1. package/dist/hooks/useBalance.js +50 -7
  2. package/dist/hooks/useBalance.js.map +1 -1
  3. package/dist/hooks/useTransactions.d.ts +21 -0
  4. package/dist/hooks/useTransactions.js +64 -0
  5. package/dist/hooks/useTransactions.js.map +1 -0
  6. package/dist/index.d.ts +5 -2
  7. package/dist/index.js +3 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/provider/WdkAppProvider.d.ts +7 -2
  10. package/dist/provider/WdkAppProvider.js +6 -1
  11. package/dist/provider/WdkAppProvider.js.map +1 -1
  12. package/dist/services/transactionService.d.ts +27 -0
  13. package/dist/services/transactionService.js +173 -0
  14. package/dist/services/transactionService.js.map +1 -0
  15. package/dist/store/indexerConfigStore.d.ts +7 -0
  16. package/dist/store/indexerConfigStore.js +14 -0
  17. package/dist/store/indexerConfigStore.js.map +1 -0
  18. package/dist/types.d.ts +39 -0
  19. package/dist/utils/constants.d.ts +18 -0
  20. package/dist/utils/constants.js +18 -0
  21. package/dist/utils/constants.js.map +1 -1
  22. package/dist/utils/mmkvKeyManager.js +3 -3
  23. package/dist/utils/mmkvKeyManager.js.map +1 -1
  24. package/dist/utils/operationMutex.js.map +1 -1
  25. package/dist/utils/retryUtils.d.ts +19 -0
  26. package/dist/utils/retryUtils.js +55 -0
  27. package/dist/utils/retryUtils.js.map +1 -0
  28. package/dist/utils/schemas.d.ts +15 -3
  29. package/dist/utils/schemas.js +27 -2
  30. package/dist/utils/schemas.js.map +1 -1
  31. package/dist/utils/typeGuards.d.ts +1 -1
  32. package/dist/utils/typeGuards.js +3 -3
  33. package/dist/utils/typeGuards.js.map +1 -1
  34. package/package.json +2 -1
  35. package/src/__tests__/services/transactionService.test.ts +22 -0
  36. package/src/hooks/useBalance.ts +2 -3
  37. package/src/services/transactionService.ts +28 -5
  38. package/src/types.ts +6 -0
  39. package/src/utils/mmkvKeyManager.ts +3 -3
  40. package/src/utils/operationMutex.ts +1 -1
  41. package/dist/__mocks__/react.d.ts +0 -40
  42. package/dist/__mocks__/react.js +0 -33
  43. package/dist/__mocks__/react.js.map +0 -1
  44. package/dist/__mocks__/secureStorage.d.ts +0 -27
  45. package/dist/__mocks__/secureStorage.js +0 -81
  46. package/dist/__mocks__/secureStorage.js.map +0 -1
  47. package/dist/__tests__/hooks/useBalance.test.d.ts +0 -6
  48. package/dist/__tests__/hooks/useBalance.test.js +0 -217
  49. package/dist/__tests__/hooks/useBalance.test.js.map +0 -1
  50. package/dist/__tests__/hooks/useWallet.test.d.ts +0 -6
  51. package/dist/__tests__/hooks/useWallet.test.js +0 -105
  52. package/dist/__tests__/hooks/useWallet.test.js.map +0 -1
  53. package/dist/__tests__/hooks/useWalletManager.test.d.ts +0 -6
  54. package/dist/__tests__/hooks/useWalletManager.test.js +0 -193
  55. package/dist/__tests__/hooks/useWalletManager.test.js.map +0 -1
  56. package/dist/__tests__/hooks/useWdkApp.test.d.ts +0 -6
  57. package/dist/__tests__/hooks/useWdkApp.test.js +0 -55
  58. package/dist/__tests__/hooks/useWdkApp.test.js.map +0 -1
  59. package/dist/__tests__/hooks/useWorklet.test.d.ts +0 -6
  60. package/dist/__tests__/hooks/useWorklet.test.js +0 -168
  61. package/dist/__tests__/hooks/useWorklet.test.js.map +0 -1
  62. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +0 -6
  63. package/dist/__tests__/provider/WdkAppProvider.test.js +0 -57
  64. package/dist/__tests__/provider/WdkAppProvider.test.js.map +0 -1
  65. package/dist/__tests__/services/accountService.test.d.ts +0 -6
  66. package/dist/__tests__/services/accountService.test.js +0 -263
  67. package/dist/__tests__/services/accountService.test.js.map +0 -1
  68. package/dist/__tests__/services/addressService.test.d.ts +0 -6
  69. package/dist/__tests__/services/addressService.test.js +0 -258
  70. package/dist/__tests__/services/addressService.test.js.map +0 -1
  71. package/dist/__tests__/services/balanceService.test.d.ts +0 -6
  72. package/dist/__tests__/services/balanceService.test.js +0 -333
  73. package/dist/__tests__/services/balanceService.test.js.map +0 -1
  74. package/dist/__tests__/services/walletSetupService.test.d.ts +0 -6
  75. package/dist/__tests__/services/walletSetupService.test.js +0 -304
  76. package/dist/__tests__/services/walletSetupService.test.js.map +0 -1
  77. package/dist/__tests__/services/walletSwitchingService.test.d.ts +0 -6
  78. package/dist/__tests__/services/walletSwitchingService.test.js +0 -209
  79. package/dist/__tests__/services/walletSwitchingService.test.js.map +0 -1
  80. package/dist/__tests__/services/workletLifecycleService.test.d.ts +0 -6
  81. package/dist/__tests__/services/workletLifecycleService.test.js +0 -451
  82. package/dist/__tests__/services/workletLifecycleService.test.js.map +0 -1
  83. package/dist/__tests__/setup.d.ts +0 -4
  84. package/dist/__tests__/setup.js +0 -49
  85. package/dist/__tests__/setup.js.map +0 -1
  86. package/dist/__tests__/storage/mmkvStorage.test.d.ts +0 -6
  87. package/dist/__tests__/storage/mmkvStorage.test.js +0 -213
  88. package/dist/__tests__/storage/mmkvStorage.test.js.map +0 -1
  89. package/dist/__tests__/store/walletStore.test.d.ts +0 -4
  90. package/dist/__tests__/store/walletStore.test.js +0 -86
  91. package/dist/__tests__/store/walletStore.test.js.map +0 -1
  92. package/dist/__tests__/store/workletStore.test.d.ts +0 -4
  93. package/dist/__tests__/store/workletStore.test.js +0 -255
  94. package/dist/__tests__/store/workletStore.test.js.map +0 -1
  95. package/dist/__tests__/types/hrpc.test.d.ts +0 -4
  96. package/dist/__tests__/types/hrpc.test.js +0 -99
  97. package/dist/__tests__/types/hrpc.test.js.map +0 -1
  98. package/dist/__tests__/utils/balanceUtils.test.d.ts +0 -4
  99. package/dist/__tests__/utils/balanceUtils.test.js +0 -133
  100. package/dist/__tests__/utils/balanceUtils.test.js.map +0 -1
  101. package/dist/__tests__/utils/errorHandling.test.d.ts +0 -6
  102. package/dist/__tests__/utils/errorHandling.test.js +0 -119
  103. package/dist/__tests__/utils/errorHandling.test.js.map +0 -1
  104. package/dist/__tests__/utils/errorUtils.test.d.ts +0 -4
  105. package/dist/__tests__/utils/errorUtils.test.js +0 -133
  106. package/dist/__tests__/utils/errorUtils.test.js.map +0 -1
  107. package/dist/__tests__/utils/initializationState.test.d.ts +0 -6
  108. package/dist/__tests__/utils/initializationState.test.js +0 -243
  109. package/dist/__tests__/utils/initializationState.test.js.map +0 -1
  110. package/dist/__tests__/utils/jsonUtils.test.d.ts +0 -4
  111. package/dist/__tests__/utils/jsonUtils.test.js +0 -118
  112. package/dist/__tests__/utils/jsonUtils.test.js.map +0 -1
  113. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +0 -6
  114. package/dist/__tests__/utils/mmkvKeyManager.test.js +0 -158
  115. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +0 -1
  116. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +0 -4
  117. package/dist/__tests__/utils/mnemonicUtils.test.js +0 -40
  118. package/dist/__tests__/utils/mnemonicUtils.test.js.map +0 -1
  119. package/dist/__tests__/utils/raceConditions.test.d.ts +0 -6
  120. package/dist/__tests__/utils/raceConditions.test.js +0 -239
  121. package/dist/__tests__/utils/raceConditions.test.js.map +0 -1
  122. package/dist/__tests__/utils/result.test.d.ts +0 -4
  123. package/dist/__tests__/utils/result.test.js +0 -66
  124. package/dist/__tests__/utils/result.test.js.map +0 -1
  125. package/dist/__tests__/utils/schemas.test.d.ts +0 -4
  126. package/dist/__tests__/utils/schemas.test.js +0 -66
  127. package/dist/__tests__/utils/schemas.test.js.map +0 -1
  128. package/dist/__tests__/utils/storeHelpers.test.d.ts +0 -4
  129. package/dist/__tests__/utils/storeHelpers.test.js +0 -227
  130. package/dist/__tests__/utils/storeHelpers.test.js.map +0 -1
  131. package/dist/__tests__/utils/typeGuards.test.d.ts +0 -4
  132. package/dist/__tests__/utils/typeGuards.test.js +0 -175
  133. package/dist/__tests__/utils/typeGuards.test.js.map +0 -1
  134. package/dist/__tests__/utils/validation.test.d.ts +0 -4
  135. package/dist/__tests__/utils/validation.test.js +0 -167
  136. package/dist/__tests__/utils/validation.test.js.map +0 -1
  137. package/dist/__tests__/utils/walletUtils.test.d.ts +0 -4
  138. package/dist/__tests__/utils/walletUtils.test.js +0 -156
  139. package/dist/__tests__/utils/walletUtils.test.js.map +0 -1
  140. package/dist/utils/types.js +0 -6
  141. package/dist/utils/utils/schemas.js +0 -173
  142. package/dist/utils/utils/validation.js +0 -151
@@ -1,263 +0,0 @@
1
- /**
2
- * Tests for AccountService
3
- *
4
- * Tests account method calls through the worklet
5
- */
6
- import { AccountService } from '../../services/accountService';
7
- import { getWorkletStore } from '../../store/workletStore';
8
- // Mock stores
9
- jest.mock('../../store/workletStore', () => ({
10
- getWorkletStore: jest.fn(),
11
- }));
12
- describe('AccountService', () => {
13
- let mockWorkletStore;
14
- let mockHRPC;
15
- beforeEach(() => {
16
- jest.clearAllMocks();
17
- // Setup mock HRPC
18
- mockHRPC = {
19
- callMethod: jest.fn(),
20
- };
21
- // Setup mock worklet store
22
- mockWorkletStore = {
23
- getState: jest.fn(() => ({
24
- isInitialized: true,
25
- hrpc: mockHRPC,
26
- })),
27
- };
28
- getWorkletStore.mockReturnValue(mockWorkletStore);
29
- });
30
- describe('callAccountMethod', () => {
31
- it('should call method and return result', async () => {
32
- const mockResult = '1000000000000000000';
33
- mockHRPC.callMethod.mockResolvedValue({
34
- result: JSON.stringify(mockResult),
35
- });
36
- const result = await AccountService.callAccountMethod('ethereum', 0, 'getBalance');
37
- expect(result).toBe(mockResult);
38
- expect(mockHRPC.callMethod).toHaveBeenCalledWith({
39
- methodName: 'getBalance',
40
- network: 'ethereum',
41
- accountIndex: 0,
42
- args: null,
43
- });
44
- });
45
- it('should handle method with arguments', async () => {
46
- const mockArgs = { message: 'Hello World' };
47
- const mockResult = { signature: '0x123' };
48
- mockHRPC.callMethod.mockResolvedValue({
49
- result: JSON.stringify(mockResult),
50
- });
51
- const result = await AccountService.callAccountMethod('ethereum', 0, 'signMessage', mockArgs);
52
- expect(result).toEqual(mockResult);
53
- expect(mockHRPC.callMethod).toHaveBeenCalledWith({
54
- methodName: 'signMessage',
55
- network: 'ethereum',
56
- accountIndex: 0,
57
- args: JSON.stringify(mockArgs),
58
- });
59
- });
60
- it('should convert BigInt values to strings', async () => {
61
- // getBalance returns a string, not an object
62
- const mockResult = '1000000000000000000';
63
- mockHRPC.callMethod.mockResolvedValue({
64
- result: JSON.stringify(mockResult),
65
- });
66
- const result = await AccountService.callAccountMethod('ethereum', 0, 'getBalance');
67
- expect(result).toBe('1000000000000000000');
68
- });
69
- it('should convert BigInt in nested objects', async () => {
70
- // Test with signMessage which can return an object
71
- const mockResult = {
72
- data: {
73
- balance: BigInt('1000000000000000000'),
74
- nested: {
75
- amount: BigInt('2000000000000000000'),
76
- },
77
- },
78
- };
79
- const jsonString = JSON.stringify(mockResult, (_, value) => (typeof value === 'bigint' ? value.toString() : value));
80
- mockHRPC.callMethod.mockResolvedValue({
81
- result: jsonString,
82
- });
83
- const result = await AccountService.callAccountMethod('ethereum', 0, 'signMessage', { message: 'test' });
84
- expect(result).toEqual({
85
- data: {
86
- balance: '1000000000000000000',
87
- nested: {
88
- amount: '2000000000000000000',
89
- },
90
- },
91
- });
92
- });
93
- it('should convert BigInt in arrays', async () => {
94
- // Test with signTransaction which can return an object with arrays
95
- const mockResult = {
96
- balances: ['1000000000000000000', '2000000000000000000'],
97
- };
98
- // Simulate BigInt in response by using a custom replacer
99
- const jsonString = JSON.stringify({
100
- balances: [BigInt('1000000000000000000'), BigInt('2000000000000000000')],
101
- }, (_, value) => (typeof value === 'bigint' ? value.toString() : value));
102
- mockHRPC.callMethod.mockResolvedValue({
103
- result: jsonString,
104
- });
105
- const result = await AccountService.callAccountMethod('ethereum', 0, 'signTransaction', { transaction: {} });
106
- expect(result).toEqual({
107
- balances: ['1000000000000000000', '2000000000000000000'],
108
- });
109
- });
110
- it('should validate methodName', async () => {
111
- await expect(AccountService.callAccountMethod('ethereum', 0, '', null)).rejects.toThrow('methodName must be a non-empty string');
112
- await expect(AccountService.callAccountMethod('ethereum', 0, ' ', null)).rejects.toThrow('methodName must be a non-empty string');
113
- });
114
- it('should accept various method names', async () => {
115
- const methods = [
116
- 'getAddress',
117
- 'getBalance',
118
- 'getTokenBalance',
119
- 'signMessage',
120
- 'signTransaction',
121
- 'sendTransaction',
122
- ];
123
- for (const method of methods) {
124
- // getBalance and getTokenBalance return strings, others can return objects
125
- const mockResult = (method === 'getBalance' || method === 'getTokenBalance')
126
- ? '1000000000000000000'
127
- : { success: true };
128
- mockHRPC.callMethod.mockResolvedValue({
129
- result: JSON.stringify(mockResult),
130
- });
131
- await expect(AccountService.callAccountMethod('ethereum', 0, method, null)).resolves.toBeDefined();
132
- }
133
- });
134
- it('should use safeStringify for args', async () => {
135
- const mockArgs = { test: 'value' };
136
- mockHRPC.callMethod.mockResolvedValue({
137
- result: JSON.stringify({ success: true }),
138
- });
139
- await AccountService.callAccountMethod('ethereum', 0, 'signMessage', mockArgs);
140
- expect(mockHRPC.callMethod).toHaveBeenCalledWith({
141
- methodName: 'signMessage',
142
- network: 'ethereum',
143
- accountIndex: 0,
144
- args: JSON.stringify(mockArgs),
145
- });
146
- });
147
- it('should reject circular references in args', async () => {
148
- const circular = { a: 1 };
149
- circular.self = circular;
150
- await expect(AccountService.callAccountMethod('ethereum', 0, 'signMessage', circular)).rejects.toThrow('circular references');
151
- });
152
- it('should validate balance response format', async () => {
153
- mockHRPC.callMethod.mockResolvedValue({
154
- result: JSON.stringify('invalid-balance-format'),
155
- });
156
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('Invalid balance format');
157
- });
158
- it('should accept valid balance response format', async () => {
159
- mockHRPC.callMethod.mockResolvedValue({
160
- result: JSON.stringify('1000000000000000000'),
161
- });
162
- const result = await AccountService.callAccountMethod('ethereum', 0, 'getBalance', null);
163
- expect(result).toBe('1000000000000000000');
164
- });
165
- it('should validate network name', async () => {
166
- await expect(AccountService.callAccountMethod('', 0, 'getBalance', null)).rejects.toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
167
- });
168
- it('should validate account index', async () => {
169
- await expect(AccountService.callAccountMethod('ethereum', -1, 'getBalance', null)).rejects.toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
170
- });
171
- it('should throw error if WDK not initialized', async () => {
172
- mockWorkletStore.getState = jest.fn(() => ({
173
- isInitialized: false,
174
- hrpc: null,
175
- }));
176
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('WDK not initialized');
177
- });
178
- it('should throw error if HRPC not available', async () => {
179
- mockWorkletStore.getState = jest.fn(() => ({
180
- isInitialized: true,
181
- hrpc: null,
182
- }));
183
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('WDK not initialized');
184
- });
185
- it('should throw error if method returns no result', async () => {
186
- // workletResponseSchema requires result to be a string, so we need to mock a response that fails schema validation
187
- mockHRPC.callMethod.mockResolvedValue({
188
- result: null,
189
- });
190
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow(/Method getBalance returned no result|Expected string/);
191
- });
192
- it('should throw error if result is null', async () => {
193
- mockHRPC.callMethod.mockResolvedValue({
194
- result: JSON.stringify(null),
195
- });
196
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('Parsed result is null or undefined');
197
- });
198
- it('should throw error if result is null', async () => {
199
- mockHRPC.callMethod.mockResolvedValue({
200
- result: JSON.stringify(null),
201
- });
202
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('Parsed result is null or undefined');
203
- });
204
- it('should throw error if JSON parsing fails', async () => {
205
- mockHRPC.callMethod.mockResolvedValue({
206
- result: 'invalid json',
207
- });
208
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow('Failed to parse result from getBalance');
209
- });
210
- it('should handle worklet call errors', async () => {
211
- mockHRPC.callMethod.mockRejectedValue(new Error('Worklet error'));
212
- await expect(AccountService.callAccountMethod('ethereum', 0, 'getBalance', null)).rejects.toThrow();
213
- });
214
- });
215
- describe('callAccountMethodByPath', () => {
216
- beforeEach(() => {
217
- mockHRPC.callMethodByPath = jest.fn();
218
- });
219
- it('should call method by path and return result', async () => {
220
- mockHRPC.callMethodByPath.mockResolvedValue({
221
- result: JSON.stringify('bc1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq'),
222
- });
223
- const result = await AccountService.callAccountMethodByPath('bitcoin', "9'/0/0", 'getAddress');
224
- expect(result).toBe('bc1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq');
225
- expect(mockHRPC.callMethodByPath).toHaveBeenCalledWith({
226
- methodName: 'getAddress',
227
- network: 'bitcoin',
228
- path: "9'/0/0",
229
- args: null,
230
- });
231
- });
232
- it('should pass string args for getScriptPubKeyHex', async () => {
233
- const address = 'bc1pqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq';
234
- mockHRPC.callMethodByPath.mockResolvedValue({
235
- result: JSON.stringify('5120abcd'),
236
- });
237
- const result = await AccountService.callAccountMethodByPath('bitcoin', "9'/0/1", 'getScriptPubKeyHex', address);
238
- expect(result).toBe('5120abcd');
239
- expect(mockHRPC.callMethodByPath).toHaveBeenCalledWith({
240
- methodName: 'getScriptPubKeyHex',
241
- network: 'bitcoin',
242
- path: "9'/0/1",
243
- args: JSON.stringify(address),
244
- });
245
- });
246
- it('should allow null JSON results (e.g. missing taproot keys)', async () => {
247
- mockHRPC.callMethodByPath.mockResolvedValue({
248
- result: JSON.stringify(null),
249
- });
250
- const result = await AccountService.callAccountMethodByPath('bitcoin', "9'/0/0", 'getTaprootKeyMaterialHex');
251
- expect(result).toBeNull();
252
- });
253
- it('should validate path and methodName', async () => {
254
- await expect(AccountService.callAccountMethodByPath('bitcoin', '', 'getAddress')).rejects.toThrow('path must be a non-empty string');
255
- await expect(AccountService.callAccountMethodByPath('bitcoin', "9'/0/0", '')).rejects.toThrow('methodName must be a non-empty string');
256
- });
257
- it('should throw if callMethodByPath is missing on HRPC', async () => {
258
- delete mockHRPC.callMethodByPath;
259
- await expect(AccountService.callAccountMethodByPath('bitcoin', "9'/0/0", 'getAddress')).rejects.toThrow(/callMethodByPath is not available/);
260
- });
261
- });
262
- });
263
- //# sourceMappingURL=accountService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accountService.test.js","sourceRoot":"","sources":["../../../src/__tests__/services/accountService.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for AddressService
3
- *
4
- * Tests address retrieval functionality
5
- */
6
- export {};
@@ -1,258 +0,0 @@
1
- /**
2
- * Tests for AddressService
3
- *
4
- * Tests address retrieval functionality
5
- */
6
- import { AddressService } from '../../services/addressService';
7
- import { getWorkletStore } from '../../store/workletStore';
8
- import { getWalletStore } from '../../store/walletStore';
9
- // Mock stores
10
- jest.mock('../../store/workletStore', () => ({
11
- getWorkletStore: jest.fn(),
12
- }));
13
- jest.mock('../../store/walletStore', () => ({
14
- getWalletStore: jest.fn(),
15
- }));
16
- describe('AddressService', () => {
17
- let mockWorkletStore;
18
- let mockWalletStore;
19
- let mockHRPC;
20
- beforeEach(() => {
21
- jest.clearAllMocks();
22
- // Setup mock HRPC
23
- mockHRPC = {
24
- callMethod: jest.fn(),
25
- };
26
- // Setup mock worklet store
27
- mockWorkletStore = {
28
- getState: jest.fn(() => ({
29
- isInitialized: true,
30
- hrpc: mockHRPC,
31
- isWorkletStarted: true,
32
- })),
33
- };
34
- // Setup mock wallet store
35
- mockWalletStore = {
36
- getState: jest.fn(() => ({
37
- addresses: {},
38
- walletLoading: {},
39
- activeWalletId: 'test-wallet-1',
40
- })),
41
- setState: jest.fn(),
42
- };
43
- getWorkletStore.mockReturnValue(mockWorkletStore);
44
- getWalletStore.mockReturnValue(mockWalletStore);
45
- });
46
- describe('getAddress', () => {
47
- it('should get address from worklet and cache it', async () => {
48
- const mockAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
49
- mockHRPC.callMethod.mockResolvedValue({
50
- result: JSON.stringify(mockAddress),
51
- });
52
- const address = await AddressService.getAddress('ethereum', 0);
53
- expect(address).toBe(mockAddress);
54
- expect(mockHRPC.callMethod).toHaveBeenCalledWith({
55
- methodName: 'getAddress',
56
- network: 'ethereum',
57
- accountIndex: 0,
58
- args: null,
59
- });
60
- // Verify address was cached
61
- expect(mockWalletStore.setState).toHaveBeenCalledWith(expect.any(Function));
62
- // Verify the state update function
63
- const setStateCall = mockWalletStore.setState.mock.calls.find((call) => {
64
- const stateUpdater = call[0];
65
- if (typeof stateUpdater === 'function') {
66
- const prevState = {
67
- addresses: {},
68
- walletLoading: {},
69
- activeWalletId: 'test-wallet-1',
70
- };
71
- const newState = stateUpdater(prevState);
72
- return newState.addresses?.['test-wallet-1']?.ethereum?.[0] === mockAddress;
73
- }
74
- return false;
75
- });
76
- expect(setStateCall).toBeDefined();
77
- });
78
- it('should return cached address if available', async () => {
79
- const cachedAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
80
- mockWalletStore.getState = jest.fn(() => ({
81
- addresses: {
82
- 'test-wallet-1': {
83
- ethereum: {
84
- 0: cachedAddress,
85
- },
86
- },
87
- },
88
- walletLoading: {},
89
- activeWalletId: 'test-wallet-1',
90
- }));
91
- const address = await AddressService.getAddress('ethereum', 0);
92
- expect(address).toBe(cachedAddress);
93
- // Should not call HRPC if cached
94
- expect(mockHRPC.callMethod).not.toHaveBeenCalled();
95
- });
96
- it('should handle different networks', async () => {
97
- const ethereumAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
98
- const polygonAddress = '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
99
- mockHRPC.callMethod
100
- .mockResolvedValueOnce({
101
- result: JSON.stringify(ethereumAddress),
102
- })
103
- .mockResolvedValueOnce({
104
- result: JSON.stringify(polygonAddress),
105
- });
106
- const ethAddr = await AddressService.getAddress('ethereum', 0);
107
- const polyAddr = await AddressService.getAddress('polygon', 0);
108
- expect(ethAddr).toBe(ethereumAddress);
109
- expect(polyAddr).toBe(polygonAddress);
110
- expect(mockHRPC.callMethod).toHaveBeenCalledTimes(2);
111
- });
112
- it('should accept Bitcoin bech32 addresses from the worklet', async () => {
113
- const bitcoinAddress = 'bc1qvm72xsn3x6gga6lavtf6qefswxzkp76xz4z98j';
114
- mockHRPC.callMethod.mockResolvedValueOnce({
115
- result: JSON.stringify(bitcoinAddress),
116
- });
117
- const address = await AddressService.getAddress('bitcoin', 0);
118
- expect(address).toBe(bitcoinAddress);
119
- expect(mockHRPC.callMethod).toHaveBeenCalledWith(expect.objectContaining({
120
- network: 'bitcoin',
121
- accountIndex: 0,
122
- }));
123
- });
124
- it('should handle different account indices', async () => {
125
- const address0 = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
126
- const address1 = '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
127
- mockHRPC.callMethod
128
- .mockResolvedValueOnce({
129
- result: JSON.stringify(address0),
130
- })
131
- .mockResolvedValueOnce({
132
- result: JSON.stringify(address1),
133
- });
134
- const addr0 = await AddressService.getAddress('ethereum', 0);
135
- const addr1 = await AddressService.getAddress('ethereum', 1);
136
- expect(addr0).toBe(address0);
137
- expect(addr1).toBe(address1);
138
- expect(mockHRPC.callMethod).toHaveBeenCalledWith(expect.objectContaining({
139
- network: 'ethereum',
140
- accountIndex: 0,
141
- }));
142
- expect(mockHRPC.callMethod).toHaveBeenCalledWith(expect.objectContaining({
143
- network: 'ethereum',
144
- accountIndex: 1,
145
- }));
146
- });
147
- it('should throw error if WDK not initialized', async () => {
148
- mockWorkletStore.getState = jest.fn(() => ({
149
- isInitialized: false,
150
- hrpc: null,
151
- }));
152
- mockWalletStore.getState = jest.fn(() => ({
153
- addresses: {},
154
- walletLoading: {},
155
- activeWalletId: 'test-wallet-1',
156
- }));
157
- await expect(AddressService.getAddress('ethereum', 0)).rejects.toThrow('WDK not initialized');
158
- });
159
- it('should throw error if HRPC not available', async () => {
160
- mockWorkletStore.getState = jest.fn(() => ({
161
- isInitialized: true,
162
- hrpc: null,
163
- }));
164
- mockWalletStore.getState = jest.fn(() => ({
165
- addresses: {},
166
- walletLoading: {},
167
- activeWalletId: 'test-wallet-1',
168
- }));
169
- await expect(AddressService.getAddress('ethereum', 0)).rejects.toThrow('WDK not initialized');
170
- });
171
- it('should throw error if worklet call fails', async () => {
172
- mockHRPC.callMethod.mockRejectedValue(new Error('Worklet error'));
173
- await expect(AddressService.getAddress('ethereum', 0)).rejects.toThrow();
174
- });
175
- it('should throw error if worklet returns no result', async () => {
176
- mockHRPC.callMethod.mockResolvedValue({
177
- result: null,
178
- });
179
- mockWalletStore.getState = jest.fn(() => ({
180
- addresses: {},
181
- walletLoading: {},
182
- activeWalletId: 'test-wallet-1',
183
- }));
184
- await expect(AddressService.getAddress('ethereum', 0)).rejects.toThrow(/Failed to get address|Expected string/);
185
- });
186
- it('should validate network name', async () => {
187
- await expect(AddressService.getAddress('', 0)).rejects.toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
188
- });
189
- it('should validate account index', async () => {
190
- await expect(AddressService.getAddress('ethereum', -1)).rejects.toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
191
- });
192
- it('should handle all networks from the configuration', async () => {
193
- const networks = ['ethereum', 'polygon', 'arbitrum', 'sepolia', 'plasma', 'spark'];
194
- // Use valid Ethereum address for most networks, Spark address for spark
195
- const mockEthereumAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
196
- const mockSparkAddress = 'spark1abcdefghijklmnopqrstuvwxyz123456';
197
- for (const network of networks) {
198
- const mockAddress = network === 'spark' ? mockSparkAddress : mockEthereumAddress;
199
- mockHRPC.callMethod.mockResolvedValueOnce({
200
- result: JSON.stringify(mockAddress),
201
- });
202
- const address = await AddressService.getAddress(network, 0);
203
- expect(address).toBe(mockAddress);
204
- expect(mockHRPC.callMethod).toHaveBeenCalledWith(expect.objectContaining({
205
- network,
206
- accountIndex: 0,
207
- }));
208
- }
209
- expect(mockHRPC.callMethod).toHaveBeenCalledTimes(networks.length);
210
- });
211
- it('should set loading state during address fetch', async () => {
212
- const mockAddress = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
213
- mockHRPC.callMethod.mockResolvedValue({
214
- result: JSON.stringify(mockAddress),
215
- });
216
- await AddressService.getAddress('ethereum', 0);
217
- // Verify loading state was set to true, then false
218
- const setStateCalls = mockWalletStore.setState.mock.calls;
219
- expect(setStateCalls.length).toBeGreaterThan(0);
220
- // Track state changes - start with initial state
221
- let currentState = {
222
- walletLoading: {},
223
- addresses: {},
224
- balanceLoading: {},
225
- lastBalanceUpdate: {},
226
- balances: {},
227
- activeWalletId: 'test-wallet-1',
228
- };
229
- let loadingWasSetToTrue = false;
230
- let loadingWasSetToFalse = false;
231
- for (const call of setStateCalls) {
232
- const stateUpdater = call[0];
233
- if (typeof stateUpdater === 'function') {
234
- // Ensure all required state properties exist
235
- const prevState = {
236
- walletLoading: currentState.walletLoading || {},
237
- addresses: currentState.addresses || {},
238
- balanceLoading: currentState.balanceLoading || {},
239
- lastBalanceUpdate: currentState.lastBalanceUpdate || {},
240
- balances: currentState.balances || {},
241
- activeWalletId: currentState.activeWalletId || 'test-wallet-1',
242
- };
243
- currentState = { ...prevState, ...stateUpdater(prevState) };
244
- // Loading state is now per-wallet: walletLoading[walletId][loadingKey]
245
- if (currentState.walletLoading?.['test-wallet-1']?.['ethereum-0'] === true) {
246
- loadingWasSetToTrue = true;
247
- }
248
- if (currentState.walletLoading?.['test-wallet-1']?.['ethereum-0'] === false) {
249
- loadingWasSetToFalse = true;
250
- }
251
- }
252
- }
253
- expect(loadingWasSetToTrue).toBe(true);
254
- expect(loadingWasSetToFalse).toBe(true);
255
- });
256
- });
257
- });
258
- //# sourceMappingURL=addressService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addressService.test.js","sourceRoot":"","sources":["../../../src/__tests__/services/addressService.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for BalanceService
3
- *
4
- * Tests balance operations: getting, setting, updating, and managing balance state
5
- */
6
- export {};