@microsoft/power-apps 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 (291) hide show
  1. package/LICENSE +153 -0
  2. package/README.md +63 -0
  3. package/lib/__tests__/connectorDataOperationExecutor.spec.d.ts +5 -0
  4. package/lib/__tests__/connectorDataOperationExecutor.spec.d.ts.map +1 -0
  5. package/lib/__tests__/connectorDataOperationExecutor.spec.js +509 -0
  6. package/lib/__tests__/connectorDataOperationExecutor.spec.js.map +1 -0
  7. package/lib/__tests__/dataverseDataOperationExecutor.spec.d.ts +5 -0
  8. package/lib/__tests__/dataverseDataOperationExecutor.spec.d.ts.map +1 -0
  9. package/lib/__tests__/dataverseDataOperationExecutor.spec.js +349 -0
  10. package/lib/__tests__/dataverseDataOperationExecutor.spec.js.map +1 -0
  11. package/lib/__tests__/helpers/testHelpers.d.ts +27 -0
  12. package/lib/__tests__/helpers/testHelpers.d.ts.map +1 -0
  13. package/lib/__tests__/helpers/testHelpers.js +67 -0
  14. package/lib/__tests__/helpers/testHelpers.js.map +1 -0
  15. package/lib/__tests__/index.spec.d.ts +5 -0
  16. package/lib/__tests__/index.spec.d.ts.map +1 -0
  17. package/lib/__tests__/index.spec.js +10 -0
  18. package/lib/__tests__/index.spec.js.map +1 -0
  19. package/lib/__tests__/mockDataOperationExecutor.spec.d.ts +5 -0
  20. package/lib/__tests__/mockDataOperationExecutor.spec.d.ts.map +1 -0
  21. package/lib/__tests__/mockDataOperationExecutor.spec.js +51 -0
  22. package/lib/__tests__/mockDataOperationExecutor.spec.js.map +1 -0
  23. package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.d.ts +17 -0
  24. package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.d.ts.map +1 -0
  25. package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.js +35 -0
  26. package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.js.map +1 -0
  27. package/lib/__tests__/mocks/mockLog.d.ts +31 -0
  28. package/lib/__tests__/mocks/mockLog.d.ts.map +1 -0
  29. package/lib/__tests__/mocks/mockLog.js +53 -0
  30. package/lib/__tests__/mocks/mockLog.js.map +1 -0
  31. package/lib/__tests__/mocks/mockTeamsConnectorResponse.d.ts +76 -0
  32. package/lib/__tests__/mocks/mockTeamsConnectorResponse.d.ts.map +1 -0
  33. package/lib/__tests__/mocks/mockTeamsConnectorResponse.js +81 -0
  34. package/lib/__tests__/mocks/mockTeamsConnectorResponse.js.map +1 -0
  35. package/lib/__tests__/mocks/silenceConsole.d.ts +37 -0
  36. package/lib/__tests__/mocks/silenceConsole.d.ts.map +1 -0
  37. package/lib/__tests__/mocks/silenceConsole.js +58 -0
  38. package/lib/__tests__/mocks/silenceConsole.js.map +1 -0
  39. package/lib/__tests__/powerDataRuntimeInstance.test.d.ts +5 -0
  40. package/lib/__tests__/powerDataRuntimeInstance.test.d.ts.map +1 -0
  41. package/lib/__tests__/powerDataRuntimeInstance.test.js +179 -0
  42. package/lib/__tests__/powerDataRuntimeInstance.test.js.map +1 -0
  43. package/lib/__tests__/powerDataSourcesInfoProvider.test.d.ts +5 -0
  44. package/lib/__tests__/powerDataSourcesInfoProvider.test.d.ts.map +1 -0
  45. package/lib/__tests__/powerDataSourcesInfoProvider.test.js +153 -0
  46. package/lib/__tests__/powerDataSourcesInfoProvider.test.js.map +1 -0
  47. package/lib/__tests__/runtimeClientProvider.test.d.ts +5 -0
  48. package/lib/__tests__/runtimeClientProvider.test.d.ts.map +1 -0
  49. package/lib/__tests__/runtimeClientProvider.test.js +248 -0
  50. package/lib/__tests__/runtimeClientProvider.test.js.map +1 -0
  51. package/lib/__tests__/runtimeDataClient.spec.d.ts +2 -0
  52. package/lib/__tests__/runtimeDataClient.spec.d.ts.map +1 -0
  53. package/lib/__tests__/runtimeDataClient.spec.js +351 -0
  54. package/lib/__tests__/runtimeDataClient.spec.js.map +1 -0
  55. package/lib/__tests__/runtimeDataClient.test.d.ts +2 -0
  56. package/lib/__tests__/runtimeDataClient.test.d.ts.map +1 -0
  57. package/lib/__tests__/runtimeDataClient.test.js +351 -0
  58. package/lib/__tests__/runtimeDataClient.test.js.map +1 -0
  59. package/lib/__tests__/runtimeDataOperation.test.d.ts +5 -0
  60. package/lib/__tests__/runtimeDataOperation.test.d.ts.map +1 -0
  61. package/lib/__tests__/runtimeDataOperation.test.js +234 -0
  62. package/lib/__tests__/runtimeDataOperation.test.js.map +1 -0
  63. package/lib/__tests__/runtimeMetadataClient.test.d.ts +5 -0
  64. package/lib/__tests__/runtimeMetadataClient.test.d.ts.map +1 -0
  65. package/lib/__tests__/runtimeMetadataClient.test.js +271 -0
  66. package/lib/__tests__/runtimeMetadataClient.test.js.map +1 -0
  67. package/lib/__tests__/runtimeMetadataOperations.test.d.ts +5 -0
  68. package/lib/__tests__/runtimeMetadataOperations.test.d.ts.map +1 -0
  69. package/lib/__tests__/runtimeMetadataOperations.test.js +286 -0
  70. package/lib/__tests__/runtimeMetadataOperations.test.js.map +1 -0
  71. package/lib/__tests__/serviceSchemaModelSnapshot.test.d.ts +2 -0
  72. package/lib/__tests__/serviceSchemaModelSnapshot.test.d.ts.map +1 -0
  73. package/lib/__tests__/serviceSchemaModelSnapshot.test.js +98 -0
  74. package/lib/__tests__/serviceSchemaModelSnapshot.test.js.map +1 -0
  75. package/lib/__tests__/types.spec.d.ts +5 -0
  76. package/lib/__tests__/types.spec.d.ts.map +1 -0
  77. package/lib/__tests__/types.spec.js +104 -0
  78. package/lib/__tests__/types.spec.js.map +1 -0
  79. package/lib/__tests__/utils.test.d.ts +5 -0
  80. package/lib/__tests__/utils.test.d.ts.map +1 -0
  81. package/lib/__tests__/utils.test.js +33 -0
  82. package/lib/__tests__/utils.test.js.map +1 -0
  83. package/lib/app/Lifecycle.d.ts +14 -0
  84. package/lib/app/Lifecycle.d.ts.map +1 -0
  85. package/lib/app/Lifecycle.js +37 -0
  86. package/lib/app/Lifecycle.js.map +1 -0
  87. package/lib/app/index.d.ts +5 -0
  88. package/lib/app/index.d.ts.map +1 -0
  89. package/lib/app/index.js +5 -0
  90. package/lib/app/index.js.map +1 -0
  91. package/lib/data/Data.types.d.ts +20 -0
  92. package/lib/data/Data.types.d.ts.map +1 -0
  93. package/lib/data/Data.types.js +5 -0
  94. package/lib/data/Data.types.js.map +1 -0
  95. package/lib/data/executors/index.d.ts +6 -0
  96. package/lib/data/executors/index.d.ts.map +1 -0
  97. package/lib/data/executors/index.js +5 -0
  98. package/lib/data/executors/index.js.map +1 -0
  99. package/lib/data/index.d.ts +7 -0
  100. package/lib/data/index.d.ts.map +1 -0
  101. package/lib/data/index.js +5 -0
  102. package/lib/data/index.js.map +1 -0
  103. package/lib/data/powerAppsData.d.ts +10 -0
  104. package/lib/data/powerAppsData.d.ts.map +1 -0
  105. package/lib/data/powerAppsData.js +43 -0
  106. package/lib/data/powerAppsData.js.map +1 -0
  107. package/lib/index.d.ts +8 -0
  108. package/lib/index.d.ts.map +1 -0
  109. package/lib/index.js +8 -0
  110. package/lib/index.js.map +1 -0
  111. package/lib/internal/communication/CompatibleMessageReceiver.d.ts +12 -0
  112. package/lib/internal/communication/CompatibleMessageReceiver.d.ts.map +1 -0
  113. package/lib/internal/communication/CompatibleMessageReceiver.js +92 -0
  114. package/lib/internal/communication/CompatibleMessageReceiver.js.map +1 -0
  115. package/lib/internal/communication/IncompatibleMessageReceiver.d.ts +10 -0
  116. package/lib/internal/communication/IncompatibleMessageReceiver.d.ts.map +1 -0
  117. package/lib/internal/communication/IncompatibleMessageReceiver.js +13 -0
  118. package/lib/internal/communication/IncompatibleMessageReceiver.js.map +1 -0
  119. package/lib/internal/communication/MessageReceiver.Types.d.ts +18 -0
  120. package/lib/internal/communication/MessageReceiver.Types.d.ts.map +1 -0
  121. package/lib/internal/communication/MessageReceiver.Types.js +5 -0
  122. package/lib/internal/communication/MessageReceiver.Types.js.map +1 -0
  123. package/lib/internal/communication/SendMessage.d.ts +11 -0
  124. package/lib/internal/communication/SendMessage.d.ts.map +1 -0
  125. package/lib/internal/communication/SendMessage.js +32 -0
  126. package/lib/internal/communication/SendMessage.js.map +1 -0
  127. package/lib/internal/communication/SendMessageOperation.d.ts +15 -0
  128. package/lib/internal/communication/SendMessageOperation.d.ts.map +1 -0
  129. package/lib/internal/communication/SendMessageOperation.js +18 -0
  130. package/lib/internal/communication/SendMessageOperation.js.map +1 -0
  131. package/lib/internal/data/ConnectionUtils.d.ts +5 -0
  132. package/lib/internal/data/ConnectionUtils.d.ts.map +1 -0
  133. package/lib/internal/data/ConnectionUtils.js +20 -0
  134. package/lib/internal/data/ConnectionUtils.js.map +1 -0
  135. package/lib/internal/data/OperationExecutor.d.ts +18 -0
  136. package/lib/internal/data/OperationExecutor.d.ts.map +1 -0
  137. package/lib/internal/data/OperationExecutor.js +35 -0
  138. package/lib/internal/data/OperationExecutor.js.map +1 -0
  139. package/lib/internal/data/core/api/createRecord.d.ts +13 -0
  140. package/lib/internal/data/core/api/createRecord.d.ts.map +1 -0
  141. package/lib/internal/data/core/api/createRecord.js +15 -0
  142. package/lib/internal/data/core/api/createRecord.js.map +1 -0
  143. package/lib/internal/data/core/api/deleteRecord.d.ts +13 -0
  144. package/lib/internal/data/core/api/deleteRecord.d.ts.map +1 -0
  145. package/lib/internal/data/core/api/deleteRecord.js +15 -0
  146. package/lib/internal/data/core/api/deleteRecord.js.map +1 -0
  147. package/lib/internal/data/core/api/execute.d.ts +11 -0
  148. package/lib/internal/data/core/api/execute.d.ts.map +1 -0
  149. package/lib/internal/data/core/api/execute.js +13 -0
  150. package/lib/internal/data/core/api/execute.js.map +1 -0
  151. package/lib/internal/data/core/api/retrieveMultipleRecords.d.ts +13 -0
  152. package/lib/internal/data/core/api/retrieveMultipleRecords.d.ts.map +1 -0
  153. package/lib/internal/data/core/api/retrieveMultipleRecords.js +15 -0
  154. package/lib/internal/data/core/api/retrieveMultipleRecords.js.map +1 -0
  155. package/lib/internal/data/core/api/retrieveRecord.d.ts +13 -0
  156. package/lib/internal/data/core/api/retrieveRecord.d.ts.map +1 -0
  157. package/lib/internal/data/core/api/retrieveRecord.js +15 -0
  158. package/lib/internal/data/core/api/retrieveRecord.js.map +1 -0
  159. package/lib/internal/data/core/api/updateRecord.d.ts +14 -0
  160. package/lib/internal/data/core/api/updateRecord.d.ts.map +1 -0
  161. package/lib/internal/data/core/api/updateRecord.js +16 -0
  162. package/lib/internal/data/core/api/updateRecord.js.map +1 -0
  163. package/lib/internal/data/core/common/types.d.ts +230 -0
  164. package/lib/internal/data/core/common/types.d.ts.map +1 -0
  165. package/lib/internal/data/core/common/types.js +25 -0
  166. package/lib/internal/data/core/common/types.js.map +1 -0
  167. package/lib/internal/data/core/common/utils.d.ts +19 -0
  168. package/lib/internal/data/core/common/utils.d.ts.map +1 -0
  169. package/lib/internal/data/core/common/utils.js +47 -0
  170. package/lib/internal/data/core/common/utils.js.map +1 -0
  171. package/lib/internal/data/core/data/defaultOperationOrchestrator.d.ts +93 -0
  172. package/lib/internal/data/core/data/defaultOperationOrchestrator.d.ts.map +1 -0
  173. package/lib/internal/data/core/data/defaultOperationOrchestrator.js +249 -0
  174. package/lib/internal/data/core/data/defaultOperationOrchestrator.js.map +1 -0
  175. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.d.ts +160 -0
  176. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.d.ts.map +1 -0
  177. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.js +500 -0
  178. package/lib/internal/data/core/data/executors/connectorDataOperationExecutor.js.map +1 -0
  179. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.d.ts +164 -0
  180. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.d.ts.map +1 -0
  181. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.js +508 -0
  182. package/lib/internal/data/core/data/executors/dataverseDataOperationExecutor.js.map +1 -0
  183. package/lib/internal/data/core/data/executors/index.d.ts +5 -0
  184. package/lib/internal/data/core/data/executors/index.d.ts.map +1 -0
  185. package/lib/internal/data/core/data/executors/index.js +5 -0
  186. package/lib/internal/data/core/data/executors/index.js.map +1 -0
  187. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.d.ts +21 -0
  188. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.d.ts.map +1 -0
  189. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.js +75 -0
  190. package/lib/internal/data/core/data/executors/mockDataOperationExecutor.js.map +1 -0
  191. package/lib/internal/data/core/error/codes.d.ts +31 -0
  192. package/lib/internal/data/core/error/codes.d.ts.map +1 -0
  193. package/lib/internal/data/core/error/codes.js +39 -0
  194. package/lib/internal/data/core/error/codes.js.map +1 -0
  195. package/lib/internal/data/core/error/constants.d.ts +30 -0
  196. package/lib/internal/data/core/error/constants.d.ts.map +1 -0
  197. package/lib/internal/data/core/error/constants.js +33 -0
  198. package/lib/internal/data/core/error/constants.js.map +1 -0
  199. package/lib/internal/data/core/error/error.d.ts +8 -0
  200. package/lib/internal/data/core/error/error.d.ts.map +1 -0
  201. package/lib/internal/data/core/error/error.js +8 -0
  202. package/lib/internal/data/core/error/error.js.map +1 -0
  203. package/lib/internal/data/core/error/messages.d.ts +24 -0
  204. package/lib/internal/data/core/error/messages.d.ts.map +1 -0
  205. package/lib/internal/data/core/error/messages.js +55 -0
  206. package/lib/internal/data/core/error/messages.js.map +1 -0
  207. package/lib/internal/data/core/error/types.d.ts +30 -0
  208. package/lib/internal/data/core/error/types.d.ts.map +1 -0
  209. package/lib/internal/data/core/error/types.js +28 -0
  210. package/lib/internal/data/core/error/types.js.map +1 -0
  211. package/lib/internal/data/core/error/util.d.ts +24 -0
  212. package/lib/internal/data/core/error/util.d.ts.map +1 -0
  213. package/lib/internal/data/core/error/util.js +71 -0
  214. package/lib/internal/data/core/error/util.js.map +1 -0
  215. package/lib/internal/data/core/metadata/runtimeDataSourceService.d.ts +65 -0
  216. package/lib/internal/data/core/metadata/runtimeDataSourceService.d.ts.map +1 -0
  217. package/lib/internal/data/core/metadata/runtimeDataSourceService.js +101 -0
  218. package/lib/internal/data/core/metadata/runtimeDataSourceService.js.map +1 -0
  219. package/lib/internal/data/core/metadata/runtimeMetadataOperations.d.ts +17 -0
  220. package/lib/internal/data/core/metadata/runtimeMetadataOperations.d.ts.map +1 -0
  221. package/lib/internal/data/core/metadata/runtimeMetadataOperations.js +34 -0
  222. package/lib/internal/data/core/metadata/runtimeMetadataOperations.js.map +1 -0
  223. package/lib/internal/data/core/runtime/getRuntimeContext.d.ts +11 -0
  224. package/lib/internal/data/core/runtime/getRuntimeContext.d.ts.map +1 -0
  225. package/lib/internal/data/core/runtime/getRuntimeContext.js +16 -0
  226. package/lib/internal/data/core/runtime/getRuntimeContext.js.map +1 -0
  227. package/lib/internal/data/core/runtime/initializeRuntime.d.ts +13 -0
  228. package/lib/internal/data/core/runtime/initializeRuntime.d.ts.map +1 -0
  229. package/lib/internal/data/core/runtime/initializeRuntime.js +38 -0
  230. package/lib/internal/data/core/runtime/initializeRuntime.js.map +1 -0
  231. package/lib/internal/data/core/runtime/powerDataRuntime.d.ts +68 -0
  232. package/lib/internal/data/core/runtime/powerDataRuntime.d.ts.map +1 -0
  233. package/lib/internal/data/core/runtime/powerDataRuntime.js +116 -0
  234. package/lib/internal/data/core/runtime/powerDataRuntime.js.map +1 -0
  235. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts +20 -0
  236. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts.map +1 -0
  237. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js +36 -0
  238. package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js.map +1 -0
  239. package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.d.ts +34 -0
  240. package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.d.ts.map +1 -0
  241. package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.js +45 -0
  242. package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.js.map +1 -0
  243. package/lib/internal/data/core/runtimeClient/runtimeClientProvider.d.ts +43 -0
  244. package/lib/internal/data/core/runtimeClient/runtimeClientProvider.d.ts.map +1 -0
  245. package/lib/internal/data/core/runtimeClient/runtimeClientProvider.js +87 -0
  246. package/lib/internal/data/core/runtimeClient/runtimeClientProvider.js.map +1 -0
  247. package/lib/internal/data/core/runtimeClient/runtimeDataClient.d.ts +112 -0
  248. package/lib/internal/data/core/runtimeClient/runtimeDataClient.d.ts.map +1 -0
  249. package/lib/internal/data/core/runtimeClient/runtimeDataClient.js +457 -0
  250. package/lib/internal/data/core/runtimeClient/runtimeDataClient.js.map +1 -0
  251. package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.d.ts +40 -0
  252. package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.d.ts.map +1 -0
  253. package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.js +94 -0
  254. package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.js.map +1 -0
  255. package/lib/internal/data/core/telemetry/log.d.ts +20 -0
  256. package/lib/internal/data/core/telemetry/log.d.ts.map +1 -0
  257. package/lib/internal/data/core/telemetry/log.js +85 -0
  258. package/lib/internal/data/core/telemetry/log.js.map +1 -0
  259. package/lib/internal/data/core/types/index.d.ts +164 -0
  260. package/lib/internal/data/core/types/index.d.ts.map +1 -0
  261. package/lib/internal/data/core/types/index.js +7 -0
  262. package/lib/internal/data/core/types/index.js.map +1 -0
  263. package/lib/internal/plugin/PluginCommon.d.ts +16 -0
  264. package/lib/internal/plugin/PluginCommon.d.ts.map +1 -0
  265. package/lib/internal/plugin/PluginCommon.js +116 -0
  266. package/lib/internal/plugin/PluginCommon.js.map +1 -0
  267. package/lib/internal/plugin/PluginMobile.d.ts +13 -0
  268. package/lib/internal/plugin/PluginMobile.d.ts.map +1 -0
  269. package/lib/internal/plugin/PluginMobile.js +109 -0
  270. package/lib/internal/plugin/PluginMobile.js.map +1 -0
  271. package/lib/telemetry/Logger.types.d.ts +8 -0
  272. package/lib/telemetry/Logger.types.d.ts.map +1 -0
  273. package/lib/telemetry/Logger.types.js +5 -0
  274. package/lib/telemetry/Logger.types.js.map +1 -0
  275. package/lib/telemetry/LoggerManager.d.ts +6 -0
  276. package/lib/telemetry/LoggerManager.d.ts.map +1 -0
  277. package/lib/telemetry/LoggerManager.js +28 -0
  278. package/lib/telemetry/LoggerManager.js.map +1 -0
  279. package/lib/telemetry/Metrics.types.d.ts +53 -0
  280. package/lib/telemetry/Metrics.types.d.ts.map +1 -0
  281. package/lib/telemetry/Metrics.types.js +5 -0
  282. package/lib/telemetry/Metrics.types.js.map +1 -0
  283. package/lib/telemetry/Performance.d.ts +5 -0
  284. package/lib/telemetry/Performance.d.ts.map +1 -0
  285. package/lib/telemetry/Performance.js +47 -0
  286. package/lib/telemetry/Performance.js.map +1 -0
  287. package/lib/telemetry/index.d.ts +5 -0
  288. package/lib/telemetry/index.d.ts.map +1 -0
  289. package/lib/telemetry/index.js +5 -0
  290. package/lib/telemetry/index.js.map +1 -0
  291. package/package.json +44 -0
