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

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 (140) 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 +154 -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 +33 -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/hooks/useBalance.ts +2 -3
  36. package/src/services/transactionService.ts +2 -1
  37. package/src/utils/mmkvKeyManager.ts +3 -3
  38. package/src/utils/operationMutex.ts +1 -1
  39. package/dist/__mocks__/react.d.ts +0 -40
  40. package/dist/__mocks__/react.js +0 -33
  41. package/dist/__mocks__/react.js.map +0 -1
  42. package/dist/__mocks__/secureStorage.d.ts +0 -27
  43. package/dist/__mocks__/secureStorage.js +0 -81
  44. package/dist/__mocks__/secureStorage.js.map +0 -1
  45. package/dist/__tests__/hooks/useBalance.test.d.ts +0 -6
  46. package/dist/__tests__/hooks/useBalance.test.js +0 -217
  47. package/dist/__tests__/hooks/useBalance.test.js.map +0 -1
  48. package/dist/__tests__/hooks/useWallet.test.d.ts +0 -6
  49. package/dist/__tests__/hooks/useWallet.test.js +0 -105
  50. package/dist/__tests__/hooks/useWallet.test.js.map +0 -1
  51. package/dist/__tests__/hooks/useWalletManager.test.d.ts +0 -6
  52. package/dist/__tests__/hooks/useWalletManager.test.js +0 -193
  53. package/dist/__tests__/hooks/useWalletManager.test.js.map +0 -1
  54. package/dist/__tests__/hooks/useWdkApp.test.d.ts +0 -6
  55. package/dist/__tests__/hooks/useWdkApp.test.js +0 -55
  56. package/dist/__tests__/hooks/useWdkApp.test.js.map +0 -1
  57. package/dist/__tests__/hooks/useWorklet.test.d.ts +0 -6
  58. package/dist/__tests__/hooks/useWorklet.test.js +0 -168
  59. package/dist/__tests__/hooks/useWorklet.test.js.map +0 -1
  60. package/dist/__tests__/provider/WdkAppProvider.test.d.ts +0 -6
  61. package/dist/__tests__/provider/WdkAppProvider.test.js +0 -57
  62. package/dist/__tests__/provider/WdkAppProvider.test.js.map +0 -1
  63. package/dist/__tests__/services/accountService.test.d.ts +0 -6
  64. package/dist/__tests__/services/accountService.test.js +0 -263
  65. package/dist/__tests__/services/accountService.test.js.map +0 -1
  66. package/dist/__tests__/services/addressService.test.d.ts +0 -6
  67. package/dist/__tests__/services/addressService.test.js +0 -258
  68. package/dist/__tests__/services/addressService.test.js.map +0 -1
  69. package/dist/__tests__/services/balanceService.test.d.ts +0 -6
  70. package/dist/__tests__/services/balanceService.test.js +0 -333
  71. package/dist/__tests__/services/balanceService.test.js.map +0 -1
  72. package/dist/__tests__/services/walletSetupService.test.d.ts +0 -6
  73. package/dist/__tests__/services/walletSetupService.test.js +0 -304
  74. package/dist/__tests__/services/walletSetupService.test.js.map +0 -1
  75. package/dist/__tests__/services/walletSwitchingService.test.d.ts +0 -6
  76. package/dist/__tests__/services/walletSwitchingService.test.js +0 -209
  77. package/dist/__tests__/services/walletSwitchingService.test.js.map +0 -1
  78. package/dist/__tests__/services/workletLifecycleService.test.d.ts +0 -6
  79. package/dist/__tests__/services/workletLifecycleService.test.js +0 -451
  80. package/dist/__tests__/services/workletLifecycleService.test.js.map +0 -1
  81. package/dist/__tests__/setup.d.ts +0 -4
  82. package/dist/__tests__/setup.js +0 -49
  83. package/dist/__tests__/setup.js.map +0 -1
  84. package/dist/__tests__/storage/mmkvStorage.test.d.ts +0 -6
  85. package/dist/__tests__/storage/mmkvStorage.test.js +0 -213
  86. package/dist/__tests__/storage/mmkvStorage.test.js.map +0 -1
  87. package/dist/__tests__/store/walletStore.test.d.ts +0 -4
  88. package/dist/__tests__/store/walletStore.test.js +0 -86
  89. package/dist/__tests__/store/walletStore.test.js.map +0 -1
  90. package/dist/__tests__/store/workletStore.test.d.ts +0 -4
  91. package/dist/__tests__/store/workletStore.test.js +0 -255
  92. package/dist/__tests__/store/workletStore.test.js.map +0 -1
  93. package/dist/__tests__/types/hrpc.test.d.ts +0 -4
  94. package/dist/__tests__/types/hrpc.test.js +0 -99
  95. package/dist/__tests__/types/hrpc.test.js.map +0 -1
  96. package/dist/__tests__/utils/balanceUtils.test.d.ts +0 -4
  97. package/dist/__tests__/utils/balanceUtils.test.js +0 -133
  98. package/dist/__tests__/utils/balanceUtils.test.js.map +0 -1
  99. package/dist/__tests__/utils/errorHandling.test.d.ts +0 -6
  100. package/dist/__tests__/utils/errorHandling.test.js +0 -119
  101. package/dist/__tests__/utils/errorHandling.test.js.map +0 -1
  102. package/dist/__tests__/utils/errorUtils.test.d.ts +0 -4
  103. package/dist/__tests__/utils/errorUtils.test.js +0 -133
  104. package/dist/__tests__/utils/errorUtils.test.js.map +0 -1
  105. package/dist/__tests__/utils/initializationState.test.d.ts +0 -6
  106. package/dist/__tests__/utils/initializationState.test.js +0 -243
  107. package/dist/__tests__/utils/initializationState.test.js.map +0 -1
  108. package/dist/__tests__/utils/jsonUtils.test.d.ts +0 -4
  109. package/dist/__tests__/utils/jsonUtils.test.js +0 -118
  110. package/dist/__tests__/utils/jsonUtils.test.js.map +0 -1
  111. package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +0 -6
  112. package/dist/__tests__/utils/mmkvKeyManager.test.js +0 -158
  113. package/dist/__tests__/utils/mmkvKeyManager.test.js.map +0 -1
  114. package/dist/__tests__/utils/mnemonicUtils.test.d.ts +0 -4
  115. package/dist/__tests__/utils/mnemonicUtils.test.js +0 -40
  116. package/dist/__tests__/utils/mnemonicUtils.test.js.map +0 -1
  117. package/dist/__tests__/utils/raceConditions.test.d.ts +0 -6
  118. package/dist/__tests__/utils/raceConditions.test.js +0 -239
  119. package/dist/__tests__/utils/raceConditions.test.js.map +0 -1
  120. package/dist/__tests__/utils/result.test.d.ts +0 -4
  121. package/dist/__tests__/utils/result.test.js +0 -66
  122. package/dist/__tests__/utils/result.test.js.map +0 -1
  123. package/dist/__tests__/utils/schemas.test.d.ts +0 -4
  124. package/dist/__tests__/utils/schemas.test.js +0 -66
  125. package/dist/__tests__/utils/schemas.test.js.map +0 -1
  126. package/dist/__tests__/utils/storeHelpers.test.d.ts +0 -4
  127. package/dist/__tests__/utils/storeHelpers.test.js +0 -227
  128. package/dist/__tests__/utils/storeHelpers.test.js.map +0 -1
  129. package/dist/__tests__/utils/typeGuards.test.d.ts +0 -4
  130. package/dist/__tests__/utils/typeGuards.test.js +0 -175
  131. package/dist/__tests__/utils/typeGuards.test.js.map +0 -1
  132. package/dist/__tests__/utils/validation.test.d.ts +0 -4
  133. package/dist/__tests__/utils/validation.test.js +0 -167
  134. package/dist/__tests__/utils/validation.test.js.map +0 -1
  135. package/dist/__tests__/utils/walletUtils.test.d.ts +0 -4
  136. package/dist/__tests__/utils/walletUtils.test.js +0 -156
  137. package/dist/__tests__/utils/walletUtils.test.js.map +0 -1
  138. package/dist/utils/types.js +0 -6
  139. package/dist/utils/utils/schemas.js +0 -173
  140. package/dist/utils/utils/validation.js +0 -151
