@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,239 +0,0 @@
1
- /**
2
- * Tests for race conditions in wallet operations
3
- *
4
- * Tests concurrent operations, state synchronization, and mutex behavior
5
- */
6
- import { WalletSwitchingService } from '../../services/walletSwitchingService';
7
- import { getWalletStore } from '../../store/walletStore';
8
- import { acquireOperationMutex, withOperationMutex, isOperationInProgress } from '../../utils/operationMutex';
9
- // Mock dependencies
10
- jest.mock('../../services/walletSetupService', () => ({
11
- WalletSetupService: {
12
- hasWallet: jest.fn(),
13
- loadExistingWallet: jest.fn(),
14
- clearCredentialsCache: jest.fn(),
15
- },
16
- }));
17
- jest.mock('../../services/workletLifecycleService', () => ({
18
- WorkletLifecycleService: {
19
- ensureWorkletStarted: jest.fn(),
20
- initializeWDK: jest.fn(),
21
- },
22
- }));
23
- jest.mock('../../store/walletStore', () => {
24
- const actual = jest.requireActual('../../store/walletStore');
25
- return {
26
- ...actual,
27
- getWalletStore: jest.fn(),
28
- };
29
- });
30
- jest.mock('../../utils/logger', () => ({
31
- log: jest.fn(),
32
- logError: jest.fn(),
33
- logWarn: jest.fn(),
34
- }));
35
- describe('Race Conditions', () => {
36
- let mockWalletStore;
37
- beforeEach(() => {
38
- jest.clearAllMocks();
39
- mockWalletStore = {
40
- getState: jest.fn(() => ({
41
- activeWalletId: null,
42
- walletLoadingState: { type: 'not_loaded' },
43
- isOperationInProgress: false,
44
- currentOperation: null,
45
- })),
46
- setState: jest.fn((updater) => {
47
- const currentState = mockWalletStore.getState();
48
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
49
- const updatedState = { ...currentState, ...newState };
50
- mockWalletStore.getState.mockReturnValue(updatedState);
51
- }),
52
- };
53
- getWalletStore.mockReturnValue(mockWalletStore);
54
- });
55
- describe('Operation Mutex', () => {
56
- it('should prevent concurrent operations', () => {
57
- const mutex1 = acquireOperationMutex('operation1');
58
- expect(mutex1.acquired).toBe(true);
59
- expect(isOperationInProgress()).toBe(true);
60
- const mutex2 = acquireOperationMutex('operation2');
61
- expect(mutex2.acquired).toBe(false);
62
- expect(mutex2.currentOperation).toBe('operation1');
63
- mutex1.release();
64
- expect(isOperationInProgress()).toBe(false);
65
- const mutex3 = acquireOperationMutex('operation2');
66
- expect(mutex3.acquired).toBe(true);
67
- });
68
- it('should allow operation after release', () => {
69
- const mutex1 = acquireOperationMutex('operation1');
70
- expect(mutex1.acquired).toBe(true);
71
- mutex1.release();
72
- expect(isOperationInProgress()).toBe(false);
73
- const mutex2 = acquireOperationMutex('operation2');
74
- expect(mutex2.acquired).toBe(true);
75
- });
76
- it('should prevent release of wrong operation', () => {
77
- const mutex1 = acquireOperationMutex('operation1');
78
- expect(mutex1.acquired).toBe(true);
79
- const mutex2 = acquireOperationMutex('operation2');
80
- expect(mutex2.acquired).toBe(false);
81
- // Try to release with wrong operation - should be no-op
82
- mutex2.release();
83
- expect(isOperationInProgress()).toBe(true);
84
- // Correct release
85
- mutex1.release();
86
- expect(isOperationInProgress()).toBe(false);
87
- });
88
- it('should handle withOperationMutex correctly', async () => {
89
- const operation = jest.fn().mockResolvedValue('result');
90
- const result = await withOperationMutex('test-operation', operation);
91
- expect(result).toBe('result');
92
- expect(operation).toHaveBeenCalledTimes(1);
93
- expect(isOperationInProgress()).toBe(false);
94
- });
95
- it('should prevent concurrent withOperationMutex calls', async () => {
96
- let operation1Resolved = false;
97
- let operation2Resolved = false;
98
- const operation1 = jest.fn().mockImplementation(async () => {
99
- await new Promise((resolve) => setTimeout(resolve, 100));
100
- operation1Resolved = true;
101
- return 'result1';
102
- });
103
- const operation2 = jest.fn().mockImplementation(async () => {
104
- await new Promise((resolve) => setTimeout(resolve, 50));
105
- operation2Resolved = true;
106
- return 'result2';
107
- });
108
- // Start both operations concurrently
109
- const promise1 = withOperationMutex('test-operation', operation1);
110
- const promise2 = withOperationMutex('test-operation', operation2);
111
- // Second operation should be blocked
112
- await expect(promise2).rejects.toThrow('Another operation is in progress');
113
- // First operation should complete
114
- const result1 = await promise1;
115
- expect(result1).toBe('result1');
116
- expect(operation1Resolved).toBe(true);
117
- expect(operation2Resolved).toBe(false);
118
- expect(operation2).not.toHaveBeenCalled();
119
- });
120
- });
121
- describe('Wallet Switching Race Conditions', () => {
122
- it('should prevent concurrent wallet switches', async () => {
123
- const { WalletSetupService } = require('../../services/walletSetupService');
124
- const { WorkletLifecycleService } = require('../../services/workletLifecycleService');
125
- const walletId1 = 'wallet-1';
126
- const walletId2 = 'wallet-2';
127
- const credentials = {
128
- encryptionKey: 'test-key',
129
- encryptedSeed: 'test-seed',
130
- };
131
- mockWalletStore.getState.mockReturnValue({
132
- activeWalletId: null,
133
- walletLoadingState: { type: 'not_loaded' },
134
- isOperationInProgress: false,
135
- currentOperation: null,
136
- });
137
- WalletSetupService.hasWallet.mockResolvedValue(true);
138
- WorkletLifecycleService.ensureWorkletStarted.mockResolvedValue(undefined);
139
- WalletSetupService.loadExistingWallet.mockResolvedValue(credentials);
140
- WorkletLifecycleService.initializeWDK.mockImplementation(async () => {
141
- // Simulate slow operation
142
- await new Promise((resolve) => setTimeout(resolve, 100));
143
- });
144
- // Start two concurrent switches
145
- const promise1 = WalletSwitchingService.switchToWallet(walletId1);
146
- const promise2 = WalletSwitchingService.switchToWallet(walletId2);
147
- // Second switch should be blocked by mutex
148
- await expect(promise2).rejects.toThrow('Another operation is in progress');
149
- // First switch should complete
150
- await promise1;
151
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId1);
152
- expect(WalletSetupService.loadExistingWallet).not.toHaveBeenCalledWith(walletId2);
153
- });
154
- it('should handle rapid sequential wallet switches', async () => {
155
- const { WalletSetupService } = require('../../services/walletSetupService');
156
- const { WorkletLifecycleService } = require('../../services/workletLifecycleService');
157
- const walletId1 = 'wallet-1';
158
- const walletId2 = 'wallet-2';
159
- const credentials = {
160
- encryptionKey: 'test-key',
161
- encryptedSeed: 'test-seed',
162
- };
163
- WalletSetupService.hasWallet.mockResolvedValue(true);
164
- WorkletLifecycleService.ensureWorkletStarted.mockResolvedValue(undefined);
165
- WalletSetupService.loadExistingWallet.mockResolvedValue(credentials);
166
- WorkletLifecycleService.initializeWDK.mockResolvedValue(undefined);
167
- // First switch
168
- mockWalletStore.getState.mockReturnValue({
169
- activeWalletId: null,
170
- walletLoadingState: { type: 'not_loaded' },
171
- isOperationInProgress: false,
172
- currentOperation: null,
173
- });
174
- await WalletSwitchingService.switchToWallet(walletId1);
175
- // Second switch (after first completes)
176
- mockWalletStore.getState.mockReturnValue({
177
- activeWalletId: walletId1,
178
- walletLoadingState: { type: 'ready', identifier: walletId1 },
179
- isOperationInProgress: false,
180
- currentOperation: null,
181
- });
182
- await WalletSwitchingService.switchToWallet(walletId2);
183
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId1);
184
- expect(WalletSetupService.loadExistingWallet).toHaveBeenCalledWith(walletId2);
185
- });
186
- });
187
- describe('State Synchronization', () => {
188
- it('should maintain consistent state during concurrent updates', () => {
189
- const stateUpdates = [];
190
- mockWalletStore.setState.mockImplementation((updater) => {
191
- const currentState = mockWalletStore.getState();
192
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
193
- stateUpdates.push(newState);
194
- Object.assign(currentState, newState);
195
- mockWalletStore.getState.mockReturnValue({ ...currentState });
196
- });
197
- // Simulate concurrent state updates
198
- const mutex1 = acquireOperationMutex('update1');
199
- if (mutex1.acquired) {
200
- mockWalletStore.setState({ activeWalletId: 'wallet-1' });
201
- mutex1.release();
202
- }
203
- const mutex2 = acquireOperationMutex('update2');
204
- if (mutex2.acquired) {
205
- mockWalletStore.setState({ activeWalletId: 'wallet-2' });
206
- mutex2.release();
207
- }
208
- // State should be consistent (last update wins, but no corruption)
209
- const finalState = mockWalletStore.getState();
210
- expect(finalState.activeWalletId).toBe('wallet-2');
211
- expect(stateUpdates.length).toBeGreaterThan(0);
212
- });
213
- it('should prevent state corruption during rapid mutations', () => {
214
- let operationCount = 0;
215
- mockWalletStore.setState.mockImplementation((updater) => {
216
- operationCount++;
217
- const currentState = mockWalletStore.getState();
218
- const newState = typeof updater === 'function' ? updater(currentState) : updater;
219
- Object.assign(currentState, newState);
220
- mockWalletStore.getState.mockReturnValue({ ...currentState });
221
- });
222
- // Rapid mutations
223
- for (let i = 0; i < 10; i++) {
224
- const mutex = acquireOperationMutex(`operation-${i}`);
225
- if (mutex.acquired) {
226
- mockWalletStore.setState({ activeWalletId: `wallet-${i}` });
227
- mutex.release();
228
- }
229
- }
230
- // State should be consistent
231
- const finalState = mockWalletStore.getState();
232
- expect(finalState.activeWalletId).toBe('wallet-9');
233
- // setState may be called more than 10 times due to internal state updates (walletLoadingState, etc.)
234
- // The important thing is that the final state is correct
235
- expect(operationCount).toBeGreaterThanOrEqual(10);
236
- });
237
- });
238
- });
239
- //# sourceMappingURL=raceConditions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"raceConditions.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/raceConditions.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for Result type utilities
3
- */
4
- export {};
@@ -1,66 +0,0 @@
1
- /**
2
- * Tests for Result type utilities
3
- */
4
- import { ok, err, toResult, toResultSync } from '../../utils/result';
5
- describe('result', () => {
6
- describe('ok', () => {
7
- it('should create a success result', () => {
8
- const result = ok('test data');
9
- expect(result.success).toBe(true);
10
- expect(result.data).toBe('test data');
11
- expect(result.error).toBeUndefined();
12
- });
13
- });
14
- describe('err', () => {
15
- it('should create an error result', () => {
16
- const error = new Error('test error');
17
- const result = err(error);
18
- expect(result.success).toBe(false);
19
- expect(result.error).toBe(error);
20
- expect(result.data).toBeUndefined();
21
- });
22
- });
23
- describe('toResult', () => {
24
- it('should return ok result for successful async function', async () => {
25
- const fn = async () => 'success';
26
- const result = await toResult(fn);
27
- expect(result.success).toBe(true);
28
- if (result.success) {
29
- expect(result.data).toBe('success');
30
- }
31
- });
32
- it('should return err result for failed async function', async () => {
33
- const fn = async () => {
34
- throw new Error('async error');
35
- };
36
- const result = await toResult(fn);
37
- expect(result.success).toBe(false);
38
- if (!result.success) {
39
- expect(result.error).toBeInstanceOf(Error);
40
- expect(result.error.message).toBe('async error');
41
- }
42
- });
43
- });
44
- describe('toResultSync', () => {
45
- it('should return ok result for successful sync function', () => {
46
- const fn = () => 'success';
47
- const result = toResultSync(fn);
48
- expect(result.success).toBe(true);
49
- if (result.success) {
50
- expect(result.data).toBe('success');
51
- }
52
- });
53
- it('should return err result for failed sync function', () => {
54
- const fn = () => {
55
- throw new Error('sync error');
56
- };
57
- const result = toResultSync(fn);
58
- expect(result.success).toBe(false);
59
- if (!result.success) {
60
- expect(result.error).toBeInstanceOf(Error);
61
- expect(result.error.message).toBe('sync error');
62
- }
63
- });
64
- });
65
- });
66
- //# sourceMappingURL=result.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"result.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/result.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for Zod schemas
3
- */
4
- export {};
@@ -1,66 +0,0 @@
1
- /**
2
- * Tests for Zod schemas
3
- */
4
- import { workletResponseSchema, balanceResponseSchema, accountMethodResponseSchema, } from '../../utils/schemas';
5
- describe('schemas', () => {
6
- describe('workletResponseSchema', () => {
7
- it('should validate valid worklet response', () => {
8
- const valid = {
9
- result: '{"data": "test"}',
10
- };
11
- expect(() => workletResponseSchema.parse(valid)).not.toThrow();
12
- });
13
- it('should validate worklet response with error', () => {
14
- const valid = {
15
- result: '{"data": "test"}',
16
- error: 'Some error',
17
- };
18
- expect(() => workletResponseSchema.parse(valid)).not.toThrow();
19
- });
20
- it('should reject invalid worklet response', () => {
21
- const invalid = {
22
- result: null,
23
- };
24
- expect(() => workletResponseSchema.parse(invalid)).toThrow();
25
- });
26
- it('should require result field', () => {
27
- const invalid = {};
28
- expect(() => workletResponseSchema.parse(invalid)).toThrow();
29
- });
30
- });
31
- describe('balanceResponseSchema', () => {
32
- it('should validate numeric string', () => {
33
- expect(() => balanceResponseSchema.parse('1000000000000000000')).not.toThrow();
34
- expect(() => balanceResponseSchema.parse('0')).not.toThrow();
35
- expect(() => balanceResponseSchema.parse('123456789')).not.toThrow();
36
- });
37
- it('should reject non-numeric strings', () => {
38
- expect(() => balanceResponseSchema.parse('abc')).toThrow();
39
- expect(() => balanceResponseSchema.parse('123.45')).toThrow();
40
- expect(() => balanceResponseSchema.parse('-123')).toThrow();
41
- expect(() => balanceResponseSchema.parse('')).toThrow();
42
- });
43
- it('should reject non-string values', () => {
44
- expect(() => balanceResponseSchema.parse(123)).toThrow();
45
- expect(() => balanceResponseSchema.parse(null)).toThrow();
46
- expect(() => balanceResponseSchema.parse(undefined)).toThrow();
47
- });
48
- });
49
- describe('accountMethodResponseSchema', () => {
50
- it('should validate balance response', () => {
51
- expect(() => accountMethodResponseSchema.parse('1000000000000000000')).not.toThrow();
52
- });
53
- it('should validate string response', () => {
54
- expect(() => accountMethodResponseSchema.parse('0x1234567890123456789012345678901234567890')).not.toThrow();
55
- expect(() => accountMethodResponseSchema.parse('some string')).not.toThrow();
56
- });
57
- it('should validate object response', () => {
58
- expect(() => accountMethodResponseSchema.parse({ data: 'test' })).not.toThrow();
59
- expect(() => accountMethodResponseSchema.parse({ nested: { value: 123 } })).not.toThrow();
60
- });
61
- it('should validate empty object', () => {
62
- expect(() => accountMethodResponseSchema.parse({})).not.toThrow();
63
- });
64
- });
65
- });
66
- //# sourceMappingURL=schemas.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../../src/__tests__/utils/schemas.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Tests for store helper utilities
3
- */
4
- export {};
@@ -1,227 +0,0 @@
1
- /**
2
- * Tests for store helper utilities
3
- */
4
- import { requireInitialized, requireExtendedHRPC, isInitialized, updateBalanceInState, updateAddressInState, } from '../../utils/storeHelpers';
5
- import { getWorkletStore } from '../../store/workletStore';
6
- import { asExtendedHRPC } from '../../types/hrpc';
7
- // Mock stores
8
- jest.mock('../../store/workletStore', () => ({
9
- getWorkletStore: jest.fn(),
10
- }));
11
- jest.mock('../../types/hrpc', () => ({
12
- asExtendedHRPC: jest.fn(),
13
- }));
14
- describe('storeHelpers', () => {
15
- let mockWorkletStore;
16
- let mockHRPC;
17
- let mockExtendedHRPC;
18
- beforeEach(() => {
19
- jest.clearAllMocks();
20
- mockHRPC = {
21
- callMethod: jest.fn(),
22
- };
23
- mockExtendedHRPC = {
24
- callMethod: jest.fn(),
25
- initializeWDK: jest.fn(),
26
- };
27
- mockWorkletStore = {
28
- getState: jest.fn(() => ({
29
- isInitialized: true,
30
- hrpc: mockHRPC,
31
- })),
32
- };
33
- getWorkletStore.mockReturnValue(mockWorkletStore);
34
- asExtendedHRPC.mockReturnValue(mockExtendedHRPC);
35
- });
36
- describe('requireInitialized', () => {
37
- it('should return HRPC when initialized', () => {
38
- const hrpc = requireInitialized();
39
- expect(hrpc).toBe(mockHRPC);
40
- expect(getWorkletStore).toHaveBeenCalled();
41
- });
42
- it('should throw error when not initialized', () => {
43
- mockWorkletStore.getState = jest.fn(() => ({
44
- isInitialized: false,
45
- hrpc: null,
46
- }));
47
- expect(() => requireInitialized()).toThrow('WDK not initialized');
48
- });
49
- it('should throw error when HRPC is null', () => {
50
- mockWorkletStore.getState = jest.fn(() => ({
51
- isInitialized: true,
52
- hrpc: null,
53
- }));
54
- expect(() => requireInitialized()).toThrow('WDK not initialized');
55
- });
56
- });
57
- describe('requireExtendedHRPC', () => {
58
- it('should return extended HRPC when initialized', () => {
59
- const hrpc = requireExtendedHRPC();
60
- expect(hrpc).toBe(mockExtendedHRPC);
61
- expect(asExtendedHRPC).toHaveBeenCalledWith(mockHRPC);
62
- });
63
- it('should throw error when not initialized', () => {
64
- mockWorkletStore.getState = jest.fn(() => ({
65
- isInitialized: false,
66
- hrpc: null,
67
- }));
68
- expect(() => requireExtendedHRPC()).toThrow('WDK not initialized');
69
- });
70
- });
71
- describe('isInitialized', () => {
72
- it('should return true when initialized', () => {
73
- expect(isInitialized()).toBe(true);
74
- });
75
- it('should return false when not initialized', () => {
76
- mockWorkletStore.getState = jest.fn(() => ({
77
- isInitialized: false,
78
- hrpc: null,
79
- }));
80
- expect(isInitialized()).toBe(false);
81
- });
82
- it('should return false when HRPC is null', () => {
83
- mockWorkletStore.getState = jest.fn(() => ({
84
- isInitialized: true,
85
- hrpc: null,
86
- }));
87
- expect(isInitialized()).toBe(false);
88
- });
89
- });
90
- describe('updateBalanceInState', () => {
91
- it('should update balance in empty state', () => {
92
- const prev = {
93
- balances: {},
94
- };
95
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
96
- expect(result.balances).toEqual({
97
- 'wallet-1': {
98
- ethereum: {
99
- 0: {
100
- native: '100',
101
- },
102
- },
103
- },
104
- });
105
- });
106
- it('should update balance in existing state', () => {
107
- const prev = {
108
- balances: {
109
- 'wallet-1': {
110
- ethereum: {
111
- 0: {
112
- native: '50',
113
- },
114
- },
115
- },
116
- },
117
- };
118
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
119
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('100');
120
- });
121
- it('should add new network balance', () => {
122
- const prev = {
123
- balances: {
124
- 'wallet-1': {
125
- polygon: {
126
- 0: {
127
- native: '50',
128
- },
129
- },
130
- },
131
- },
132
- };
133
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, 'native', '100');
134
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('100');
135
- expect(result.balances?.['wallet-1']?.polygon?.[0]?.native).toBe('50');
136
- });
137
- it('should add new account balance', () => {
138
- const prev = {
139
- balances: {
140
- 'wallet-1': {
141
- ethereum: {
142
- 0: {
143
- native: '50',
144
- },
145
- },
146
- },
147
- },
148
- };
149
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 1, 'native', '200');
150
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('50');
151
- expect(result.balances?.['wallet-1']?.ethereum?.[1]?.native).toBe('200');
152
- });
153
- it('should add token balance', () => {
154
- const prev = {
155
- balances: {
156
- 'wallet-1': {
157
- ethereum: {
158
- 0: {
159
- native: '50',
160
- },
161
- },
162
- },
163
- },
164
- };
165
- const result = updateBalanceInState(prev, 'wallet-1', 'ethereum', 0, '0x123', '1000');
166
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.native).toBe('50');
167
- expect(result.balances?.['wallet-1']?.ethereum?.[0]?.['0x123']).toBe('1000');
168
- });
169
- });
170
- describe('updateAddressInState', () => {
171
- it('should update address in empty state', () => {
172
- const prev = {
173
- addresses: {},
174
- };
175
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
176
- expect(result.addresses).toEqual({
177
- 'wallet-1': {
178
- ethereum: {
179
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
180
- },
181
- },
182
- });
183
- });
184
- it('should update address in existing state', () => {
185
- const prev = {
186
- addresses: {
187
- 'wallet-1': {
188
- ethereum: {
189
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
190
- },
191
- },
192
- },
193
- };
194
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
195
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
196
- });
197
- it('should add new network address', () => {
198
- const prev = {
199
- addresses: {
200
- 'wallet-1': {
201
- polygon: {
202
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
203
- },
204
- },
205
- },
206
- };
207
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 0, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
208
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
209
- expect(result.addresses?.['wallet-1']?.polygon?.[0]).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
210
- });
211
- it('should add new account address', () => {
212
- const prev = {
213
- addresses: {
214
- 'wallet-1': {
215
- ethereum: {
216
- 0: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
217
- },
218
- },
219
- },
220
- };
221
- const result = updateAddressInState(prev, 'wallet-1', 'ethereum', 1, '0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
222
- expect(result.addresses?.['wallet-1']?.ethereum?.[0]).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
223
- expect(result.addresses?.['wallet-1']?.ethereum?.[1]).toBe('0x842d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
224
- });
225
- });
226
- });
227
- //# sourceMappingURL=storeHelpers.test.js.map