@@ -0,0 +1,271 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { afterEach, beforeEach, describe, it, jest } from '@jest/globals';
5
+ import { ErrorCodes, PowerDataRuntimeError } from '../internal/data/core/error/error';
6
+ import { RuntimeMetadataClient } from '../internal/data/core/runtimeClient/runtimeMetadataClient';
7
+ import { mockSilentLogger } from './mocks/mockLog';
8
+ import { silenceConsole } from './mocks/silenceConsole';
9
+ /* eslint-disable @typescript-eslint/no-explicit-any */
10
+ // Mock the telemetry log module to avoid actual logging during tests
11
+ jest.mock('../internal/data/core/telemetry/log', () => mockSilentLogger);
12
+ // return value for action :loadAppConnectionsAsync_v2 run through PowerOperationExecutor
13
+ const mockAppDataSourceConfigs = {
14
+ success: true,
15
+ data: {
16
+ datasource1: {
17
+ apiId: 'someApiId_dataSource1',
18
+ connectionName: '01234567-8901-2345-6789-012345678901',
19
+ runtimeUrl: 'https://contosso.org/1',
20
+ error: undefined,
21
+ datasetName: undefined,
22
+ },
23
+ datasource2: {
24
+ apiId: 'someApiId_dataSource2',
25
+ connectionName: '09876543-2109-8765-4321-098765432109',
26
+ runtimeUrl: 'https://contosso.org/2',
27
+ error: undefined,
28
+ datasetName: undefined,
29
+ },
30
+ },
31
+ };
32
+ // return value for action :getAppCdsDataSourceConfigsAsync run through PowerOperationExecutor
33
+ const mockCdsAppDataSourceConfigs = {
34
+ success: true,
35
+ data: {
36
+ datasource1: {
37
+ runtimeUrl: 'https://contosso.org/1',
38
+ entitySetName: 'someEntitySetName1',
39
+ logicalName: 'someLogicalName1',
40
+ },
41
+ datasource2: {
42
+ runtimeUrl: 'https://contosso.org/2',
43
+ entitySetName: 'someEntitySetName2',
44
+ logicalName: 'someLogicalName2',
45
+ },
46
+ },
47
+ };
48
+ describe('RuntimeMetadataClient', () => {
49
+ let mockPowerOperationExecutor;
50
+ // Console silencing setup - silence all console output for this test file
51
+ let consoleMocks;
52
+ beforeEach(() => {
53
+ mockPowerOperationExecutor = {
54
+ execute: jest.fn(),
55
+ };
56
+ consoleMocks = silenceConsole();
57
+ });
58
+ afterEach(() => {
59
+ jest.clearAllMocks();
60
+ consoleMocks.restore();
61
+ });
62
+ describe('createInstanceAsync - Static Factory Method', () => {
63
+ it('should create instance successfully with valid executor', async () => {
64
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
65
+ expect(instance).toBeInstanceOf(RuntimeMetadataClient);
66
+ });
67
+ it('should handle null/undefined executor', async () => {
68
+ await expect(RuntimeMetadataClient.createInstanceAsync(null)).resolves.toBeInstanceOf(RuntimeMetadataClient);
69
+ });
70
+ });
71
+ describe('getAppConnectionConfigsAsync - Happy Path', () => {
72
+ it('should return connection configurations successfully', async () => {
73
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockAppDataSourceConfigs);
74
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
75
+ const result = await instance.getAppConnectionConfigsAsync();
76
+ expect(mockPowerOperationExecutor.execute).toHaveBeenCalledWith('AppPowerAppsClientPlugin', 'loadAppConnectionsAsync_v2', []);
77
+ expect(result).toEqual(mockAppDataSourceConfigs);
78
+ });
79
+ it('should transform response keys to lowercase', async () => {
80
+ const mockConnectionConfigResponse = {
81
+ success: true,
82
+ data: {
83
+ DataSource1: {
84
+ apiId: 'someApiId_dataSource1',
85
+ connectionName: '01234567-8901-2345-6789-012345678901',
86
+ runtimeUrl: 'https://contosso.org/1',
87
+ error: undefined,
88
+ datasetName: undefined,
89
+ },
90
+ DATASOURCe2: {
91
+ apiId: 'someApiId_dataSource2',
92
+ connectionName: '09876543-2109-8765-4321-098765432109',
93
+ runtimeUrl: 'https://contosso.org/2',
94
+ error: undefined,
95
+ datasetName: undefined,
96
+ },
97
+ },
98
+ };
99
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockConnectionConfigResponse);
100
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
101
+ const result = await instance.getAppConnectionConfigsAsync();
102
+ // Verify all keys are converted to lowercase in result
103
+ expect(result.data).toHaveProperty('datasource1');
104
+ expect(result.data).toHaveProperty('datasource2');
105
+ expect(result.data).not.toHaveProperty('DataSource1');
106
+ expect(result.data).not.toHaveProperty('DATASOURCe2');
107
+ // Verify the transformed data structure
108
+ expect(result.data.datasource1).toEqual({
109
+ apiId: 'someApiId_dataSource1',
110
+ connectionName: '01234567-8901-2345-6789-012345678901',
111
+ runtimeUrl: 'https://contosso.org/1',
112
+ error: undefined,
113
+ datasetName: undefined,
114
+ });
115
+ expect(result.data.datasource2).toEqual({
116
+ apiId: 'someApiId_dataSource2',
117
+ connectionName: '09876543-2109-8765-4321-098765432109',
118
+ runtimeUrl: 'https://contosso.org/2',
119
+ error: undefined,
120
+ datasetName: undefined,
121
+ });
122
+ });
123
+ it('should handle empty connection configurations', async () => {
124
+ const mockConnectionConfigResponse = {
125
+ success: true,
126
+ data: {},
127
+ };
128
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockConnectionConfigResponse);
129
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
130
+ const result = await instance.getAppConnectionConfigsAsync();
131
+ // Verify all keys are converted to lowercase in result
132
+ expect(result.success).toBe(true);
133
+ expect(result.data).toEqual({});
134
+ });
135
+ });
136
+ describe('getAppConnectionConfigsAsync - Error Handling', () => {
137
+ it('should throw PowerDataRuntimeError when executor fails', async () => {
138
+ mockPowerOperationExecutor.execute.mockRejectedValue(new Error('Executor failed'));
139
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
140
+ await expect(instance.getAppConnectionConfigsAsync()).rejects.toThrow(PowerDataRuntimeError);
141
+ });
142
+ it('should handle executor returning invalid response format', async () => {
143
+ mockPowerOperationExecutor.execute.mockResolvedValue({}); // Empty object simulating invalid response
144
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
145
+ await expect(instance.getAppConnectionConfigsAsync()).rejects.toThrow(expect.objectContaining({
146
+ code: ErrorCodes.ConnectionConfigFetchFailed,
147
+ }));
148
+ });
149
+ it('should handle executor throwing synchronous errors', async () => {
150
+ mockPowerOperationExecutor.execute.mockImplementation(() => {
151
+ throw new Error('Synchronous error');
152
+ });
153
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
154
+ await expect(instance.getAppConnectionConfigsAsync()).rejects.toThrow(expect.objectContaining({
155
+ code: ErrorCodes.ConnectionConfigFetchFailed,
156
+ }));
157
+ });
158
+ });
159
+ describe('getAppDataSourceConfigsAsync - Happy Path', () => {
160
+ it('should return data source configurations successfully', async () => {
161
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockCdsAppDataSourceConfigs);
162
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
163
+ const result = await instance.getAppDataSourceConfigsAsync();
164
+ expect(mockPowerOperationExecutor.execute).toHaveBeenCalledWith('AppPowerAppsClientPlugin', 'getAppCdsDataSourceConfigsAsync', []);
165
+ expect(result).toEqual(mockCdsAppDataSourceConfigs);
166
+ });
167
+ it('should transform response keys to lowercase', async () => {
168
+ const mockDataSourceConfigResponse = {
169
+ success: true,
170
+ data: {
171
+ DataSource1: {
172
+ runtimeUrl: 'https://contosso.org/1',
173
+ entitySetName: 'someEntitySetName1',
174
+ logicalName: 'someLogicalName1',
175
+ },
176
+ DATASOURCe2: {
177
+ runtimeUrl: 'https://contosso.org/2',
178
+ entitySetName: 'someEntitySetName2',
179
+ logicalName: 'someLogicalName2',
180
+ },
181
+ },
182
+ };
183
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockDataSourceConfigResponse);
184
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
185
+ const result = await instance.getAppDataSourceConfigsAsync();
186
+ expect(result.data).toHaveProperty('datasource1');
187
+ expect(result.data).toHaveProperty('datasource2');
188
+ expect(result.data).not.toHaveProperty('DataSource1');
189
+ expect(result.data).not.toHaveProperty('DATASOURCe2');
190
+ expect(result.data.datasource1).toEqual({
191
+ runtimeUrl: 'https://contosso.org/1',
192
+ entitySetName: 'someEntitySetName1',
193
+ logicalName: 'someLogicalName1',
194
+ });
195
+ expect(result.data.datasource2).toEqual({
196
+ runtimeUrl: 'https://contosso.org/2',
197
+ entitySetName: 'someEntitySetName2',
198
+ logicalName: 'someLogicalName2',
199
+ });
200
+ });
201
+ it('should handle empty data source configurations', async () => {
202
+ const mockDataSourceConfigResponse = {
203
+ success: true,
204
+ data: {},
205
+ };
206
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockDataSourceConfigResponse);
207
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
208
+ const result = await instance.getAppDataSourceConfigsAsync();
209
+ expect(result.success).toBe(true);
210
+ expect(result.data).toEqual({});
211
+ });
212
+ });
213
+ describe('getAppDataSourceConfigsAsync - Error Handling', () => {
214
+ it('should throw PowerDataRuntimeError when executor fails', async () => {
215
+ mockPowerOperationExecutor.execute.mockRejectedValue(new Error('Executor failed'));
216
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
217
+ await expect(instance.getAppDataSourceConfigsAsync()).rejects.toThrow(PowerDataRuntimeError);
218
+ });
219
+ it('should handle executor returning invalid response format', async () => {
220
+ mockPowerOperationExecutor.execute.mockResolvedValue({}); // Empty object simulating invalid response
221
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
222
+ await expect(instance.getAppDataSourceConfigsAsync()).rejects.toThrow(expect.objectContaining({
223
+ code: ErrorCodes.DataSourceConfigFetchFailed,
224
+ }));
225
+ });
226
+ it('should handle executor throwing synchronous errors', async () => {
227
+ mockPowerOperationExecutor.execute.mockImplementation(() => {
228
+ throw new Error('Synchronous error');
229
+ });
230
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
231
+ await expect(instance.getAppDataSourceConfigsAsync()).rejects.toThrow(expect.objectContaining({
232
+ code: ErrorCodes.DataSourceConfigFetchFailed,
233
+ }));
234
+ });
235
+ });
236
+ describe('Integration Scenarios', () => {
237
+ it('should handle multiple concurrent requests', async () => {
238
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockCdsAppDataSourceConfigs);
239
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
240
+ const promises = [
241
+ instance.getAppDataSourceConfigsAsync(),
242
+ instance.getAppDataSourceConfigsAsync(),
243
+ instance.getAppDataSourceConfigsAsync(),
244
+ ];
245
+ await expect(Promise.all(promises)).resolves.toEqual([
246
+ expect.objectContaining({ success: true }),
247
+ expect.objectContaining({ success: true }),
248
+ expect.objectContaining({ success: true }),
249
+ ]);
250
+ });
251
+ it('should maintain consistent behavior across multiple calls', async () => {
252
+ mockPowerOperationExecutor.execute.mockResolvedValue(mockCdsAppDataSourceConfigs);
253
+ const instance = await RuntimeMetadataClient.createInstanceAsync(mockPowerOperationExecutor);
254
+ const firstCall = await instance.getAppDataSourceConfigsAsync();
255
+ const secondCall = await instance.getAppDataSourceConfigsAsync();
256
+ const thirdCall = await instance.getAppDataSourceConfigsAsync();
257
+ expect(firstCall).toEqual(secondCall);
258
+ expect(secondCall).toEqual(thirdCall);
259
+ expect(firstCall.success).toBe(true);
260
+ expect(secondCall.success).toBe(true);
261
+ expect(thirdCall.success).toBe(true);
262
+ expect(firstCall.data).toEqual(mockCdsAppDataSourceConfigs.data);
263
+ expect(secondCall.data).toEqual(mockCdsAppDataSourceConfigs.data);
264
+ expect(thirdCall.data).toEqual(mockCdsAppDataSourceConfigs.data);
265
+ // Verify no state pollution between calls
266
+ expect(mockPowerOperationExecutor.execute).toHaveBeenCalledTimes(3);
267
+ });
268
+ });
269
+ });
270
+ /* eslint-enable @typescript-eslint/no-explicit-any */
271
+ //# sourceMappingURL=runtimeMetadataClient.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeMetadataClient.test.js","sourceRoot":"","sources":["../../src/__tests__/runtimeMetadataClient.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=runtimeMetadataOperations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeMetadataOperations.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/runtimeMetadataOperations.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,286 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { RuntimeMetadataOperations } from '../internal/data/core/metadata/runtimeMetadataOperations';
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ // Mock the client provider and metadata client
7
+ const mockMetadataClient = {
8
+ getAppConnectionConfigsAsync: jest.fn(),
9
+ getAppDataSourceConfigsAsync: jest.fn(),
10
+ };
11
+ const mockClientProvider = {
12
+ getMetadataClientAsync: jest.fn().mockResolvedValue(mockMetadataClient),
13
+ };
14
+ describe('RuntimeMetadataOperations', () => {
15
+ let runtimeMetadataOperations;
16
+ beforeEach(() => {
17
+ // Reset all mocks before each test
18
+ jest.clearAllMocks();
19
+ // Reset the client provider mock to its default behavior
20
+ mockClientProvider.getMetadataClientAsync.mockResolvedValue(mockMetadataClient);
21
+ // Create fresh instance for each test
22
+ runtimeMetadataOperations = new RuntimeMetadataOperations(mockClientProvider);
23
+ });
24
+ describe('constructor', () => {
25
+ it('should initialize with client provider', () => {
26
+ // Test: Should initialize with client provider
27
+ // - Verify instance is created successfully
28
+ // - Verify client provider is stored correctly
29
+ expect(runtimeMetadataOperations).toBeInstanceOf(RuntimeMetadataOperations);
30
+ expect(runtimeMetadataOperations).toBeDefined();
31
+ });
32
+ });
33
+ describe('getConnections', () => {
34
+ describe('successful scenarios', () => {
35
+ it('should return connections when client call succeeds', async () => {
36
+ // Test: Should return connections when client call succeeds
37
+ // - Mock successful response from getAppConnectionConfigsAsync
38
+ // - Verify correct IOperationResult structure is returned
39
+ // - Verify data is wrapped in array format
40
+ // - Verify success flag is true
41
+ const mockConnectionData = { id: 'conn1', name: 'Test Connection' };
42
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
43
+ success: true,
44
+ data: mockConnectionData,
45
+ error: undefined,
46
+ });
47
+ const result = await runtimeMetadataOperations.getConnections();
48
+ expect(result.success).toBe(true);
49
+ expect(result.data).toEqual([mockConnectionData]);
50
+ expect(result.error).toBeUndefined();
51
+ expect(mockMetadataClient.getAppConnectionConfigsAsync).toHaveBeenCalledWith(undefined);
52
+ });
53
+ it('should handle empty data response', async () => {
54
+ // Test: Should handle empty data response
55
+ // - Mock response with undefined/null data
56
+ // - Verify empty array is returned
57
+ // - Verify success flag matches client response
58
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
59
+ success: true,
60
+ data: undefined,
61
+ error: undefined,
62
+ });
63
+ const result = await runtimeMetadataOperations.getConnections();
64
+ expect(result.success).toBe(true);
65
+ expect(result.data).toEqual([]);
66
+ expect(result.error).toBeUndefined();
67
+ });
68
+ it('should pass operation context to client', async () => {
69
+ // Test: Should pass operation context to client
70
+ // - Provide mock IOperationContext
71
+ // - Verify context is passed through to getAppConnectionConfigsAsync
72
+ const mockContext = { correlationId: 'test-correlation-id' };
73
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
74
+ success: true,
75
+ data: null,
76
+ error: undefined,
77
+ });
78
+ await runtimeMetadataOperations.getConnections(mockContext);
79
+ expect(mockMetadataClient.getAppConnectionConfigsAsync).toHaveBeenCalledWith(mockContext);
80
+ });
81
+ });
82
+ describe('error scenarios', () => {
83
+ it('should handle client call failure', async () => {
84
+ // Test: Should handle client call failure
85
+ // - Mock failed response from getAppConnectionConfigsAsync
86
+ // - Verify error is propagated in result
87
+ // - Verify success flag is false
88
+ // - Verify data is empty array
89
+ const mockError = new Error('Client call failed');
90
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
91
+ success: false,
92
+ data: undefined,
93
+ error: mockError,
94
+ });
95
+ const result = await runtimeMetadataOperations.getConnections();
96
+ expect(result.success).toBe(false);
97
+ expect(result.data).toEqual([]);
98
+ expect(result.error).toBe(mockError);
99
+ });
100
+ it('should handle client provider failure', async () => {
101
+ // Test: Should handle client provider failure
102
+ // - Mock getMetadataClientAsync to throw/reject
103
+ // - Verify error handling behavior
104
+ const mockError = new Error('Client provider failed');
105
+ mockClientProvider.getMetadataClientAsync.mockRejectedValue(mockError);
106
+ await expect(runtimeMetadataOperations.getConnections()).rejects.toThrow('Client provider failed');
107
+ });
108
+ });
109
+ });
110
+ describe('getConnectionApis', () => {
111
+ describe('successful scenarios', () => {
112
+ it('should return connection APIs when client call succeeds', async () => {
113
+ // Test: Should return connection APIs when client call succeeds
114
+ // - Mock successful response from getAppDataSourceConfigsAsync
115
+ // - Verify correct IOperationResult structure is returned
116
+ // - Verify data is cast to IConnectionApi and wrapped in array
117
+ // - Verify success flag is true
118
+ const mockApiData = { id: 'api1', name: 'Test API', operations: [] };
119
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
120
+ success: true,
121
+ data: mockApiData,
122
+ error: undefined,
123
+ });
124
+ const result = await runtimeMetadataOperations.getConnectionApis('test-connection-id');
125
+ expect(result.success).toBe(true);
126
+ expect(result.data).toEqual([mockApiData]);
127
+ expect(result.error).toBeUndefined();
128
+ expect(mockMetadataClient.getAppDataSourceConfigsAsync).toHaveBeenCalledWith(undefined);
129
+ });
130
+ it('should handle empty data response', async () => {
131
+ // Test: Should handle empty data response
132
+ // - Mock response with undefined/null data
133
+ // - Verify empty array is returned
134
+ // - Verify success flag matches client response
135
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
136
+ success: true,
137
+ data: undefined,
138
+ error: undefined,
139
+ });
140
+ const result = await runtimeMetadataOperations.getConnectionApis('test-connection-id');
141
+ expect(result.success).toBe(true);
142
+ expect(result.data).toEqual([]);
143
+ expect(result.error).toBeUndefined();
144
+ });
145
+ it('should pass operation context to client', async () => {
146
+ // Test: Should pass operation context to client
147
+ // - Provide mock IOperationContext
148
+ // - Verify context is passed through to getAppDataSourceConfigsAsync
149
+ const mockContext = { correlationId: 'test-correlation-id' };
150
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
151
+ success: true,
152
+ data: null,
153
+ error: undefined,
154
+ });
155
+ await runtimeMetadataOperations.getConnectionApis('test-connection-id', mockContext);
156
+ expect(mockMetadataClient.getAppDataSourceConfigsAsync).toHaveBeenCalledWith(mockContext);
157
+ });
158
+ it('should accept connection ID parameter', async () => {
159
+ // Test: Should accept connection ID parameter
160
+ // - Verify method accepts connectionId parameter
161
+ // - Note: Current implementation doesn't use connectionId (potential improvement area)
162
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
163
+ success: true,
164
+ data: null,
165
+ error: undefined,
166
+ });
167
+ const connectionId = 'specific-connection-id';
168
+ await runtimeMetadataOperations.getConnectionApis(connectionId);
169
+ // Note: Current implementation doesn't use connectionId - this is documented as potential improvement
170
+ expect(mockMetadataClient.getAppDataSourceConfigsAsync).toHaveBeenCalled();
171
+ });
172
+ });
173
+ describe('error scenarios', () => {
174
+ it('should handle client call failure', async () => {
175
+ // Test: Should handle client call failure
176
+ // - Mock failed response from getAppDataSourceConfigsAsync
177
+ // - Verify error is propagated in result
178
+ // - Verify success flag is false
179
+ // - Verify data is empty array
180
+ const mockError = new Error('Client call failed');
181
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
182
+ success: false,
183
+ data: undefined,
184
+ error: mockError,
185
+ });
186
+ const result = await runtimeMetadataOperations.getConnectionApis('test-connection-id');
187
+ expect(result.success).toBe(false);
188
+ expect(result.data).toEqual([]);
189
+ expect(result.error).toBe(mockError);
190
+ });
191
+ it('should handle client provider failure', async () => {
192
+ // Test: Should handle client provider failure
193
+ // - Mock getMetadataClientAsync to throw/reject
194
+ // - Verify error handling behavior
195
+ const mockError = new Error('Client provider failed');
196
+ mockClientProvider.getMetadataClientAsync.mockRejectedValue(mockError);
197
+ await expect(runtimeMetadataOperations.getConnectionApis('test-connection-id')).rejects.toThrow('Client provider failed');
198
+ });
199
+ });
200
+ describe('edge cases', () => {
201
+ it('should handle null connectionId', async () => {
202
+ // Test: Should handle null/undefined connectionId
203
+ // - Pass null or undefined as connectionId
204
+ // - Verify method doesn't crash (though parameter is unused)
205
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
206
+ success: true,
207
+ data: null,
208
+ error: undefined,
209
+ });
210
+ const result = await runtimeMetadataOperations.getConnectionApis(null);
211
+ expect(result.success).toBe(true);
212
+ expect(result.data).toEqual([]);
213
+ });
214
+ it('should handle undefined connectionId', async () => {
215
+ // Test: Should handle null/undefined connectionId
216
+ // - Pass null or undefined as connectionId
217
+ // - Verify method doesn't crash (though parameter is unused)
218
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
219
+ success: true,
220
+ data: null,
221
+ error: undefined,
222
+ });
223
+ const result = await runtimeMetadataOperations.getConnectionApis(undefined);
224
+ expect(result.success).toBe(true);
225
+ expect(result.data).toEqual([]);
226
+ });
227
+ it('should handle empty string connectionId', async () => {
228
+ // Test: Should handle empty string connectionId
229
+ // - Pass empty string as connectionId
230
+ // - Verify method behavior
231
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
232
+ success: true,
233
+ data: null,
234
+ error: undefined,
235
+ });
236
+ const result = await runtimeMetadataOperations.getConnectionApis('');
237
+ expect(result.success).toBe(true);
238
+ expect(result.data).toEqual([]);
239
+ });
240
+ });
241
+ });
242
+ describe('integration scenarios', () => {
243
+ it('should handle multiple sequential calls', async () => {
244
+ // Test: Should handle multiple sequential calls
245
+ // - Call both getConnections and getConnectionApis
246
+ // - Verify client provider is reused correctly
247
+ // - Verify each call gets fresh client instance
248
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
249
+ success: true,
250
+ data: { id: 'conn1' },
251
+ error: undefined,
252
+ });
253
+ mockMetadataClient.getAppDataSourceConfigsAsync.mockResolvedValue({
254
+ success: true,
255
+ data: { id: 'api1' },
256
+ error: undefined,
257
+ });
258
+ const connectionsResult = await runtimeMetadataOperations.getConnections();
259
+ const apisResult = await runtimeMetadataOperations.getConnectionApis('test-id');
260
+ expect(connectionsResult.success).toBe(true);
261
+ expect(apisResult.success).toBe(true);
262
+ expect(mockClientProvider.getMetadataClientAsync).toHaveBeenCalledTimes(2);
263
+ });
264
+ it('should handle concurrent calls', async () => {
265
+ // Test: Should handle concurrent calls
266
+ // - Make multiple simultaneous calls to same method
267
+ // - Verify thread safety and proper mock behavior
268
+ mockMetadataClient.getAppConnectionConfigsAsync.mockResolvedValue({
269
+ success: true,
270
+ data: { id: 'conn1' },
271
+ error: undefined,
272
+ });
273
+ const promise1 = runtimeMetadataOperations.getConnections();
274
+ const promise2 = runtimeMetadataOperations.getConnections();
275
+ const promise3 = runtimeMetadataOperations.getConnections();
276
+ const results = await Promise.all([promise1, promise2, promise3]);
277
+ results.forEach((result) => {
278
+ expect(result.success).toBe(true);
279
+ expect(result.data).toEqual([{ id: 'conn1' }]);
280
+ });
281
+ expect(mockClientProvider.getMetadataClientAsync).toHaveBeenCalledTimes(3);
282
+ });
283
+ });
284
+ });
285
+ /* eslint-enable @typescript-eslint/no-explicit-any */
286
+ //# sourceMappingURL=runtimeMetadataOperations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeMetadataOperations.test.js","sourceRoot":"","sources":["../../src/__tests__/runtimeMetadataOperations.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serviceSchemaModelSnapshot.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serviceSchemaModelSnapshot.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/serviceSchemaModelSnapshot.test.ts"],"names":[],"mappings":""}