@microsoft/power-apps 1.0.0
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.
- package/LICENSE +153 -0
- package/README.md +43 -0
- package/lib/__tests__/connectorDataOperation.spec.d.ts +5 -0
- package/lib/__tests__/connectorDataOperation.spec.d.ts.map +1 -0
- package/lib/__tests__/connectorDataOperation.spec.js +509 -0
- package/lib/__tests__/connectorDataOperation.spec.js.map +1 -0
- package/lib/__tests__/dataverseDataOperation.spec.d.ts +5 -0
- package/lib/__tests__/dataverseDataOperation.spec.d.ts.map +1 -0
- package/lib/__tests__/dataverseDataOperation.spec.js +349 -0
- package/lib/__tests__/dataverseDataOperation.spec.js.map +1 -0
- package/lib/__tests__/helpers/testHelpers.d.ts +27 -0
- package/lib/__tests__/helpers/testHelpers.d.ts.map +1 -0
- package/lib/__tests__/helpers/testHelpers.js +67 -0
- package/lib/__tests__/helpers/testHelpers.js.map +1 -0
- package/lib/__tests__/index.spec.d.ts +5 -0
- package/lib/__tests__/index.spec.d.ts.map +1 -0
- package/lib/__tests__/index.spec.js +10 -0
- package/lib/__tests__/index.spec.js.map +1 -0
- package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.d.ts +17 -0
- package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.d.ts.map +1 -0
- package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.js +35 -0
- package/lib/__tests__/mocks/mockDataverseRetrieveMultipleResponse.js.map +1 -0
- package/lib/__tests__/mocks/mockLog.d.ts +31 -0
- package/lib/__tests__/mocks/mockLog.d.ts.map +1 -0
- package/lib/__tests__/mocks/mockLog.js +53 -0
- package/lib/__tests__/mocks/mockLog.js.map +1 -0
- package/lib/__tests__/mocks/mockTeamsConnectorResponse.d.ts +76 -0
- package/lib/__tests__/mocks/mockTeamsConnectorResponse.d.ts.map +1 -0
- package/lib/__tests__/mocks/mockTeamsConnectorResponse.js +81 -0
- package/lib/__tests__/mocks/mockTeamsConnectorResponse.js.map +1 -0
- package/lib/__tests__/mocks/silenceConsole.d.ts +37 -0
- package/lib/__tests__/mocks/silenceConsole.d.ts.map +1 -0
- package/lib/__tests__/mocks/silenceConsole.js +58 -0
- package/lib/__tests__/mocks/silenceConsole.js.map +1 -0
- package/lib/__tests__/powerDataRuntimeInstance.test.d.ts +5 -0
- package/lib/__tests__/powerDataRuntimeInstance.test.d.ts.map +1 -0
- package/lib/__tests__/powerDataRuntimeInstance.test.js +179 -0
- package/lib/__tests__/powerDataRuntimeInstance.test.js.map +1 -0
- package/lib/__tests__/powerDataSourcesInfoProvider.test.d.ts +5 -0
- package/lib/__tests__/powerDataSourcesInfoProvider.test.d.ts.map +1 -0
- package/lib/__tests__/powerDataSourcesInfoProvider.test.js +153 -0
- package/lib/__tests__/powerDataSourcesInfoProvider.test.js.map +1 -0
- package/lib/__tests__/runtimeClientProvider.test.d.ts +5 -0
- package/lib/__tests__/runtimeClientProvider.test.d.ts.map +1 -0
- package/lib/__tests__/runtimeClientProvider.test.js +248 -0
- package/lib/__tests__/runtimeClientProvider.test.js.map +1 -0
- package/lib/__tests__/runtimeDataClient.spec.d.ts +2 -0
- package/lib/__tests__/runtimeDataClient.spec.d.ts.map +1 -0
- package/lib/__tests__/runtimeDataClient.spec.js +351 -0
- package/lib/__tests__/runtimeDataClient.spec.js.map +1 -0
- package/lib/__tests__/runtimeDataClient.test.d.ts +2 -0
- package/lib/__tests__/runtimeDataClient.test.d.ts.map +1 -0
- package/lib/__tests__/runtimeDataClient.test.js +351 -0
- package/lib/__tests__/runtimeDataClient.test.js.map +1 -0
- package/lib/__tests__/runtimeDataOperation.test.d.ts +5 -0
- package/lib/__tests__/runtimeDataOperation.test.d.ts.map +1 -0
- package/lib/__tests__/runtimeDataOperation.test.js +234 -0
- package/lib/__tests__/runtimeDataOperation.test.js.map +1 -0
- package/lib/__tests__/runtimeMetadataClient.test.d.ts +5 -0
- package/lib/__tests__/runtimeMetadataClient.test.d.ts.map +1 -0
- package/lib/__tests__/runtimeMetadataClient.test.js +271 -0
- package/lib/__tests__/runtimeMetadataClient.test.js.map +1 -0
- package/lib/__tests__/runtimeMetadataOperations.test.d.ts +5 -0
- package/lib/__tests__/runtimeMetadataOperations.test.d.ts.map +1 -0
- package/lib/__tests__/runtimeMetadataOperations.test.js +286 -0
- package/lib/__tests__/runtimeMetadataOperations.test.js.map +1 -0
- package/lib/__tests__/serviceSchemaModelSnapshot.test.d.ts +2 -0
- package/lib/__tests__/serviceSchemaModelSnapshot.test.d.ts.map +1 -0
- package/lib/__tests__/serviceSchemaModelSnapshot.test.js +98 -0
- package/lib/__tests__/serviceSchemaModelSnapshot.test.js.map +1 -0
- package/lib/__tests__/types.spec.d.ts +5 -0
- package/lib/__tests__/types.spec.d.ts.map +1 -0
- package/lib/__tests__/types.spec.js +104 -0
- package/lib/__tests__/types.spec.js.map +1 -0
- package/lib/__tests__/utils.test.d.ts +5 -0
- package/lib/__tests__/utils.test.d.ts.map +1 -0
- package/lib/__tests__/utils.test.js +33 -0
- package/lib/__tests__/utils.test.js.map +1 -0
- package/lib/app/Lifecycle.d.ts +9 -0
- package/lib/app/Lifecycle.d.ts.map +1 -0
- package/lib/app/Lifecycle.js +36 -0
- package/lib/app/Lifecycle.js.map +1 -0
- package/lib/app/index.d.ts +5 -0
- package/lib/app/index.d.ts.map +1 -0
- package/lib/app/index.js +5 -0
- package/lib/app/index.js.map +1 -0
- package/lib/data/Data.types.d.ts +20 -0
- package/lib/data/Data.types.d.ts.map +1 -0
- package/lib/data/Data.types.js +5 -0
- package/lib/data/Data.types.js.map +1 -0
- package/lib/data/index.d.ts +7 -0
- package/lib/data/index.d.ts.map +1 -0
- package/lib/data/index.js +5 -0
- package/lib/data/index.js.map +1 -0
- package/lib/data/powerAppsData.d.ts +8 -0
- package/lib/data/powerAppsData.d.ts.map +1 -0
- package/lib/data/powerAppsData.js +38 -0
- package/lib/data/powerAppsData.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -0
- package/lib/internal/communication/CompatibleMessageReceiver.d.ts +12 -0
- package/lib/internal/communication/CompatibleMessageReceiver.d.ts.map +1 -0
- package/lib/internal/communication/CompatibleMessageReceiver.js +92 -0
- package/lib/internal/communication/CompatibleMessageReceiver.js.map +1 -0
- package/lib/internal/communication/IncompatibleMessageReceiver.d.ts +10 -0
- package/lib/internal/communication/IncompatibleMessageReceiver.d.ts.map +1 -0
- package/lib/internal/communication/IncompatibleMessageReceiver.js +13 -0
- package/lib/internal/communication/IncompatibleMessageReceiver.js.map +1 -0
- package/lib/internal/communication/MessageReceiver.Types.d.ts +18 -0
- package/lib/internal/communication/MessageReceiver.Types.d.ts.map +1 -0
- package/lib/internal/communication/MessageReceiver.Types.js +5 -0
- package/lib/internal/communication/MessageReceiver.Types.js.map +1 -0
- package/lib/internal/communication/SendMessage.d.ts +11 -0
- package/lib/internal/communication/SendMessage.d.ts.map +1 -0
- package/lib/internal/communication/SendMessage.js +32 -0
- package/lib/internal/communication/SendMessage.js.map +1 -0
- package/lib/internal/communication/SendMessageOperation.d.ts +15 -0
- package/lib/internal/communication/SendMessageOperation.d.ts.map +1 -0
- package/lib/internal/communication/SendMessageOperation.js +18 -0
- package/lib/internal/communication/SendMessageOperation.js.map +1 -0
- package/lib/internal/data/ConnectionUtils.d.ts +5 -0
- package/lib/internal/data/ConnectionUtils.d.ts.map +1 -0
- package/lib/internal/data/ConnectionUtils.js +20 -0
- package/lib/internal/data/ConnectionUtils.js.map +1 -0
- package/lib/internal/data/OperationExecutor.d.ts +18 -0
- package/lib/internal/data/OperationExecutor.d.ts.map +1 -0
- package/lib/internal/data/OperationExecutor.js +35 -0
- package/lib/internal/data/OperationExecutor.js.map +1 -0
- package/lib/internal/data/core/api/createRecord.d.ts +13 -0
- package/lib/internal/data/core/api/createRecord.d.ts.map +1 -0
- package/lib/internal/data/core/api/createRecord.js +15 -0
- package/lib/internal/data/core/api/createRecord.js.map +1 -0
- package/lib/internal/data/core/api/deleteRecord.d.ts +13 -0
- package/lib/internal/data/core/api/deleteRecord.d.ts.map +1 -0
- package/lib/internal/data/core/api/deleteRecord.js +15 -0
- package/lib/internal/data/core/api/deleteRecord.js.map +1 -0
- package/lib/internal/data/core/api/execute.d.ts +11 -0
- package/lib/internal/data/core/api/execute.d.ts.map +1 -0
- package/lib/internal/data/core/api/execute.js +13 -0
- package/lib/internal/data/core/api/execute.js.map +1 -0
- package/lib/internal/data/core/api/retrieveMultipleRecords.d.ts +13 -0
- package/lib/internal/data/core/api/retrieveMultipleRecords.d.ts.map +1 -0
- package/lib/internal/data/core/api/retrieveMultipleRecords.js +15 -0
- package/lib/internal/data/core/api/retrieveMultipleRecords.js.map +1 -0
- package/lib/internal/data/core/api/retrieveRecord.d.ts +13 -0
- package/lib/internal/data/core/api/retrieveRecord.d.ts.map +1 -0
- package/lib/internal/data/core/api/retrieveRecord.js +15 -0
- package/lib/internal/data/core/api/retrieveRecord.js.map +1 -0
- package/lib/internal/data/core/api/updateRecord.d.ts +14 -0
- package/lib/internal/data/core/api/updateRecord.d.ts.map +1 -0
- package/lib/internal/data/core/api/updateRecord.js +16 -0
- package/lib/internal/data/core/api/updateRecord.js.map +1 -0
- package/lib/internal/data/core/common/types.d.ts +230 -0
- package/lib/internal/data/core/common/types.d.ts.map +1 -0
- package/lib/internal/data/core/common/types.js +25 -0
- package/lib/internal/data/core/common/types.js.map +1 -0
- package/lib/internal/data/core/common/utils.d.ts +19 -0
- package/lib/internal/data/core/common/utils.d.ts.map +1 -0
- package/lib/internal/data/core/common/utils.js +47 -0
- package/lib/internal/data/core/common/utils.js.map +1 -0
- package/lib/internal/data/core/data/connectorDataOperation.d.ts +160 -0
- package/lib/internal/data/core/data/connectorDataOperation.d.ts.map +1 -0
- package/lib/internal/data/core/data/connectorDataOperation.js +500 -0
- package/lib/internal/data/core/data/connectorDataOperation.js.map +1 -0
- package/lib/internal/data/core/data/dataverseDataOperation.d.ts +164 -0
- package/lib/internal/data/core/data/dataverseDataOperation.d.ts.map +1 -0
- package/lib/internal/data/core/data/dataverseDataOperation.js +508 -0
- package/lib/internal/data/core/data/dataverseDataOperation.js.map +1 -0
- package/lib/internal/data/core/data/runtimeDataOperations.d.ts +93 -0
- package/lib/internal/data/core/data/runtimeDataOperations.d.ts.map +1 -0
- package/lib/internal/data/core/data/runtimeDataOperations.js +244 -0
- package/lib/internal/data/core/data/runtimeDataOperations.js.map +1 -0
- package/lib/internal/data/core/error/codes.d.ts +31 -0
- package/lib/internal/data/core/error/codes.d.ts.map +1 -0
- package/lib/internal/data/core/error/codes.js +39 -0
- package/lib/internal/data/core/error/codes.js.map +1 -0
- package/lib/internal/data/core/error/constants.d.ts +30 -0
- package/lib/internal/data/core/error/constants.d.ts.map +1 -0
- package/lib/internal/data/core/error/constants.js +33 -0
- package/lib/internal/data/core/error/constants.js.map +1 -0
- package/lib/internal/data/core/error/error.d.ts +8 -0
- package/lib/internal/data/core/error/error.d.ts.map +1 -0
- package/lib/internal/data/core/error/error.js +8 -0
- package/lib/internal/data/core/error/error.js.map +1 -0
- package/lib/internal/data/core/error/messages.d.ts +24 -0
- package/lib/internal/data/core/error/messages.d.ts.map +1 -0
- package/lib/internal/data/core/error/messages.js +55 -0
- package/lib/internal/data/core/error/messages.js.map +1 -0
- package/lib/internal/data/core/error/types.d.ts +30 -0
- package/lib/internal/data/core/error/types.d.ts.map +1 -0
- package/lib/internal/data/core/error/types.js +28 -0
- package/lib/internal/data/core/error/types.js.map +1 -0
- package/lib/internal/data/core/error/util.d.ts +24 -0
- package/lib/internal/data/core/error/util.d.ts.map +1 -0
- package/lib/internal/data/core/error/util.js +71 -0
- package/lib/internal/data/core/error/util.js.map +1 -0
- package/lib/internal/data/core/metadata/runtimeDataSourceService.d.ts +65 -0
- package/lib/internal/data/core/metadata/runtimeDataSourceService.d.ts.map +1 -0
- package/lib/internal/data/core/metadata/runtimeDataSourceService.js +101 -0
- package/lib/internal/data/core/metadata/runtimeDataSourceService.js.map +1 -0
- package/lib/internal/data/core/metadata/runtimeMetadataOperations.d.ts +17 -0
- package/lib/internal/data/core/metadata/runtimeMetadataOperations.d.ts.map +1 -0
- package/lib/internal/data/core/metadata/runtimeMetadataOperations.js +34 -0
- package/lib/internal/data/core/metadata/runtimeMetadataOperations.js.map +1 -0
- package/lib/internal/data/core/runtime/getRuntimeContext.d.ts +11 -0
- package/lib/internal/data/core/runtime/getRuntimeContext.d.ts.map +1 -0
- package/lib/internal/data/core/runtime/getRuntimeContext.js +16 -0
- package/lib/internal/data/core/runtime/getRuntimeContext.js.map +1 -0
- package/lib/internal/data/core/runtime/initializeRuntime.d.ts +13 -0
- package/lib/internal/data/core/runtime/initializeRuntime.d.ts.map +1 -0
- package/lib/internal/data/core/runtime/initializeRuntime.js +38 -0
- package/lib/internal/data/core/runtime/initializeRuntime.js.map +1 -0
- package/lib/internal/data/core/runtime/powerDataRuntime.d.ts +68 -0
- package/lib/internal/data/core/runtime/powerDataRuntime.d.ts.map +1 -0
- package/lib/internal/data/core/runtime/powerDataRuntime.js +116 -0
- package/lib/internal/data/core/runtime/powerDataRuntime.js.map +1 -0
- package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts +20 -0
- package/lib/internal/data/core/runtime/powerDataRuntimeInstance.d.ts.map +1 -0
- package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js +36 -0
- package/lib/internal/data/core/runtime/powerDataRuntimeInstance.js.map +1 -0
- package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.d.ts +34 -0
- package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.d.ts.map +1 -0
- package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.js +45 -0
- package/lib/internal/data/core/runtime/powerDataSourcesInfoProvider.js.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeClientProvider.d.ts +43 -0
- package/lib/internal/data/core/runtimeClient/runtimeClientProvider.d.ts.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeClientProvider.js +87 -0
- package/lib/internal/data/core/runtimeClient/runtimeClientProvider.js.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeDataClient.d.ts +112 -0
- package/lib/internal/data/core/runtimeClient/runtimeDataClient.d.ts.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeDataClient.js +457 -0
- package/lib/internal/data/core/runtimeClient/runtimeDataClient.js.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.d.ts +40 -0
- package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.d.ts.map +1 -0
- package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.js +94 -0
- package/lib/internal/data/core/runtimeClient/runtimeMetadataClient.js.map +1 -0
- package/lib/internal/data/core/telemetry/log.d.ts +20 -0
- package/lib/internal/data/core/telemetry/log.d.ts.map +1 -0
- package/lib/internal/data/core/telemetry/log.js +85 -0
- package/lib/internal/data/core/telemetry/log.js.map +1 -0
- package/lib/internal/data/core/types/index.d.ts +138 -0
- package/lib/internal/data/core/types/index.d.ts.map +1 -0
- package/lib/internal/data/core/types/index.js +7 -0
- package/lib/internal/data/core/types/index.js.map +1 -0
- package/lib/internal/plugin/PluginCommon.d.ts +16 -0
- package/lib/internal/plugin/PluginCommon.d.ts.map +1 -0
- package/lib/internal/plugin/PluginCommon.js +114 -0
- package/lib/internal/plugin/PluginCommon.js.map +1 -0
- package/lib/internal/plugin/PluginMobile.d.ts +13 -0
- package/lib/internal/plugin/PluginMobile.d.ts.map +1 -0
- package/lib/internal/plugin/PluginMobile.js +109 -0
- package/lib/internal/plugin/PluginMobile.js.map +1 -0
- package/lib/telemetry/Logger.types.d.ts +8 -0
- package/lib/telemetry/Logger.types.d.ts.map +1 -0
- package/lib/telemetry/Logger.types.js +5 -0
- package/lib/telemetry/Logger.types.js.map +1 -0
- package/lib/telemetry/LoggerManager.d.ts +6 -0
- package/lib/telemetry/LoggerManager.d.ts.map +1 -0
- package/lib/telemetry/LoggerManager.js +28 -0
- package/lib/telemetry/LoggerManager.js.map +1 -0
- package/lib/telemetry/Metrics.types.d.ts +53 -0
- package/lib/telemetry/Metrics.types.d.ts.map +1 -0
- package/lib/telemetry/Metrics.types.js +5 -0
- package/lib/telemetry/Metrics.types.js.map +1 -0
- package/lib/telemetry/Performance.d.ts +5 -0
- package/lib/telemetry/Performance.d.ts.map +1 -0
- package/lib/telemetry/Performance.js +47 -0
- package/lib/telemetry/Performance.js.map +1 -0
- package/lib/telemetry/index.d.ts +5 -0
- package/lib/telemetry/index.d.ts.map +1 -0
- package/lib/telemetry/index.js +5 -0
- package/lib/telemetry/index.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,153 @@
|
|
|
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 PowerDataSourcesInfoProvider from '../internal/data/core/runtime/powerDataSourcesInfoProvider';
|
|
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
|
+
describe('PowerDataSourcesInfoProvider', () => {
|
|
13
|
+
// Console silencing setup - silence all console output for this test file
|
|
14
|
+
// In this test we expect PowerDataRuntimeError to be thrown, but Log has not been initialized yet
|
|
15
|
+
// so we silence console output to avoid cluttering test results
|
|
16
|
+
let consoleMocks;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
// Reset singleton instance to ensure test isolation
|
|
19
|
+
PowerDataSourcesInfoProvider.instance = null;
|
|
20
|
+
// Silence console output for cleaner test runs
|
|
21
|
+
consoleMocks = silenceConsole();
|
|
22
|
+
});
|
|
23
|
+
afterEach(() => {
|
|
24
|
+
jest.clearAllMocks();
|
|
25
|
+
// Reset singleton instance for clean state
|
|
26
|
+
PowerDataSourcesInfoProvider.instance = null;
|
|
27
|
+
// Restore console methods
|
|
28
|
+
consoleMocks.restore();
|
|
29
|
+
});
|
|
30
|
+
// Test fixtures and mocks
|
|
31
|
+
const mockDataSourcesInfo = {
|
|
32
|
+
abc: {
|
|
33
|
+
tableId: '123',
|
|
34
|
+
version: '1.0.0',
|
|
35
|
+
primaryKey: 'testKey',
|
|
36
|
+
dataSourceType: 'testType',
|
|
37
|
+
apis: {
|
|
38
|
+
createRecord: {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
path: '/api/create',
|
|
41
|
+
parameters: [
|
|
42
|
+
{
|
|
43
|
+
name: 'record',
|
|
44
|
+
type: 'object',
|
|
45
|
+
required: true,
|
|
46
|
+
in: 'body',
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
const secondMockDataSourcesInfo = {
|
|
54
|
+
def: {
|
|
55
|
+
tableId: '456',
|
|
56
|
+
version: '2.0.0',
|
|
57
|
+
primaryKey: 'testKey2',
|
|
58
|
+
dataSourceType: 'testType2',
|
|
59
|
+
apis: {
|
|
60
|
+
createRecord: {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
path: '/api/update',
|
|
63
|
+
parameters: [
|
|
64
|
+
{
|
|
65
|
+
name: 'record',
|
|
66
|
+
type: 'object',
|
|
67
|
+
required: true,
|
|
68
|
+
in: 'body',
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
describe('getInstance - Singleton Pattern', () => {
|
|
76
|
+
it('should create instance when called first time with dataSourcesInfo', async () => {
|
|
77
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
78
|
+
expect(instance).toBeInstanceOf(PowerDataSourcesInfoProvider);
|
|
79
|
+
await expect(instance.getDataSourcesInfo()).resolves.toEqual(mockDataSourcesInfo);
|
|
80
|
+
});
|
|
81
|
+
it('should return same instance on subsequent calls without dataSourcesInfo', () => {
|
|
82
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
83
|
+
const sameInstance = PowerDataSourcesInfoProvider.getInstance();
|
|
84
|
+
expect(sameInstance).toBe(instance);
|
|
85
|
+
});
|
|
86
|
+
it('should return same instance on subsequent calls with different dataSourcesInfo', async () => {
|
|
87
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
88
|
+
const instance2 = PowerDataSourcesInfoProvider.getInstance(secondMockDataSourcesInfo);
|
|
89
|
+
expect(instance2).toBe(instance);
|
|
90
|
+
await expect(instance.getDataSourcesInfo()).resolves.toEqual(mockDataSourcesInfo);
|
|
91
|
+
await expect(instance2.getDataSourcesInfo()).resolves.toEqual(mockDataSourcesInfo);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('getInstance - Error Handling', () => {
|
|
95
|
+
it('should throw PowerDataRuntimeError when called without dataSourcesInfo and no instance exists', () => {
|
|
96
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance()).toThrow(PowerDataRuntimeError);
|
|
97
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance()).toThrowError(expect.objectContaining({
|
|
98
|
+
code: ErrorCodes.DataSourcesInfoNotFound,
|
|
99
|
+
}));
|
|
100
|
+
});
|
|
101
|
+
it('should throw PowerDataRuntimeError when called with undefined dataSourcesInfo and no instance exists', () => {
|
|
102
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance(undefined)).toThrow(PowerDataRuntimeError);
|
|
103
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance(undefined)).toThrowError(expect.objectContaining({
|
|
104
|
+
code: ErrorCodes.DataSourcesInfoNotFound,
|
|
105
|
+
}));
|
|
106
|
+
});
|
|
107
|
+
it('should throw PowerDataRuntimeError when called with null dataSourcesInfo and no instance exists', () => {
|
|
108
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance(null)).toThrow(PowerDataRuntimeError);
|
|
109
|
+
expect(() => PowerDataSourcesInfoProvider.getInstance(null)).toThrowError(expect.objectContaining({
|
|
110
|
+
code: ErrorCodes.DataSourcesInfoNotFound,
|
|
111
|
+
}));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('getDataSourcesInfo - Happy Path', () => {
|
|
115
|
+
it('should return the data sources info provided during initialization', async () => {
|
|
116
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
117
|
+
expect(await instance.getDataSourcesInfo()).toEqual(mockDataSourcesInfo);
|
|
118
|
+
});
|
|
119
|
+
it('should return consistent data sources info across multiple calls', async () => {
|
|
120
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
121
|
+
const firstCall = await instance.getDataSourcesInfo();
|
|
122
|
+
const secondCall = await instance.getDataSourcesInfo();
|
|
123
|
+
const thirdCall = await instance.getDataSourcesInfo();
|
|
124
|
+
expect(firstCall).toBe(secondCall);
|
|
125
|
+
expect(secondCall).toBe(thirdCall);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe('Singleton State Management', () => {
|
|
129
|
+
it('should maintain singleton instance across different test scenarios', () => {
|
|
130
|
+
const instance1 = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
131
|
+
const instance2 = PowerDataSourcesInfoProvider.getInstance();
|
|
132
|
+
expect(instance2).toBe(instance1);
|
|
133
|
+
});
|
|
134
|
+
it('should preserve data sources info throughout instance lifecycle', async () => {
|
|
135
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
136
|
+
const originalData = await instance.getDataSourcesInfo();
|
|
137
|
+
await instance.getDataSourcesInfo();
|
|
138
|
+
await instance.getDataSourcesInfo();
|
|
139
|
+
const finalData = await instance.getDataSourcesInfo();
|
|
140
|
+
expect(finalData).toBe(originalData);
|
|
141
|
+
expect(finalData).toEqual(mockDataSourcesInfo);
|
|
142
|
+
});
|
|
143
|
+
it('should handle concurrent getDataSourcesInfo calls correctly', async () => {
|
|
144
|
+
const instance = PowerDataSourcesInfoProvider.getInstance(mockDataSourcesInfo);
|
|
145
|
+
const promises = Array.from({ length: 10 }, () => instance.getDataSourcesInfo());
|
|
146
|
+
const results = await Promise.all(promises);
|
|
147
|
+
expect(results.every((result) => result === results[0])).toBe(true);
|
|
148
|
+
expect(results[0]).toEqual(mockDataSourcesInfo);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
153
|
+
//# sourceMappingURL=powerDataSourcesInfoProvider.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"powerDataSourcesInfoProvider.test.js","sourceRoot":"","sources":["../../src/__tests__/powerDataSourcesInfoProvider.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAEtF,OAAO,4BAA4B,MAAM,4DAA4D,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,uDAAuD;AACvD,qEAAqE;AACrE,IAAI,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAEzE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,0EAA0E;IAC1E,kGAAkG;IAClG,gEAAgE;IAChE,IAAI,YAA+C,CAAC;IAEpD,UAAU,CAAC,GAAG,EAAE;QACd,oDAAoD;QACnD,4BAAoC,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEtD,+CAA+C;QAC/C,YAAY,GAAG,cAAc,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,2CAA2C;QAC1C,4BAAoC,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEtD,0BAA0B;QAC1B,YAAY,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,mBAAmB,GAAoB;QAC3C,GAAG,EAAE;YACH,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,UAAU;YAC1B,IAAI,EAAE;gBACJ,YAAY,EAAE;oBACZ,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,IAAI;4BACd,EAAE,EAAE,MAAM;yBACX;qBACF;iBACF;aACF;SACF;KACF,CAAC;IAEF,MAAM,yBAAyB,GAAoB;QACjD,GAAG,EAAE;YACH,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,UAAU;YACtB,cAAc,EAAE,WAAW;YAC3B,IAAI,EAAE;gBACJ,YAAY,EAAE;oBACZ,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE;wBACV;4BACE,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,QAAQ;4BACd,QAAQ,EAAE,IAAI;4BACd,EAAE,EAAE,MAAM;yBACX;qBACF;iBACF;aACF;SACF;KACF,CAAC;IAEF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC;YAC9D,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;YACjF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,4BAA4B,CAAC,WAAW,EAAE,CAAC;YAChE,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,4BAA4B,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;YACtF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAClF,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,+FAA+F,EAAE,GAAG,EAAE;YACvG,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACxF,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC,CAAC,YAAY,CACnE,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,UAAU,CAAC,uBAAuB;aACzC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sGAAsG,EAAE,GAAG,EAAE;YAC9G,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACjG,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAC5E,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,UAAU,CAAC,uBAAuB;aACzC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iGAAiG,EAAE,GAAG,EAAE;YACzG,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,IAAkC,CAAC,CAAC,CAAC,OAAO,CAChG,qBAAqB,CACtB,CAAC;YACF,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC,IAAkC,CAAC,CAAC,CAAC,YAAY,CACrG,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,UAAU,CAAC,uBAAuB;aACzC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,CAAC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,SAAS,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAChF,MAAM,SAAS,GAAG,4BAA4B,CAAC,WAAW,EAAE,CAAC;YAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAEzD,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACpC,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAEpC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,QAAQ,GAAG,4BAA4B,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH,sDAAsD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeClientProvider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/runtimeClientProvider.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { afterEach, beforeEach, describe, it, jest } from '@jest/globals';
|
|
5
|
+
import { PowerDataRuntimeError } from '../internal/data/core/error/error';
|
|
6
|
+
import { RuntimeClientProvider } from '../internal/data/core/runtimeClient/runtimeClientProvider';
|
|
7
|
+
import { RuntimeDataClient } from '../internal/data/core/runtimeClient/runtimeDataClient';
|
|
8
|
+
import { RuntimeMetadataClient } from '../internal/data/core/runtimeClient/runtimeMetadataClient';
|
|
9
|
+
import { mockSilentLogger } from './mocks/mockLog';
|
|
10
|
+
import { silenceConsole } from './mocks/silenceConsole';
|
|
11
|
+
// Mock the runtime client modules to control their behavior in tests
|
|
12
|
+
jest.mock('../internal/data/core/runtimeClient/runtimeDataClient');
|
|
13
|
+
jest.mock('../internal/data/core/runtimeClient/runtimeMetadataClient');
|
|
14
|
+
// Mock the telemetry log module to avoid actual logging during tests
|
|
15
|
+
jest.mock('../internal/data/core/telemetry/log', () => mockSilentLogger);
|
|
16
|
+
describe('RuntimeClientProvider', () => {
|
|
17
|
+
// Test fixtures and mocks
|
|
18
|
+
let runtimeClientProvider;
|
|
19
|
+
let mockPowerOperationExecutor;
|
|
20
|
+
let mockDataClient;
|
|
21
|
+
let mockMetadataClient;
|
|
22
|
+
// Spies for static factory methods
|
|
23
|
+
let createDataClientSpy;
|
|
24
|
+
let createMetadataClientSpy;
|
|
25
|
+
// Console silencing setup - silence all console output for this test file
|
|
26
|
+
let consoleMocks;
|
|
27
|
+
// Setup before each test
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
// Create mocked power operation executor
|
|
30
|
+
mockPowerOperationExecutor = {
|
|
31
|
+
execute: jest.fn(),
|
|
32
|
+
};
|
|
33
|
+
// Create mocked runtime clients
|
|
34
|
+
mockDataClient = {
|
|
35
|
+
createDataAsync: jest.fn(),
|
|
36
|
+
updateDataAsync: jest.fn(),
|
|
37
|
+
deleteDataAsync: jest.fn(),
|
|
38
|
+
retrieveDataAsync: jest.fn(),
|
|
39
|
+
};
|
|
40
|
+
mockMetadataClient = {
|
|
41
|
+
getAppConnectionConfigsAsync: jest.fn(),
|
|
42
|
+
getAppDataSourceConfigsAsync: jest.fn(),
|
|
43
|
+
};
|
|
44
|
+
// Setup spies for static factory methods
|
|
45
|
+
createDataClientSpy = jest
|
|
46
|
+
.spyOn(RuntimeDataClient, 'createInstanceAsync')
|
|
47
|
+
.mockResolvedValue(mockDataClient);
|
|
48
|
+
createMetadataClientSpy = jest
|
|
49
|
+
.spyOn(RuntimeMetadataClient, 'createInstanceAsync')
|
|
50
|
+
.mockResolvedValue(mockMetadataClient);
|
|
51
|
+
// Create fresh instance for each test
|
|
52
|
+
runtimeClientProvider = new RuntimeClientProvider(mockPowerOperationExecutor);
|
|
53
|
+
consoleMocks = silenceConsole();
|
|
54
|
+
});
|
|
55
|
+
// Cleanup after each test
|
|
56
|
+
afterEach(() => {
|
|
57
|
+
jest.clearAllMocks();
|
|
58
|
+
createDataClientSpy.mockRestore();
|
|
59
|
+
createMetadataClientSpy.mockRestore();
|
|
60
|
+
consoleMocks.restore();
|
|
61
|
+
});
|
|
62
|
+
describe('Constructor', () => {
|
|
63
|
+
it('should initialize with provided power operation executor', async () => {
|
|
64
|
+
runtimeClientProvider = new RuntimeClientProvider(mockPowerOperationExecutor);
|
|
65
|
+
// Verify clients are not initialized until requested
|
|
66
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(0);
|
|
67
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(0);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('getDataClientAsync - Happy Path', () => {
|
|
71
|
+
it('should initialize data client only when getDataClientAsync is called the first time', async () => {
|
|
72
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(0);
|
|
73
|
+
await runtimeClientProvider.getDataClientAsync();
|
|
74
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(1);
|
|
75
|
+
});
|
|
76
|
+
it('should return cached data client on subsequent calls', async () => {
|
|
77
|
+
const client1 = await runtimeClientProvider.getDataClientAsync();
|
|
78
|
+
const client2 = await runtimeClientProvider.getDataClientAsync();
|
|
79
|
+
expect(client1).toBe(client2);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('getDataClientAsync - Error Handling', () => {
|
|
83
|
+
it('should throw DataClientInitFailed when createInstanceAsync fails with error', async () => {
|
|
84
|
+
createDataClientSpy.mockRejectedValue(new Error('Initialization failed'));
|
|
85
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
86
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
87
|
+
name: 'PowerDataRuntimeError',
|
|
88
|
+
message: 'Failed to initialize PowerDataClient: Initialization failed',
|
|
89
|
+
}));
|
|
90
|
+
});
|
|
91
|
+
it('should throw when createInstanceAsync throwing synchronous errors', async () => {
|
|
92
|
+
// TODO: Test synchronous error handling
|
|
93
|
+
createDataClientSpy.mockImplementation(() => {
|
|
94
|
+
throw new Error('Synchronous error');
|
|
95
|
+
});
|
|
96
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
97
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
98
|
+
name: 'PowerDataRuntimeError',
|
|
99
|
+
message: 'Failed to initialize PowerDataClient: Synchronous error',
|
|
100
|
+
}));
|
|
101
|
+
});
|
|
102
|
+
it('should throw DataClientNotInitialized when createInstanceAsync returns undefined', async () => {
|
|
103
|
+
createDataClientSpy.mockResolvedValue(undefined);
|
|
104
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
105
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
106
|
+
name: 'PowerDataRuntimeError',
|
|
107
|
+
message: 'Failed to initialize PowerDataClient: PowerDataClient is not initialized',
|
|
108
|
+
}));
|
|
109
|
+
});
|
|
110
|
+
it('should throw DataClientNotInitialized when createInstanceAsync returns null', async () => {
|
|
111
|
+
createDataClientSpy.mockResolvedValue(null);
|
|
112
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
113
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
114
|
+
name: 'PowerDataRuntimeError',
|
|
115
|
+
message: 'Failed to initialize PowerDataClient: PowerDataClient is not initialized',
|
|
116
|
+
}));
|
|
117
|
+
});
|
|
118
|
+
it('should handle async rejections and convert to PowerDataRuntimeError', async () => {
|
|
119
|
+
createDataClientSpy.mockImplementation(() => {
|
|
120
|
+
return Promise.reject(new Error('Async error'));
|
|
121
|
+
});
|
|
122
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
123
|
+
await expect(runtimeClientProvider.getDataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
124
|
+
name: 'PowerDataRuntimeError',
|
|
125
|
+
message: 'Failed to initialize PowerDataClient: Async error',
|
|
126
|
+
}));
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('getMetadataClientAsync - Happy Path', () => {
|
|
130
|
+
it('should initialize metadata client only when getMetadataClientAsync is called the first time', async () => {
|
|
131
|
+
// TODO: Test that initialization doesn't happen until requested
|
|
132
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(0);
|
|
133
|
+
await runtimeClientProvider.getMetadataClientAsync();
|
|
134
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(1);
|
|
135
|
+
expect(createMetadataClientSpy).toHaveBeenCalledWith(mockPowerOperationExecutor);
|
|
136
|
+
});
|
|
137
|
+
it('should return cached metadata client on subsequent calls', async () => {
|
|
138
|
+
// TODO: Test lazy initialization caching behavior
|
|
139
|
+
const client1 = await runtimeClientProvider.getMetadataClientAsync();
|
|
140
|
+
const client2 = await runtimeClientProvider.getMetadataClientAsync();
|
|
141
|
+
expect(client1).toBe(client2);
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
describe('getMetadataClientAsync - Error Handling', () => {
|
|
145
|
+
it('should throw MetadataClientInitFailed when createInstanceAsync fails with error', async () => {
|
|
146
|
+
createMetadataClientSpy.mockRejectedValue(new Error('Initialization failed'));
|
|
147
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
148
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
149
|
+
name: 'PowerDataRuntimeError',
|
|
150
|
+
message: 'Failed to initialize PowerMetadataClient: Initialization failed',
|
|
151
|
+
}));
|
|
152
|
+
});
|
|
153
|
+
it('should throw when createInstanceAsync throwing synchronous errors', async () => {
|
|
154
|
+
// TODO: Test synchronous error handling
|
|
155
|
+
createMetadataClientSpy.mockImplementation(() => {
|
|
156
|
+
throw new Error('Synchronous error');
|
|
157
|
+
});
|
|
158
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
159
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
160
|
+
name: 'PowerDataRuntimeError',
|
|
161
|
+
message: 'Failed to initialize PowerMetadataClient: Synchronous error',
|
|
162
|
+
}));
|
|
163
|
+
});
|
|
164
|
+
it('should throw MetadataClientNotInitialized when createInstanceAsync returns undefined', async () => {
|
|
165
|
+
createMetadataClientSpy.mockResolvedValue(undefined);
|
|
166
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
167
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
168
|
+
name: 'PowerDataRuntimeError',
|
|
169
|
+
message: 'Failed to initialize PowerMetadataClient: PowerMetadataClient is not initialized',
|
|
170
|
+
}));
|
|
171
|
+
});
|
|
172
|
+
it('should throw MetadataClientNotInitialized when createInstanceAsync returns null', async () => {
|
|
173
|
+
createMetadataClientSpy.mockResolvedValue(null);
|
|
174
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
175
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
176
|
+
name: 'PowerDataRuntimeError',
|
|
177
|
+
message: 'Failed to initialize PowerMetadataClient: PowerMetadataClient is not initialized',
|
|
178
|
+
}));
|
|
179
|
+
});
|
|
180
|
+
it('should handle async rejections and convert to PowerDataRuntimeError', async () => {
|
|
181
|
+
createMetadataClientSpy.mockImplementation(() => {
|
|
182
|
+
return Promise.reject(new Error('Async error'));
|
|
183
|
+
});
|
|
184
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(PowerDataRuntimeError);
|
|
185
|
+
await expect(runtimeClientProvider.getMetadataClientAsync()).rejects.toThrow(expect.objectContaining({
|
|
186
|
+
name: 'PowerDataRuntimeError',
|
|
187
|
+
message: 'Failed to initialize PowerMetadataClient: Async error',
|
|
188
|
+
}));
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe('reset() Method', () => {
|
|
192
|
+
it('should reset both clients to undefined', async () => {
|
|
193
|
+
// Initialize clients first
|
|
194
|
+
await runtimeClientProvider.getDataClientAsync();
|
|
195
|
+
await runtimeClientProvider.getMetadataClientAsync();
|
|
196
|
+
// Verify clients were created
|
|
197
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(1);
|
|
198
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(1);
|
|
199
|
+
// Reset the clients
|
|
200
|
+
runtimeClientProvider.reset();
|
|
201
|
+
// Verify that calling the getters again will create new instances
|
|
202
|
+
await runtimeClientProvider.getDataClientAsync();
|
|
203
|
+
await runtimeClientProvider.getMetadataClientAsync();
|
|
204
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(2);
|
|
205
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(2);
|
|
206
|
+
});
|
|
207
|
+
it('should allow re-initialization after reset', async () => {
|
|
208
|
+
// Initialize clients first
|
|
209
|
+
await runtimeClientProvider.getDataClientAsync();
|
|
210
|
+
await runtimeClientProvider.getMetadataClientAsync();
|
|
211
|
+
// Reset the clients
|
|
212
|
+
runtimeClientProvider.reset();
|
|
213
|
+
// Re-initialize clients
|
|
214
|
+
const newDataClient = await runtimeClientProvider.getDataClientAsync();
|
|
215
|
+
const newMetadataClient = await runtimeClientProvider.getMetadataClientAsync();
|
|
216
|
+
// Verify new instances are created
|
|
217
|
+
expect(newDataClient).toBeDefined();
|
|
218
|
+
expect(newMetadataClient).toBeDefined();
|
|
219
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(2);
|
|
220
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(2);
|
|
221
|
+
});
|
|
222
|
+
it('should reset even if clients were never initialized', () => {
|
|
223
|
+
// Verify clients are not initialized initially
|
|
224
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(0);
|
|
225
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(0);
|
|
226
|
+
// Reset the clients without prior initialization
|
|
227
|
+
runtimeClientProvider.reset();
|
|
228
|
+
// Verify reset doesn't cause any issues
|
|
229
|
+
expect(createDataClientSpy).toHaveBeenCalledTimes(0);
|
|
230
|
+
expect(createMetadataClientSpy).toHaveBeenCalledTimes(0);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
describe('Concurrent Access Patterns', () => {
|
|
234
|
+
it('should handle concurrent calls to getDataClientAsync correctly', async () => {
|
|
235
|
+
// TODO: Test thread-safety and race conditions
|
|
236
|
+
const promises = Array.from({ length: 10 }, () => runtimeClientProvider.getDataClientAsync());
|
|
237
|
+
const results = await Promise.all(promises);
|
|
238
|
+
expect(results.every((client) => client === results[0])).toBe(true);
|
|
239
|
+
});
|
|
240
|
+
it('should handle concurrent calls to getMetadataClientAsync correctly', async () => {
|
|
241
|
+
// TODO: Test thread-safety and race conditions
|
|
242
|
+
const promises = Array.from({ length: 10 }, () => runtimeClientProvider.getMetadataClientAsync());
|
|
243
|
+
const results = await Promise.all(promises);
|
|
244
|
+
expect(results.every((client) => client === results[0])).toBe(true);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=runtimeClientProvider.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeClientProvider.test.js","sourceRoot":"","sources":["../../src/__tests__/runtimeClientProvider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeDataClient.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/runtimeDataClient.spec.ts"],"names":[],"mappings":""}
|