@robosystems/client 0.2.49 → 0.3.1

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 (191) hide show
  1. package/extensions/InvestorClient.d.ts +98 -0
  2. package/extensions/InvestorClient.js +223 -0
  3. package/extensions/InvestorClient.ts +508 -0
  4. package/extensions/LedgerClient.d.ts +190 -309
  5. package/extensions/LedgerClient.js +268 -587
  6. package/extensions/LedgerClient.ts +784 -903
  7. package/extensions/ReportClient.d.ts +82 -113
  8. package/extensions/ReportClient.js +124 -211
  9. package/extensions/ReportClient.ts +305 -358
  10. package/extensions/config.d.ts +19 -0
  11. package/extensions/config.js +1 -1
  12. package/extensions/config.ts +22 -2
  13. package/extensions/graphql/client.d.ts +82 -0
  14. package/extensions/graphql/client.js +149 -0
  15. package/extensions/graphql/client.ts +189 -0
  16. package/extensions/graphql/generated/graphql.d.ts +1786 -0
  17. package/extensions/graphql/generated/graphql.js +2671 -0
  18. package/extensions/graphql/generated/graphql.ts +4491 -0
  19. package/extensions/graphql/queries/investor/holdings.d.ts +8 -0
  20. package/extensions/graphql/queries/investor/holdings.js +36 -0
  21. package/extensions/graphql/queries/investor/holdings.ts +34 -0
  22. package/extensions/graphql/queries/investor/portfolio.d.ts +4 -0
  23. package/extensions/graphql/queries/investor/portfolio.js +21 -0
  24. package/extensions/graphql/queries/investor/portfolio.ts +19 -0
  25. package/extensions/graphql/queries/investor/portfolios.d.ts +4 -0
  26. package/extensions/graphql/queries/investor/portfolios.js +29 -0
  27. package/extensions/graphql/queries/investor/portfolios.ts +27 -0
  28. package/extensions/graphql/queries/investor/position.d.ts +4 -0
  29. package/extensions/graphql/queries/investor/position.js +33 -0
  30. package/extensions/graphql/queries/investor/position.ts +31 -0
  31. package/extensions/graphql/queries/investor/positions.d.ts +8 -0
  32. package/extensions/graphql/queries/investor/positions.js +57 -0
  33. package/extensions/graphql/queries/investor/positions.ts +55 -0
  34. package/extensions/graphql/queries/investor/securities.d.ts +8 -0
  35. package/extensions/graphql/queries/investor/securities.js +50 -0
  36. package/extensions/graphql/queries/investor/securities.ts +48 -0
  37. package/extensions/graphql/queries/investor/security.d.ts +4 -0
  38. package/extensions/graphql/queries/investor/security.js +26 -0
  39. package/extensions/graphql/queries/investor/security.ts +24 -0
  40. package/extensions/graphql/queries/ledger/accountRollups.d.ts +7 -0
  41. package/extensions/graphql/queries/ledger/accountRollups.js +36 -0
  42. package/extensions/graphql/queries/ledger/accountRollups.ts +34 -0
  43. package/extensions/graphql/queries/ledger/accountTree.d.ts +11 -0
  44. package/extensions/graphql/queries/ledger/accountTree.js +61 -0
  45. package/extensions/graphql/queries/ledger/accountTree.ts +59 -0
  46. package/extensions/graphql/queries/ledger/accounts.d.ts +8 -0
  47. package/extensions/graphql/queries/ledger/accounts.js +45 -0
  48. package/extensions/graphql/queries/ledger/accounts.ts +43 -0
  49. package/extensions/graphql/queries/ledger/closingBookStructures.d.ts +6 -0
  50. package/extensions/graphql/queries/ledger/closingBookStructures.js +27 -0
  51. package/extensions/graphql/queries/ledger/closingBookStructures.ts +25 -0
  52. package/extensions/graphql/queries/ledger/elements.d.ts +6 -0
  53. package/extensions/graphql/queries/ledger/elements.js +56 -0
  54. package/extensions/graphql/queries/ledger/elements.ts +54 -0
  55. package/extensions/graphql/queries/ledger/entities.d.ts +7 -0
  56. package/extensions/graphql/queries/ledger/entities.js +31 -0
  57. package/extensions/graphql/queries/ledger/entities.ts +29 -0
  58. package/extensions/graphql/queries/ledger/entity.d.ts +14 -0
  59. package/extensions/graphql/queries/ledger/entity.js +55 -0
  60. package/extensions/graphql/queries/ledger/entity.ts +54 -0
  61. package/extensions/graphql/queries/ledger/fiscalCalendar.d.ts +8 -0
  62. package/extensions/graphql/queries/ledger/fiscalCalendar.js +35 -0
  63. package/extensions/graphql/queries/ledger/fiscalCalendar.ts +33 -0
  64. package/extensions/graphql/queries/ledger/mappedTrialBalance.d.ts +9 -0
  65. package/extensions/graphql/queries/ledger/mappedTrialBalance.js +29 -0
  66. package/extensions/graphql/queries/ledger/mappedTrialBalance.ts +27 -0
  67. package/extensions/graphql/queries/ledger/mapping.d.ts +5 -0
  68. package/extensions/graphql/queries/ledger/mapping.js +35 -0
  69. package/extensions/graphql/queries/ledger/mapping.ts +33 -0
  70. package/extensions/graphql/queries/ledger/mappingCoverage.d.ts +5 -0
  71. package/extensions/graphql/queries/ledger/mappingCoverage.js +22 -0
  72. package/extensions/graphql/queries/ledger/mappingCoverage.ts +20 -0
  73. package/extensions/graphql/queries/ledger/mappings.d.ts +6 -0
  74. package/extensions/graphql/queries/ledger/mappings.js +23 -0
  75. package/extensions/graphql/queries/ledger/mappings.ts +21 -0
  76. package/extensions/graphql/queries/ledger/periodCloseStatus.d.ts +6 -0
  77. package/extensions/graphql/queries/ledger/periodCloseStatus.js +29 -0
  78. package/extensions/graphql/queries/ledger/periodCloseStatus.ts +27 -0
  79. package/extensions/graphql/queries/ledger/periodDrafts.d.ts +8 -0
  80. package/extensions/graphql/queries/ledger/periodDrafts.js +45 -0
  81. package/extensions/graphql/queries/ledger/periodDrafts.ts +43 -0
  82. package/extensions/graphql/queries/ledger/publishList.d.ts +5 -0
  83. package/extensions/graphql/queries/ledger/publishList.js +29 -0
  84. package/extensions/graphql/queries/ledger/publishList.ts +27 -0
  85. package/extensions/graphql/queries/ledger/publishLists.d.ts +5 -0
  86. package/extensions/graphql/queries/ledger/publishLists.js +29 -0
  87. package/extensions/graphql/queries/ledger/publishLists.ts +27 -0
  88. package/extensions/graphql/queries/ledger/report.d.ts +5 -0
  89. package/extensions/graphql/queries/ledger/report.js +40 -0
  90. package/extensions/graphql/queries/ledger/report.ts +38 -0
  91. package/extensions/graphql/queries/ledger/reportingTaxonomy.d.ts +6 -0
  92. package/extensions/graphql/queries/ledger/reportingTaxonomy.js +27 -0
  93. package/extensions/graphql/queries/ledger/reportingTaxonomy.ts +25 -0
  94. package/extensions/graphql/queries/ledger/reports.d.ts +8 -0
  95. package/extensions/graphql/queries/ledger/reports.js +45 -0
  96. package/extensions/graphql/queries/ledger/reports.ts +43 -0
  97. package/extensions/graphql/queries/ledger/scheduleFacts.d.ts +7 -0
  98. package/extensions/graphql/queries/ledger/scheduleFacts.js +24 -0
  99. package/extensions/graphql/queries/ledger/scheduleFacts.ts +22 -0
  100. package/extensions/graphql/queries/ledger/schedules.d.ts +6 -0
  101. package/extensions/graphql/queries/ledger/schedules.js +24 -0
  102. package/extensions/graphql/queries/ledger/schedules.ts +22 -0
  103. package/extensions/graphql/queries/ledger/statement.d.ts +9 -0
  104. package/extensions/graphql/queries/ledger/statement.js +43 -0
  105. package/extensions/graphql/queries/ledger/statement.ts +41 -0
  106. package/extensions/graphql/queries/ledger/structures.d.ts +5 -0
  107. package/extensions/graphql/queries/ledger/structures.js +22 -0
  108. package/extensions/graphql/queries/ledger/structures.ts +20 -0
  109. package/extensions/graphql/queries/ledger/summary.d.ts +7 -0
  110. package/extensions/graphql/queries/ledger/summary.js +25 -0
  111. package/extensions/graphql/queries/ledger/summary.ts +23 -0
  112. package/extensions/graphql/queries/ledger/taxonomies.d.ts +5 -0
  113. package/extensions/graphql/queries/ledger/taxonomies.js +28 -0
  114. package/extensions/graphql/queries/ledger/taxonomies.ts +26 -0
  115. package/extensions/graphql/queries/ledger/transaction.d.ts +6 -0
  116. package/extensions/graphql/queries/ledger/transaction.js +49 -0
  117. package/extensions/graphql/queries/ledger/transaction.ts +47 -0
  118. package/extensions/graphql/queries/ledger/transactions.d.ts +7 -0
  119. package/extensions/graphql/queries/ledger/transactions.js +49 -0
  120. package/extensions/graphql/queries/ledger/transactions.ts +47 -0
  121. package/extensions/graphql/queries/ledger/trialBalance.d.ts +7 -0
  122. package/extensions/graphql/queries/ledger/trialBalance.js +28 -0
  123. package/extensions/graphql/queries/ledger/trialBalance.ts +26 -0
  124. package/extensions/graphql/queries/ledger/unmappedElements.d.ts +8 -0
  125. package/extensions/graphql/queries/ledger/unmappedElements.js +29 -0
  126. package/extensions/graphql/queries/ledger/unmappedElements.ts +27 -0
  127. package/extensions/hooks.d.ts +1 -1
  128. package/extensions/index.d.ts +18 -1
  129. package/extensions/index.js +26 -1
  130. package/extensions/index.ts +49 -2
  131. package/index.ts +2 -2
  132. package/package.json +14 -5
  133. package/sdk/index.d.ts +2 -2
  134. package/sdk/index.js +38 -73
  135. package/sdk/index.ts +2 -2
  136. package/sdk/sdk.gen.d.ts +100 -325
  137. package/sdk/sdk.gen.js +228 -592
  138. package/sdk/sdk.gen.ts +193 -556
  139. package/sdk/types.gen.d.ts +4522 -7708
  140. package/sdk/types.gen.ts +4569 -7983
  141. package/sdk.gen.d.ts +100 -325
  142. package/sdk.gen.js +228 -592
  143. package/sdk.gen.ts +193 -556
  144. package/types.gen.d.ts +4522 -7708
  145. package/types.gen.ts +4569 -7983
  146. package/extensions/AgentClient.test.ts +0 -403
  147. package/extensions/LedgerClient.test.ts +0 -1655
  148. package/extensions/OperationClient.test.ts +0 -365
  149. package/extensions/QueryClient.test.ts +0 -432
  150. package/extensions/ReportClient.test.ts +0 -828
  151. package/extensions/SSEClient.test.ts +0 -375
  152. package/extensions/config.test.ts +0 -199
  153. package/extensions/hooks.test.ts +0 -373
  154. package/extensions/index.test.ts +0 -420
  155. package/sdk-extensions/AgentClient.d.ts +0 -82
  156. package/sdk-extensions/AgentClient.js +0 -218
  157. package/sdk-extensions/AgentClient.test.ts +0 -403
  158. package/sdk-extensions/AgentClient.ts +0 -321
  159. package/sdk-extensions/LedgerClient.d.ts +0 -416
  160. package/sdk-extensions/LedgerClient.js +0 -737
  161. package/sdk-extensions/LedgerClient.test.ts +0 -1655
  162. package/sdk-extensions/LedgerClient.ts +0 -1249
  163. package/sdk-extensions/OperationClient.d.ts +0 -65
  164. package/sdk-extensions/OperationClient.js +0 -251
  165. package/sdk-extensions/OperationClient.test.ts +0 -365
  166. package/sdk-extensions/OperationClient.ts +0 -324
  167. package/sdk-extensions/QueryClient.d.ts +0 -52
  168. package/sdk-extensions/QueryClient.js +0 -313
  169. package/sdk-extensions/QueryClient.test.ts +0 -432
  170. package/sdk-extensions/QueryClient.ts +0 -420
  171. package/sdk-extensions/README.md +0 -901
  172. package/sdk-extensions/ReportClient.d.ts +0 -151
  173. package/sdk-extensions/ReportClient.js +0 -278
  174. package/sdk-extensions/ReportClient.test.ts +0 -828
  175. package/sdk-extensions/ReportClient.ts +0 -486
  176. package/sdk-extensions/SSEClient.d.ts +0 -62
  177. package/sdk-extensions/SSEClient.js +0 -154
  178. package/sdk-extensions/SSEClient.test.ts +0 -375
  179. package/sdk-extensions/SSEClient.ts +0 -210
  180. package/sdk-extensions/config.d.ts +0 -57
  181. package/sdk-extensions/config.js +0 -152
  182. package/sdk-extensions/config.test.ts +0 -199
  183. package/sdk-extensions/config.ts +0 -175
  184. package/sdk-extensions/hooks.d.ts +0 -110
  185. package/sdk-extensions/hooks.js +0 -384
  186. package/sdk-extensions/hooks.test.ts +0 -373
  187. package/sdk-extensions/hooks.ts +0 -459
  188. package/sdk-extensions/index.d.ts +0 -63
  189. package/sdk-extensions/index.js +0 -164
  190. package/sdk-extensions/index.test.ts +0 -420
  191. package/sdk-extensions/index.ts +0 -203