@@ -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 {};
@@ -1,333 +0,0 @@
1
- /**
2
- * Tests for BalanceService
3
- *
4
- * Tests balance operations: getting, setting, updating, and managing balance state
5
- */
6
- import { BalanceService } from '../../services/balanceService';
7
- import { getWalletStore } from '../../store/walletStore';
8
- // Mock stores
9
- jest.mock('../../store/walletStore', () => ({
10
- getWalletStore: jest.fn(),
11
- }));
12
- describe('BalanceService', () => {
13
- let mockWalletStore;
14
- beforeEach(() => {
15
- jest.clearAllMocks();
16
- // Setup mock wallet store
17
- mockWalletStore = {
18
- getState: jest.fn(() => ({
19
- balances: {},
20
- balanceLoading: {},
21
- lastBalanceUpdate: {},
22
- activeWalletId: 'test-wallet-1',
23
- })),
24
- setState: jest.fn(),
25
- };
26
- getWalletStore.mockReturnValue(mockWalletStore);
27
- });
28
- describe('updateBalance', () => {
29
- it('should update native balance', () => {
30
- BalanceService.updateBalance(0, 'ethereum', null, '1000000000000000000');
31
- expect(mockWalletStore.setState).toHaveBeenCalled();
32
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
33
- const prevState = { balances: {}, activeWalletId: 'test-wallet-1' };
34
- const newState = setStateCall(prevState);
35
- expect(newState.balances['test-wallet-1']?.ethereum?.[0]?.native).toBe('1000000000000000000');
36
- });
37
- it('should update token balance', () => {
38
- BalanceService.updateBalance(0, 'ethereum', '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0', '2000000000000000000');
39
- expect(mockWalletStore.setState).toHaveBeenCalled();
40
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
41
- const prevState = { balances: {}, activeWalletId: 'test-wallet-1' };
42
- const newState = setStateCall(prevState);
43
- const tokenKey = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
44
- expect(newState.balances?.['test-wallet-1']?.ethereum?.[0]?.[tokenKey]).toBe('2000000000000000000');
45
- });
46
- it('should preserve existing balances', () => {
47
- const prevState = {
48
- balances: {
49
- 'test-wallet-1': {
50
- ethereum: {
51
- 0: {
52
- native: '1000000000000000000',
53
- },
54
- },
55
- },
56
- },
57
- activeWalletId: 'test-wallet-1',
58
- };
59
- BalanceService.updateBalance(0, 'ethereum', '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0', '2000000000000000000');
60
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
61
- const newState = setStateCall(prevState);
62
- expect(newState.balances['test-wallet-1']?.ethereum?.[0]?.native).toBe('1000000000000000000');
63
- expect(newState.balances['test-wallet-1']?.ethereum?.[0]?.['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0']).toBe('2000000000000000000');
64
- });
65
- it('should validate network name', () => {
66
- expect(() => {
67
- BalanceService.updateBalance(0, '', null, '100');
68
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
69
- });
70
- it('should validate account index', () => {
71
- expect(() => {
72
- BalanceService.updateBalance(-1, 'ethereum', null, '100');
73
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
74
- });
75
- it('should validate balance', () => {
76
- expect(() => {
77
- BalanceService.updateBalance(0, 'ethereum', null, '');
78
- }).toThrow(/balance.*valid number|Balance must be a valid number string/);
79
- });
80
- });
81
- describe('getBalance', () => {
82
- it('should get native balance', () => {
83
- mockWalletStore.getState = jest.fn(() => ({
84
- balances: {
85
- 'test-wallet-1': {
86
- ethereum: {
87
- 0: {
88
- native: '1000000000000000000',
89
- },
90
- },
91
- },
92
- },
93
- activeWalletId: 'test-wallet-1',
94
- }));
95
- const balance = BalanceService.getBalance(0, 'ethereum', null);
96
- expect(balance).toBe('1000000000000000000');
97
- });
98
- it('should get token balance', () => {
99
- mockWalletStore.getState = jest.fn(() => ({
100
- balances: {
101
- 'test-wallet-1': {
102
- ethereum: {
103
- 0: {
104
- native: '1000000000000000000',
105
- '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0': '2000000000000000000',
106
- },
107
- },
108
- },
109
- },
110
- activeWalletId: 'test-wallet-1',
111
- }));
112
- const balance = BalanceService.getBalance(0, 'ethereum', '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
113
- expect(balance).toBe('2000000000000000000');
114
- });
115
- it('should return null if balance not found', () => {
116
- mockWalletStore.getState = jest.fn(() => ({
117
- balances: {},
118
- activeWalletId: 'test-wallet-1',
119
- }));
120
- const balance = BalanceService.getBalance(0, 'ethereum', null);
121
- expect(balance).toBe(null);
122
- });
123
- it('should validate network name', () => {
124
- expect(() => {
125
- BalanceService.getBalance(0, '', null);
126
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
127
- });
128
- it('should validate account index', () => {
129
- expect(() => {
130
- BalanceService.getBalance(-1, 'ethereum', null);
131
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
132
- });
133
- });
134
- describe('getBalancesForWallet', () => {
135
- it('should get all balances for wallet', () => {
136
- mockWalletStore.getState = jest.fn(() => ({
137
- balances: {
138
- 'test-wallet-1': {
139
- ethereum: {
140
- 0: {
141
- native: '1000000000000000000',
142
- '0x123': '2000000000000000000',
143
- },
144
- },
145
- },
146
- },
147
- activeWalletId: 'test-wallet-1',
148
- }));
149
- const balances = BalanceService.getBalancesForWallet(0, 'ethereum');
150
- expect(balances).toEqual({
151
- native: '1000000000000000000',
152
- '0x123': '2000000000000000000',
153
- });
154
- });
155
- it('should return null if no balances found', () => {
156
- mockWalletStore.getState = jest.fn(() => ({
157
- balances: {},
158
- activeWalletId: 'test-wallet-1',
159
- }));
160
- const balances = BalanceService.getBalancesForWallet(0, 'ethereum');
161
- expect(balances).toBe(null);
162
- });
163
- it('should validate network name', () => {
164
- expect(() => {
165
- BalanceService.getBalancesForWallet(0, '');
166
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
167
- });
168
- it('should validate account index', () => {
169
- expect(() => {
170
- BalanceService.getBalancesForWallet(-1, 'ethereum');
171
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
172
- });
173
- });
174
- describe('setBalanceLoading', () => {
175
- it('should set loading to true', () => {
176
- BalanceService.setBalanceLoading('ethereum', 0, null, true);
177
- expect(mockWalletStore.setState).toHaveBeenCalled();
178
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
179
- const prevState = { balanceLoading: {}, activeWalletId: 'test-wallet-1' };
180
- const newState = setStateCall(prevState);
181
- expect(newState.balanceLoading['test-wallet-1']?.['ethereum-0-native']).toBe(true);
182
- });
183
- it('should set loading to false', () => {
184
- const prevState = {
185
- balanceLoading: {
186
- 'test-wallet-1': {
187
- 'ethereum-0-native': true,
188
- },
189
- },
190
- activeWalletId: 'test-wallet-1',
191
- };
192
- BalanceService.setBalanceLoading('ethereum', 0, null, false);
193
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
194
- const newState = setStateCall(prevState);
195
- expect(newState.balanceLoading['test-wallet-1']?.['ethereum-0-native']).toBeUndefined();
196
- });
197
- it('should handle token loading state', () => {
198
- BalanceService.setBalanceLoading('ethereum', 0, '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0', true);
199
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
200
- const prevState = { balanceLoading: {}, activeWalletId: 'test-wallet-1' };
201
- const newState = setStateCall(prevState);
202
- expect(newState.balanceLoading['test-wallet-1']?.['ethereum-0-0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0']).toBe(true);
203
- });
204
- it('should validate network name', () => {
205
- expect(() => {
206
- BalanceService.setBalanceLoading('', 0, null, true);
207
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
208
- });
209
- it('should validate account index', () => {
210
- expect(() => {
211
- BalanceService.setBalanceLoading('ethereum', -1, null, true);
212
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
213
- });
214
- });
215
- describe('isBalanceLoading', () => {
216
- it('should return true if balance is loading', () => {
217
- mockWalletStore.getState = jest.fn(() => ({
218
- balanceLoading: {
219
- 'test-wallet-1': {
220
- 'ethereum-0-native': true,
221
- },
222
- },
223
- activeWalletId: 'test-wallet-1',
224
- }));
225
- const isLoading = BalanceService.isBalanceLoading('ethereum', 0, null);
226
- expect(isLoading).toBe(true);
227
- });
228
- it('should return false if balance is not loading', () => {
229
- mockWalletStore.getState = jest.fn(() => ({
230
- balanceLoading: {},
231
- activeWalletId: 'test-wallet-1',
232
- }));
233
- const isLoading = BalanceService.isBalanceLoading('ethereum', 0, null);
234
- expect(isLoading).toBe(false);
235
- });
236
- it('should validate network name', () => {
237
- expect(() => {
238
- BalanceService.isBalanceLoading('', 0, null);
239
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
240
- });
241
- it('should validate account index', () => {
242
- expect(() => {
243
- BalanceService.isBalanceLoading('ethereum', -1, null);
244
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
245
- });
246
- });
247
- describe('updateLastBalanceUpdate', () => {
248
- it('should update last balance update timestamp', () => {
249
- const beforeTime = Date.now();
250
- BalanceService.updateLastBalanceUpdate('ethereum', 0);
251
- const afterTime = Date.now();
252
- expect(mockWalletStore.setState).toHaveBeenCalled();
253
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
254
- const prevState = { lastBalanceUpdate: {}, activeWalletId: 'test-wallet-1' };
255
- const newState = setStateCall(prevState);
256
- const timestamp = newState.lastBalanceUpdate['test-wallet-1']?.ethereum?.[0];
257
- expect(timestamp).toBeGreaterThanOrEqual(beforeTime);
258
- expect(timestamp).toBeLessThanOrEqual(afterTime);
259
- });
260
- it('should preserve existing timestamps', () => {
261
- const prevState = {
262
- lastBalanceUpdate: {
263
- 'test-wallet-1': {
264
- polygon: {
265
- 0: 1234567890,
266
- },
267
- },
268
- },
269
- activeWalletId: 'test-wallet-1',
270
- };
271
- BalanceService.updateLastBalanceUpdate('ethereum', 0);
272
- const setStateCall = mockWalletStore.setState.mock.calls[0][0];
273
- const newState = setStateCall(prevState);
274
- expect(newState.lastBalanceUpdate['test-wallet-1']?.polygon?.[0]).toBe(1234567890);
275
- expect(newState.lastBalanceUpdate['test-wallet-1']?.ethereum?.[0]).toBeDefined();
276
- });
277
- it('should validate network name', () => {
278
- expect(() => {
279
- BalanceService.updateLastBalanceUpdate('', 0);
280
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
281
- });
282
- it('should validate account index', () => {
283
- expect(() => {
284
- BalanceService.updateLastBalanceUpdate('ethereum', -1);
285
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
286
- });
287
- });
288
- describe('getLastBalanceUpdate', () => {
289
- it('should get last balance update timestamp', () => {
290
- const timestamp = 1234567890;
291
- mockWalletStore.getState = jest.fn(() => ({
292
- lastBalanceUpdate: {
293
- 'test-wallet-1': {
294
- ethereum: {
295
- 0: timestamp,
296
- },
297
- },
298
- },
299
- activeWalletId: 'test-wallet-1',
300
- }));
301
- const result = BalanceService.getLastBalanceUpdate('ethereum', 0);
302
- expect(result).toBe(timestamp);
303
- });
304
- it('should return null if timestamp not found', () => {
305
- mockWalletStore.getState = jest.fn(() => ({
306
- lastBalanceUpdate: {},
307
- }));
308
- const result = BalanceService.getLastBalanceUpdate('ethereum', 0);
309
- expect(result).toBe(null);
310
- });
311
- it('should validate network name', () => {
312
- expect(() => {
313
- BalanceService.getLastBalanceUpdate('', 0);
314
- }).toThrow(/network.*non-empty|Network name must contain only|String must contain at least 1 character/);
315
- });
316
- it('should validate account index', () => {
317
- expect(() => {
318
- BalanceService.getLastBalanceUpdate('ethereum', -1);
319
- }).toThrow(/accountIndex.*non-negative|Number must be greater than or equal to 0/);
320
- });
321
- });
322
- describe('clearBalances', () => {
323
- it('should clear all balances', () => {
324
- BalanceService.clearBalances();
325
- expect(mockWalletStore.setState).toHaveBeenCalledWith({
326
- balances: {},
327
- balanceLoading: {},
328
- lastBalanceUpdate: {},
329
- });
330
- });
331
- });
332
- });
333
- //# sourceMappingURL=balanceService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balanceService.test.js","sourceRoot":"","sources":["../../../src/__tests__/services/balanceService.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Tests for WalletSetupService
3
- *
4
- * Tests wallet creation, loading, and identifier-based multi-wallet support
5
- */
6
- export {};