@@ -1,373 +0,0 @@
1
- import { act, renderHook, waitFor } from '@testing-library/react'
2
- import { beforeEach, describe, expect, it, vi } from 'vitest'
3
- import {
4
- useMultipleOperations,
5
- useOperation,
6
- useQuery,
7
- useSDKClients,
8
- useStreamingQuery,
9
- } from './hooks'
10
-
11
- // Mock the SDK client
12
- vi.mock('../sdk/client.gen', () => ({
13
- client: {
14
- getConfig: vi.fn(() => ({
15
- baseUrl: 'http://mock-sdk.com',
16
- headers: {},
17
- })),
18
- },
19
- }))
20
-
21
- // Mock the config module
22
- vi.mock('./config', () => ({
23
- getSDKExtensionsConfig: vi.fn(() => ({
24
- baseUrl: 'http://test-api.com',
25
- credentials: 'include',
26
- headers: {},
27
- token: 'test-token',
28
- maxRetries: 3,
29
- retryDelay: 1000,
30
- })),
31
- extractTokenFromSDKClient: vi.fn(() => 'test-token'),
32
- }))
33
-
34
- // Mock the SDK gen functions to prevent real HTTP calls
35
- vi.mock('../sdk/sdk.gen', () => ({
36
- executeCypherQuery: vi.fn(),
37
- getOperationStatus: vi.fn(),
38
- cancelOperation: vi.fn(),
39
- }))
40
-
41
- // Create a mock response helper
42
- function createMockResponse(data: any, options: { ok?: boolean; status?: number } = {}) {
43
- return {
44
- ok: options.ok ?? true,
45
- status: options.status ?? 200,
46
- statusText: 'OK',
47
- headers: new Headers({ 'content-type': 'application/json' }),
48
- json: async () => data,
49
- text: async () => JSON.stringify(data),
50
- blob: async () => new Blob([JSON.stringify(data)]),
51
- arrayBuffer: async () => new TextEncoder().encode(JSON.stringify(data)).buffer,
52
- }
53
- }
54
-
55
- describe('useQuery', () => {
56
- let mockFetch: any
57
-
58
- beforeEach(() => {
59
- vi.clearAllMocks()
60
- mockFetch = vi.fn()
61
- global.fetch = mockFetch
62
- globalThis.fetch = mockFetch
63
- })
64
-
65
- it('should initialize with default state', () => {
66
- const { result } = renderHook(() => useQuery('graph_1'))
67
-
68
- expect(result.current.loading).toBe(false)
69
- expect(result.current.error).toBeNull()
70
- expect(result.current.data).toBeNull()
71
- expect(result.current.queuePosition).toBeNull()
72
- expect(typeof result.current.execute).toBe('function')
73
- expect(typeof result.current.query).toBe('function')
74
- })
75
-
76
- it('should execute a query and return data', async () => {
77
- const mockResult = {
78
- data: [{ name: 'Alice' }],
79
- columns: ['name'],
80
- row_count: 1,
81
- execution_time_ms: 10,
82
- }
83
-
84
- mockFetch.mockResolvedValue(createMockResponse(mockResult))
85
-
86
- const { result } = renderHook(() => useQuery('graph_1'))
87
-
88
- await act(async () => {
89
- const queryResult = await result.current.execute('MATCH (n) RETURN n')
90
- expect(queryResult).not.toBeNull()
91
- expect(queryResult!.data).toEqual([{ name: 'Alice' }])
92
- })
93
-
94
- expect(result.current.loading).toBe(false)
95
- expect(result.current.error).toBeNull()
96
- expect(result.current.data).not.toBeNull()
97
- })
98
-
99
- it('should set loading state during execution', async () => {
100
- let resolvePromise: (value: any) => void
101
- const pending = new Promise((resolve) => {
102
- resolvePromise = resolve
103
- })
104
-
105
- mockFetch.mockReturnValue(pending)
106
-
107
- const { result } = renderHook(() => useQuery('graph_1'))
108
-
109
- // Start the query (don't await)
110
- act(() => {
111
- result.current.execute('MATCH (n) RETURN n')
112
- })
113
-
114
- // Should be loading while pending
115
- expect(result.current.loading).toBe(true)
116
-
117
- // Resolve
118
- await act(async () => {
119
- resolvePromise!(
120
- createMockResponse({
121
- data: [],
122
- columns: [],
123
- row_count: 0,
124
- execution_time_ms: 0,
125
- })
126
- )
127
- })
128
-
129
- expect(result.current.loading).toBe(false)
130
- })
131
-
132
- it('should set error state on failure', async () => {
133
- mockFetch.mockRejectedValue(new Error('Network error'))
134
-
135
- const { result } = renderHook(() => useQuery('graph_1'))
136
-
137
- await act(async () => {
138
- const queryResult = await result.current.execute('BAD QUERY')
139
- expect(queryResult).toBeNull()
140
- })
141
-
142
- expect(result.current.error).not.toBeNull()
143
- expect(result.current.loading).toBe(false)
144
- })
145
-
146
- it('should provide a simple query method that returns data array', async () => {
147
- mockFetch.mockResolvedValue(
148
- createMockResponse({
149
- data: [{ id: 1 }, { id: 2 }],
150
- columns: ['id'],
151
- row_count: 2,
152
- execution_time_ms: 5,
153
- })
154
- )
155
-
156
- const { result } = renderHook(() => useQuery('graph_1'))
157
-
158
- let data: any[]
159
- await act(async () => {
160
- data = await result.current.query('MATCH (n) RETURN n')
161
- })
162
-
163
- expect(data!).toEqual([{ id: 1 }, { id: 2 }])
164
- })
165
-
166
- it('should return empty array from query on failure', async () => {
167
- mockFetch.mockRejectedValue(new Error('fail'))
168
-
169
- const { result } = renderHook(() => useQuery('graph_1'))
170
-
171
- let data: any[]
172
- await act(async () => {
173
- data = await result.current.query('BAD')
174
- })
175
-
176
- expect(data!).toEqual([])
177
- })
178
-
179
- it('should clear previous data on new execute', async () => {
180
- mockFetch.mockResolvedValueOnce(
181
- createMockResponse({
182
- data: [{ id: 1 }],
183
- columns: ['id'],
184
- row_count: 1,
185
- execution_time_ms: 5,
186
- })
187
- )
188
-
189
- const { result } = renderHook(() => useQuery('graph_1'))
190
-
191
- await act(async () => {
192
- await result.current.execute('FIRST QUERY')
193
- })
194
-
195
- expect(result.current.data).not.toBeNull()
196
-
197
- // Now the next query will also succeed
198
- mockFetch.mockResolvedValueOnce(
199
- createMockResponse({
200
- data: [{ id: 2 }],
201
- columns: ['id'],
202
- row_count: 1,
203
- execution_time_ms: 3,
204
- })
205
- )
206
-
207
- await act(async () => {
208
- await result.current.execute('SECOND QUERY')
209
- })
210
-
211
- expect(result.current.data!.data).toEqual([{ id: 2 }])
212
- })
213
- })
214
-
215
- describe('useStreamingQuery', () => {
216
- beforeEach(() => {
217
- vi.clearAllMocks()
218
- })
219
-
220
- it('should initialize with default state', () => {
221
- const { result } = renderHook(() => useStreamingQuery('graph_1'))
222
-
223
- expect(result.current.isStreaming).toBe(false)
224
- expect(result.current.error).toBeNull()
225
- expect(result.current.rowsReceived).toBe(0)
226
- expect(typeof result.current.stream).toBe('function')
227
- expect(typeof result.current.cancel).toBe('function')
228
- })
229
-
230
- it('should cancel and reset streaming state', () => {
231
- const { result } = renderHook(() => useStreamingQuery('graph_1'))
232
-
233
- act(() => {
234
- result.current.cancel()
235
- })
236
-
237
- expect(result.current.isStreaming).toBe(false)
238
- })
239
- })
240
-
241
- describe('useOperation', () => {
242
- let mockFetch: any
243
-
244
- beforeEach(() => {
245
- vi.clearAllMocks()
246
- mockFetch = vi.fn()
247
- global.fetch = mockFetch
248
- globalThis.fetch = mockFetch
249
- })
250
-
251
- it('should initialize with idle state', () => {
252
- const { result } = renderHook(() => useOperation())
253
-
254
- expect(result.current.status).toBe('idle')
255
- expect(result.current.progress).toBeNull()
256
- expect(result.current.error).toBeNull()
257
- expect(result.current.result).toBeNull()
258
- expect(typeof result.current.monitor).toBe('function')
259
- expect(typeof result.current.cancel).toBe('function')
260
- })
261
-
262
- it('should set running state when monitoring starts', async () => {
263
- // Mock EventSource for SSE
264
- class MockEventSource {
265
- onopen: any = null
266
- onerror: any = null
267
- onmessage: any = null
268
- readyState = 0
269
- url: string
270
- withCredentials = false
271
- static CONNECTING = 0
272
- static OPEN = 1
273
- static CLOSED = 2
274
- constructor(url: string) {
275
- this.url = url
276
- // Never connect - we just want to test the state transition
277
- }
278
- addEventListener() {}
279
- removeEventListener() {}
280
- close() {
281
- this.readyState = 2
282
- }
283
- }
284
- global.EventSource = MockEventSource as any
285
-
286
- const { result } = renderHook(() => useOperation())
287
-
288
- // Start monitoring (will hang since SSE never connects, but state should transition)
289
- act(() => {
290
- result.current.monitor('op_123', 1000) // short timeout
291
- })
292
-
293
- expect(result.current.status).toBe('running')
294
- })
295
-
296
- it('should handle cancel', async () => {
297
- // Mock the cancel endpoint
298
- mockFetch.mockResolvedValue(createMockResponse({ status: 'cancelled' }))
299
-
300
- const { result } = renderHook(() => useOperation())
301
-
302
- await act(async () => {
303
- await result.current.cancel('op_123')
304
- })
305
-
306
- expect(result.current.status).toBe('idle')
307
- })
308
-
309
- it('should not throw when cancel is called without a client', () => {
310
- const { result } = renderHook(() => useOperation())
311
-
312
- // Cancel should not throw even on first render
313
- expect(async () => {
314
- await result.current.cancel('op_123')
315
- }).not.toThrow()
316
- })
317
- })
318
-
319
- describe('useMultipleOperations', () => {
320
- beforeEach(() => {
321
- vi.clearAllMocks()
322
- })
323
-
324
- it('should initialize with default state', () => {
325
- const { result } = renderHook(() => useMultipleOperations())
326
-
327
- expect(result.current.results.size).toBe(0)
328
- expect(result.current.loading).toBe(false)
329
- expect(result.current.errors.size).toBe(0)
330
- expect(result.current.allCompleted).toBe(false)
331
- expect(result.current.hasErrors).toBe(false)
332
- expect(typeof result.current.monitorAll).toBe('function')
333
- })
334
-
335
- it('should report allCompleted false when no results', () => {
336
- const { result } = renderHook(() => useMultipleOperations())
337
-
338
- expect(result.current.allCompleted).toBe(false)
339
- })
340
-
341
- it('should report hasErrors false initially', () => {
342
- const { result } = renderHook(() => useMultipleOperations())
343
-
344
- expect(result.current.hasErrors).toBe(false)
345
- })
346
- })
347
-
348
- describe('useSDKClients', () => {
349
- beforeEach(() => {
350
- vi.clearAllMocks()
351
- })
352
-
353
- it('should eventually provide initialized clients', async () => {
354
- const { result } = renderHook(() => useSDKClients())
355
-
356
- await waitFor(() => {
357
- expect(result.current.query).not.toBeNull()
358
- expect(result.current.operations).not.toBeNull()
359
- })
360
-
361
- expect(typeof result.current.query!.executeQuery).toBe('function')
362
- expect(typeof result.current.operations!.monitorOperation).toBe('function')
363
- })
364
-
365
- it('should start with null clients', () => {
366
- // Before the useEffect fires, clients are null
367
- const { result } = renderHook(() => useSDKClients())
368
-
369
- // The hook returns an object - it may or may not have initialized by now
370
- expect(result.current).toBeDefined()
371
- expect(typeof result.current).toBe('object')
372
- })
373
- })