tm1npm 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/.env.example +16 -0
- package/.eslintrc.js +28 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/question.md +24 -0
- package/.github/workflows/publish-npm.yml +53 -0
- package/.github/workflows/test-on-tag.yml +172 -0
- package/DEVELOPMENT_GUIDE.md +587 -0
- package/LICENSE +21 -0
- package/README.md +580 -0
- package/jest.ci.config.js +83 -0
- package/jest.config.js +68 -0
- package/lib/exceptions/TM1Exception.d.ts +17 -0
- package/lib/exceptions/TM1Exception.d.ts.map +1 -0
- package/lib/exceptions/TM1Exception.js +36 -0
- package/lib/exceptions/TM1RestException.d.ts +10 -0
- package/lib/exceptions/TM1RestException.d.ts.map +1 -0
- package/lib/exceptions/TM1RestException.js +17 -0
- package/lib/exceptions/TM1TimeoutException.d.ts +9 -0
- package/lib/exceptions/TM1TimeoutException.d.ts.map +1 -0
- package/lib/exceptions/TM1TimeoutException.js +16 -0
- package/lib/index.d.ts +41 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +132 -0
- package/lib/objects/Annotation.d.ts +36 -0
- package/lib/objects/Annotation.d.ts.map +1 -0
- package/lib/objects/Annotation.js +134 -0
- package/lib/objects/Application.d.ts +67 -0
- package/lib/objects/Application.d.ts.map +1 -0
- package/lib/objects/Application.js +125 -0
- package/lib/objects/Axis.d.ts +36 -0
- package/lib/objects/Axis.d.ts.map +1 -0
- package/lib/objects/Axis.js +103 -0
- package/lib/objects/Chore.d.ts +43 -0
- package/lib/objects/Chore.d.ts.map +1 -0
- package/lib/objects/Chore.js +129 -0
- package/lib/objects/ChoreFrequency.d.ts +23 -0
- package/lib/objects/ChoreFrequency.d.ts.map +1 -0
- package/lib/objects/ChoreFrequency.js +61 -0
- package/lib/objects/ChoreStartTime.d.ts +15 -0
- package/lib/objects/ChoreStartTime.d.ts.map +1 -0
- package/lib/objects/ChoreStartTime.js +85 -0
- package/lib/objects/ChoreTask.d.ts +28 -0
- package/lib/objects/ChoreTask.d.ts.map +1 -0
- package/lib/objects/ChoreTask.js +66 -0
- package/lib/objects/Cube.d.ts +26 -0
- package/lib/objects/Cube.d.ts.map +1 -0
- package/lib/objects/Cube.js +109 -0
- package/lib/objects/Dimension.d.ts +26 -0
- package/lib/objects/Dimension.d.ts.map +1 -0
- package/lib/objects/Dimension.js +86 -0
- package/lib/objects/Element.d.ts +35 -0
- package/lib/objects/Element.d.ts.map +1 -0
- package/lib/objects/Element.js +115 -0
- package/lib/objects/ElementAttribute.d.ts +28 -0
- package/lib/objects/ElementAttribute.d.ts.map +1 -0
- package/lib/objects/ElementAttribute.js +97 -0
- package/lib/objects/Git.d.ts +21 -0
- package/lib/objects/Git.d.ts.map +1 -0
- package/lib/objects/Git.js +49 -0
- package/lib/objects/GitCommit.d.ts +12 -0
- package/lib/objects/GitCommit.d.ts.map +1 -0
- package/lib/objects/GitCommit.js +26 -0
- package/lib/objects/GitPlan.d.ts +35 -0
- package/lib/objects/GitPlan.d.ts.map +1 -0
- package/lib/objects/GitPlan.js +78 -0
- package/lib/objects/GitRemote.d.ts +12 -0
- package/lib/objects/GitRemote.d.ts.map +1 -0
- package/lib/objects/GitRemote.js +26 -0
- package/lib/objects/Hierarchy.d.ts +47 -0
- package/lib/objects/Hierarchy.d.ts.map +1 -0
- package/lib/objects/Hierarchy.js +165 -0
- package/lib/objects/MDXView.d.ts +19 -0
- package/lib/objects/MDXView.d.ts.map +1 -0
- package/lib/objects/MDXView.js +67 -0
- package/lib/objects/NativeView.d.ts +39 -0
- package/lib/objects/NativeView.d.ts.map +1 -0
- package/lib/objects/NativeView.js +209 -0
- package/lib/objects/Process.d.ts +70 -0
- package/lib/objects/Process.d.ts.map +1 -0
- package/lib/objects/Process.js +210 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts +60 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts.map +1 -0
- package/lib/objects/ProcessDebugBreakpoint.js +168 -0
- package/lib/objects/ProcessParameter.d.ts +23 -0
- package/lib/objects/ProcessParameter.d.ts.map +1 -0
- package/lib/objects/ProcessParameter.js +55 -0
- package/lib/objects/ProcessVariable.d.ts +26 -0
- package/lib/objects/ProcessVariable.d.ts.map +1 -0
- package/lib/objects/ProcessVariable.js +63 -0
- package/lib/objects/Rules.d.ts +30 -0
- package/lib/objects/Rules.d.ts.map +1 -0
- package/lib/objects/Rules.js +103 -0
- package/lib/objects/Sandbox.d.ts +21 -0
- package/lib/objects/Sandbox.d.ts.map +1 -0
- package/lib/objects/Sandbox.js +64 -0
- package/lib/objects/Server.d.ts +27 -0
- package/lib/objects/Server.d.ts.map +1 -0
- package/lib/objects/Server.js +26 -0
- package/lib/objects/Subset.d.ts +44 -0
- package/lib/objects/Subset.d.ts.map +1 -0
- package/lib/objects/Subset.js +222 -0
- package/lib/objects/TM1Object.d.ts +8 -0
- package/lib/objects/TM1Object.d.ts.map +1 -0
- package/lib/objects/TM1Object.js +17 -0
- package/lib/objects/TM1Project.d.ts +74 -0
- package/lib/objects/TM1Project.d.ts.map +1 -0
- package/lib/objects/TM1Project.js +409 -0
- package/lib/objects/User.d.ts +42 -0
- package/lib/objects/User.d.ts.map +1 -0
- package/lib/objects/User.js +157 -0
- package/lib/objects/View.d.ts +19 -0
- package/lib/objects/View.d.ts.map +1 -0
- package/lib/objects/View.js +33 -0
- package/lib/objects/index.d.ts +30 -0
- package/lib/objects/index.d.ts.map +1 -0
- package/lib/objects/index.js +68 -0
- package/lib/services/AnnotationService.d.ts +17 -0
- package/lib/services/AnnotationService.d.ts.map +1 -0
- package/lib/services/AnnotationService.js +91 -0
- package/lib/services/ApplicationService.d.ts +21 -0
- package/lib/services/ApplicationService.d.ts.map +1 -0
- package/lib/services/ApplicationService.js +227 -0
- package/lib/services/AuditLogService.d.ts +15 -0
- package/lib/services/AuditLogService.d.ts.map +1 -0
- package/lib/services/AuditLogService.js +153 -0
- package/lib/services/CellService.d.ts +191 -0
- package/lib/services/CellService.d.ts.map +1 -0
- package/lib/services/CellService.js +597 -0
- package/lib/services/ChoreService.d.ts +24 -0
- package/lib/services/ChoreService.d.ts.map +1 -0
- package/lib/services/ChoreService.js +219 -0
- package/lib/services/ConfigurationService.d.ts +18 -0
- package/lib/services/ConfigurationService.d.ts.map +1 -0
- package/lib/services/ConfigurationService.js +60 -0
- package/lib/services/CubeService.d.ts +43 -0
- package/lib/services/CubeService.d.ts.map +1 -0
- package/lib/services/CubeService.js +296 -0
- package/lib/services/DimensionService.d.ts +21 -0
- package/lib/services/DimensionService.d.ts.map +1 -0
- package/lib/services/DimensionService.js +146 -0
- package/lib/services/ElementService.d.ts +132 -0
- package/lib/services/ElementService.d.ts.map +1 -0
- package/lib/services/ElementService.js +579 -0
- package/lib/services/FileService.d.ts +14 -0
- package/lib/services/FileService.d.ts.map +1 -0
- package/lib/services/FileService.js +65 -0
- package/lib/services/GitService.d.ts +23 -0
- package/lib/services/GitService.d.ts.map +1 -0
- package/lib/services/GitService.js +225 -0
- package/lib/services/HierarchyService.d.ts +32 -0
- package/lib/services/HierarchyService.d.ts.map +1 -0
- package/lib/services/HierarchyService.js +235 -0
- package/lib/services/JobService.d.ts +13 -0
- package/lib/services/JobService.d.ts.map +1 -0
- package/lib/services/JobService.js +83 -0
- package/lib/services/LoggerService.d.ts +16 -0
- package/lib/services/LoggerService.d.ts.map +1 -0
- package/lib/services/LoggerService.js +101 -0
- package/lib/services/ManageService.d.ts +47 -0
- package/lib/services/ManageService.d.ts.map +1 -0
- package/lib/services/ManageService.js +221 -0
- package/lib/services/MessageLogService.d.ts +13 -0
- package/lib/services/MessageLogService.d.ts.map +1 -0
- package/lib/services/MessageLogService.js +175 -0
- package/lib/services/MonitoringService.d.ts +29 -0
- package/lib/services/MonitoringService.d.ts.map +1 -0
- package/lib/services/MonitoringService.js +86 -0
- package/lib/services/ObjectService.d.ts +8 -0
- package/lib/services/ObjectService.d.ts.map +1 -0
- package/lib/services/ObjectService.js +20 -0
- package/lib/services/PowerBiService.d.ts +13 -0
- package/lib/services/PowerBiService.d.ts.map +1 -0
- package/lib/services/PowerBiService.js +52 -0
- package/lib/services/ProcessService.d.ts +57 -0
- package/lib/services/ProcessService.d.ts.map +1 -0
- package/lib/services/ProcessService.js +499 -0
- package/lib/services/RestService.d.ts +68 -0
- package/lib/services/RestService.d.ts.map +1 -0
- package/lib/services/RestService.js +166 -0
- package/lib/services/SandboxService.d.ts +28 -0
- package/lib/services/SandboxService.d.ts.map +1 -0
- package/lib/services/SandboxService.js +197 -0
- package/lib/services/SecurityService.d.ts +33 -0
- package/lib/services/SecurityService.d.ts.map +1 -0
- package/lib/services/SecurityService.js +249 -0
- package/lib/services/ServerService.d.ts +55 -0
- package/lib/services/ServerService.d.ts.map +1 -0
- package/lib/services/ServerService.js +247 -0
- package/lib/services/SessionService.d.ts +15 -0
- package/lib/services/SessionService.d.ts.map +1 -0
- package/lib/services/SessionService.js +68 -0
- package/lib/services/SubsetService.d.ts +13 -0
- package/lib/services/SubsetService.d.ts.map +1 -0
- package/lib/services/SubsetService.js +46 -0
- package/lib/services/TM1Service.d.ts +39 -0
- package/lib/services/TM1Service.d.ts.map +1 -0
- package/lib/services/TM1Service.js +94 -0
- package/lib/services/ThreadService.d.ts +15 -0
- package/lib/services/ThreadService.d.ts.map +1 -0
- package/lib/services/ThreadService.js +104 -0
- package/lib/services/TransactionLogService.d.ts +11 -0
- package/lib/services/TransactionLogService.d.ts.map +1 -0
- package/lib/services/TransactionLogService.js +124 -0
- package/lib/services/UserService.d.ts +14 -0
- package/lib/services/UserService.d.ts.map +1 -0
- package/lib/services/UserService.js +103 -0
- package/lib/services/ViewService.d.ts +30 -0
- package/lib/services/ViewService.d.ts.map +1 -0
- package/lib/services/ViewService.js +331 -0
- package/lib/services/index.d.ts +26 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +56 -0
- package/lib/tests/100PercentParityCheck.test.d.ts +6 -0
- package/lib/tests/100PercentParityCheck.test.d.ts.map +1 -0
- package/lib/tests/100PercentParityCheck.test.js +143 -0
- package/lib/tests/basic.test.d.ts +6 -0
- package/lib/tests/basic.test.d.ts.map +1 -0
- package/lib/tests/basic.test.js +52 -0
- package/lib/tests/cellService.test.d.ts +6 -0
- package/lib/tests/cellService.test.d.ts.map +1 -0
- package/lib/tests/cellService.test.js +311 -0
- package/lib/tests/ciSetup.d.ts +6 -0
- package/lib/tests/ciSetup.d.ts.map +1 -0
- package/lib/tests/ciSetup.js +23 -0
- package/lib/tests/comprehensive.service.test.d.ts +6 -0
- package/lib/tests/comprehensive.service.test.d.ts.map +1 -0
- package/lib/tests/comprehensive.service.test.js +507 -0
- package/lib/tests/connection.test.d.ts +6 -0
- package/lib/tests/connection.test.d.ts.map +1 -0
- package/lib/tests/connection.test.js +89 -0
- package/lib/tests/cubeService.test.d.ts +6 -0
- package/lib/tests/cubeService.test.d.ts.map +1 -0
- package/lib/tests/cubeService.test.js +368 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts +7 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.comprehensive.test.js +614 -0
- package/lib/tests/dimensionService.test.d.ts +6 -0
- package/lib/tests/dimensionService.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.test.js +293 -0
- package/lib/tests/edgeCases.test.d.ts +6 -0
- package/lib/tests/edgeCases.test.d.ts.map +1 -0
- package/lib/tests/edgeCases.test.js +301 -0
- package/lib/tests/elementService.comprehensive.test.d.ts +7 -0
- package/lib/tests/elementService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/elementService.comprehensive.test.js +846 -0
- package/lib/tests/elementService.test.d.ts +6 -0
- package/lib/tests/elementService.test.d.ts.map +1 -0
- package/lib/tests/elementService.test.js +350 -0
- package/lib/tests/enhancedCellService.test.d.ts +2 -0
- package/lib/tests/enhancedCellService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCellService.test.js +152 -0
- package/lib/tests/enhancedCubeService.test.d.ts +2 -0
- package/lib/tests/enhancedCubeService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCubeService.test.js +246 -0
- package/lib/tests/enhancedElementService.test.d.ts +2 -0
- package/lib/tests/enhancedElementService.test.d.ts.map +1 -0
- package/lib/tests/enhancedElementService.test.js +199 -0
- package/lib/tests/enhancedViewService.test.d.ts +2 -0
- package/lib/tests/enhancedViewService.test.d.ts.map +1 -0
- package/lib/tests/enhancedViewService.test.js +260 -0
- package/lib/tests/errorHandling.test.d.ts +6 -0
- package/lib/tests/errorHandling.test.d.ts.map +1 -0
- package/lib/tests/errorHandling.test.js +227 -0
- package/lib/tests/exceptions.test.d.ts +7 -0
- package/lib/tests/exceptions.test.d.ts.map +1 -0
- package/lib/tests/exceptions.test.js +257 -0
- package/lib/tests/hierarchyService.test.d.ts +6 -0
- package/lib/tests/hierarchyService.test.d.ts.map +1 -0
- package/lib/tests/hierarchyService.test.js +294 -0
- package/lib/tests/index.test.d.ts +6 -0
- package/lib/tests/index.test.d.ts.map +1 -0
- package/lib/tests/index.test.js +346 -0
- package/lib/tests/integration.test.d.ts +6 -0
- package/lib/tests/integration.test.d.ts.map +1 -0
- package/lib/tests/integration.test.js +302 -0
- package/lib/tests/integrationTests.test.d.ts +2 -0
- package/lib/tests/integrationTests.test.d.ts.map +1 -0
- package/lib/tests/integrationTests.test.js +252 -0
- package/lib/tests/mdx.advanced.test.d.ts +6 -0
- package/lib/tests/mdx.advanced.test.d.ts.map +1 -0
- package/lib/tests/mdx.advanced.test.js +437 -0
- package/lib/tests/objects.improved.test.d.ts +7 -0
- package/lib/tests/objects.improved.test.d.ts.map +1 -0
- package/lib/tests/objects.improved.test.js +302 -0
- package/lib/tests/performance.test.d.ts +6 -0
- package/lib/tests/performance.test.d.ts.map +1 -0
- package/lib/tests/performance.test.js +264 -0
- package/lib/tests/processService.comprehensive.test.d.ts +7 -0
- package/lib/tests/processService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/processService.comprehensive.test.js +656 -0
- package/lib/tests/processService.test.d.ts +6 -0
- package/lib/tests/processService.test.d.ts.map +1 -0
- package/lib/tests/processService.test.js +322 -0
- package/lib/tests/restService.test.d.ts +6 -0
- package/lib/tests/restService.test.d.ts.map +1 -0
- package/lib/tests/restService.test.js +177 -0
- package/lib/tests/security.advanced.test.d.ts +6 -0
- package/lib/tests/security.advanced.test.d.ts.map +1 -0
- package/lib/tests/security.advanced.test.js +407 -0
- package/lib/tests/security.test.d.ts +6 -0
- package/lib/tests/security.test.d.ts.map +1 -0
- package/lib/tests/security.test.js +204 -0
- package/lib/tests/securityService.comprehensive.test.d.ts +7 -0
- package/lib/tests/securityService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/securityService.comprehensive.test.js +457 -0
- package/lib/tests/setup.d.ts +4 -0
- package/lib/tests/setup.d.ts.map +1 -0
- package/lib/tests/setup.js +40 -0
- package/lib/tests/simpleCoverage.test.d.ts +6 -0
- package/lib/tests/simpleCoverage.test.d.ts.map +1 -0
- package/lib/tests/simpleCoverage.test.js +236 -0
- package/lib/tests/stress.performance.test.d.ts +6 -0
- package/lib/tests/stress.performance.test.d.ts.map +1 -0
- package/lib/tests/stress.performance.test.js +423 -0
- package/lib/tests/subsetService.test.d.ts +6 -0
- package/lib/tests/subsetService.test.d.ts.map +1 -0
- package/lib/tests/subsetService.test.js +271 -0
- package/lib/tests/testConfig.d.ts +18 -0
- package/lib/tests/testConfig.d.ts.map +1 -0
- package/lib/tests/testConfig.js +38 -0
- package/lib/tests/testUtils.d.ts +9 -0
- package/lib/tests/testUtils.d.ts.map +1 -0
- package/lib/tests/testUtils.js +100 -0
- package/lib/tests/tm1Service.test.d.ts +7 -0
- package/lib/tests/tm1Service.test.d.ts.map +1 -0
- package/lib/tests/tm1Service.test.js +290 -0
- package/lib/tests/viewService.test.d.ts +6 -0
- package/lib/tests/viewService.test.d.ts.map +1 -0
- package/lib/tests/viewService.test.js +240 -0
- package/lib/utils/Utils.d.ts +90 -0
- package/lib/utils/Utils.d.ts.map +1 -0
- package/lib/utils/Utils.js +379 -0
- package/package.json +81 -0
- package/run-all-tests.js +296 -0
- package/src/exceptions/TM1Exception.ts +38 -0
- package/src/exceptions/TM1RestException.ts +17 -0
- package/src/exceptions/TM1TimeoutException.ts +15 -0
- package/src/index.ts +94 -0
- package/src/objects/Annotation.ts +194 -0
- package/src/objects/Application.ts +146 -0
- package/src/objects/Axis.ts +149 -0
- package/src/objects/Chore.ts +174 -0
- package/src/objects/ChoreFrequency.ts +83 -0
- package/src/objects/ChoreStartTime.ts +111 -0
- package/src/objects/ChoreTask.ts +92 -0
- package/src/objects/Cube.ts +125 -0
- package/src/objects/Dimension.ts +107 -0
- package/src/objects/Element.ts +153 -0
- package/src/objects/ElementAttribute.ts +115 -0
- package/src/objects/Git.ts +86 -0
- package/src/objects/GitCommit.ts +31 -0
- package/src/objects/GitPlan.ts +121 -0
- package/src/objects/GitRemote.ts +31 -0
- package/src/objects/Hierarchy.ts +229 -0
- package/src/objects/MDXView.ts +91 -0
- package/src/objects/NativeView.ts +268 -0
- package/src/objects/Process.ts +320 -0
- package/src/objects/ProcessDebugBreakpoint.ts +239 -0
- package/src/objects/ProcessParameter.ts +76 -0
- package/src/objects/ProcessVariable.ts +89 -0
- package/src/objects/Rules.ts +117 -0
- package/src/objects/Sandbox.ts +90 -0
- package/src/objects/Server.ts +45 -0
- package/src/objects/Subset.ts +323 -0
- package/src/objects/TM1Object.ts +17 -0
- package/src/objects/TM1Project.ts +587 -0
- package/src/objects/User.ts +198 -0
- package/src/objects/View.ts +43 -0
- package/src/objects/index.ts +36 -0
- package/src/services/AnnotationService.ts +107 -0
- package/src/services/ApplicationService.ts +279 -0
- package/src/services/AuditLogService.ts +172 -0
- package/src/services/CellService.ts +814 -0
- package/src/services/ChoreService.ts +219 -0
- package/src/services/ConfigurationService.ts +69 -0
- package/src/services/CubeService.ts +338 -0
- package/src/services/DimensionService.ts +168 -0
- package/src/services/ElementService.ts +966 -0
- package/src/services/FileService.ts +67 -0
- package/src/services/GitService.ts +324 -0
- package/src/services/HierarchyService.ts +284 -0
- package/src/services/JobService.ts +59 -0
- package/src/services/LoggerService.ts +118 -0
- package/src/services/ManageService.ts +322 -0
- package/src/services/MessageLogService.ts +211 -0
- package/src/services/MonitoringService.ts +105 -0
- package/src/services/ObjectService.ts +21 -0
- package/src/services/PowerBiService.ts +85 -0
- package/src/services/ProcessService.ts +589 -0
- package/src/services/RestService.ts +224 -0
- package/src/services/SandboxService.ts +217 -0
- package/src/services/SecurityService.ts +284 -0
- package/src/services/ServerService.ts +313 -0
- package/src/services/SessionService.ts +81 -0
- package/src/services/SubsetService.ts +52 -0
- package/src/services/TM1Service.ts +133 -0
- package/src/services/ThreadService.ts +83 -0
- package/src/services/TransactionLogService.ts +148 -0
- package/src/services/UserService.ts +77 -0
- package/src/services/ViewService.ts +398 -0
- package/src/services/index.ts +28 -0
- package/src/tests/100PercentParityCheck.test.ts +166 -0
- package/src/tests/basic.test.ts +59 -0
- package/src/tests/cellService.test.ts +405 -0
- package/src/tests/ciSetup.ts +26 -0
- package/src/tests/comprehensive.service.test.ts +653 -0
- package/src/tests/config.ini.template +23 -0
- package/src/tests/connection.test.ts +90 -0
- package/src/tests/cubeService.test.ts +458 -0
- package/src/tests/dimensionService.comprehensive.test.ts +786 -0
- package/src/tests/dimensionService.test.ts +373 -0
- package/src/tests/edgeCases.test.ts +358 -0
- package/src/tests/elementService.comprehensive.test.ts +1190 -0
- package/src/tests/elementService.test.ts +472 -0
- package/src/tests/enhancedCellService.test.ts +237 -0
- package/src/tests/enhancedCubeService.test.ts +384 -0
- package/src/tests/enhancedElementService.test.ts +301 -0
- package/src/tests/enhancedViewService.test.ts +373 -0
- package/src/tests/errorHandling.test.ts +264 -0
- package/src/tests/exceptions.test.ts +313 -0
- package/src/tests/hierarchyService.test.ts +386 -0
- package/src/tests/index.test.ts +376 -0
- package/src/tests/integration.test.ts +333 -0
- package/src/tests/integrationTests.test.ts +302 -0
- package/src/tests/mdx.advanced.test.ts +513 -0
- package/src/tests/objects.improved.test.ts +385 -0
- package/src/tests/performance.test.ts +314 -0
- package/src/tests/processService.comprehensive.test.ts +933 -0
- package/src/tests/processService.test.ts +409 -0
- package/src/tests/restService.test.ts +218 -0
- package/src/tests/security.advanced.test.ts +464 -0
- package/src/tests/security.test.ts +233 -0
- package/src/tests/securityService.comprehensive.test.ts +582 -0
- package/src/tests/setup.ts +42 -0
- package/src/tests/simpleCoverage.test.ts +287 -0
- package/src/tests/stress.performance.test.ts +531 -0
- package/src/tests/subsetService.test.ts +350 -0
- package/src/tests/testConfig.ts +53 -0
- package/src/tests/testUtils.ts +94 -0
- package/src/tests/tm1Service.test.ts +361 -0
- package/src/tests/viewService.test.ts +324 -0
- package/src/utils/Utils.ts +395 -0
- package/tests/README.md +57 -0
- package/tests/connection/test-connection.ts +86 -0
- package/tests/edge-cases/edge-cases-test.ts +244 -0
- package/tests/integration/working-test.ts +193 -0
- package/tests/performance/performance-test.ts +133 -0
- package/tests/run-all-tests.sh +106 -0
- package/tests/security/security-test.ts +103 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElementService Tests for tm1npm
|
|
3
|
+
* Comprehensive tests for TM1 Element operations with proper mocking
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ElementService } from '../services/ElementService';
|
|
7
|
+
import { RestService } from '../services/RestService';
|
|
8
|
+
import { Element } from '../objects/Element';
|
|
9
|
+
import { TM1RestException } from '../exceptions/TM1Exception';
|
|
10
|
+
|
|
11
|
+
// Helper function to create mock AxiosResponse
|
|
12
|
+
const createMockResponse = (data: any, status: number = 200) => ({
|
|
13
|
+
data,
|
|
14
|
+
status,
|
|
15
|
+
statusText: status === 200 ? 'OK' : status === 201 ? 'Created' : status === 204 ? 'No Content' : 'Error',
|
|
16
|
+
headers: {},
|
|
17
|
+
config: {} as any
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
describe('ElementService Tests', () => {
|
|
21
|
+
let elementService: ElementService;
|
|
22
|
+
let mockRestService: jest.Mocked<RestService>;
|
|
23
|
+
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
// Create comprehensive mock for RestService
|
|
26
|
+
mockRestService = {
|
|
27
|
+
get: jest.fn(),
|
|
28
|
+
post: jest.fn(),
|
|
29
|
+
patch: jest.fn(),
|
|
30
|
+
delete: jest.fn(),
|
|
31
|
+
put: jest.fn(),
|
|
32
|
+
config: {} as any,
|
|
33
|
+
rest: {} as any,
|
|
34
|
+
buildBaseUrl: jest.fn(),
|
|
35
|
+
extractErrorMessage: jest.fn()
|
|
36
|
+
} as any;
|
|
37
|
+
|
|
38
|
+
elementService = new ElementService(mockRestService);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe('Element Retrieval Operations', () => {
|
|
42
|
+
test('should get element names for dimension hierarchy', async () => {
|
|
43
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
44
|
+
value: [
|
|
45
|
+
{ Name: 'Element1' },
|
|
46
|
+
{ Name: 'Element2' },
|
|
47
|
+
{ Name: 'Element3' }
|
|
48
|
+
]
|
|
49
|
+
}));
|
|
50
|
+
|
|
51
|
+
const elementNames = await elementService.getNames('TestDimension', 'TestHierarchy');
|
|
52
|
+
|
|
53
|
+
expect(Array.isArray(elementNames)).toBe(true);
|
|
54
|
+
expect(elementNames.length).toBe(3);
|
|
55
|
+
expect(elementNames).toEqual(['Element1', 'Element2', 'Element3']);
|
|
56
|
+
|
|
57
|
+
console.log('✅ Element names retrieved successfully');
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('should get elements for dimension hierarchy', async () => {
|
|
61
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
62
|
+
value: [
|
|
63
|
+
{
|
|
64
|
+
Name: 'Element1',
|
|
65
|
+
Type: 'Numeric',
|
|
66
|
+
Level: 0,
|
|
67
|
+
Index: 1,
|
|
68
|
+
Attributes: {}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
Name: 'Element2',
|
|
72
|
+
Type: 'Consolidated',
|
|
73
|
+
Level: 1,
|
|
74
|
+
Index: 2,
|
|
75
|
+
Attributes: {}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}));
|
|
79
|
+
|
|
80
|
+
const elements = await elementService.getElements('TestDimension', 'TestHierarchy');
|
|
81
|
+
|
|
82
|
+
expect(Array.isArray(elements)).toBe(true);
|
|
83
|
+
expect(elements.length).toBe(2);
|
|
84
|
+
expect(elements[0].name).toBe('Element1');
|
|
85
|
+
expect(elements[1].name).toBe('Element2');
|
|
86
|
+
|
|
87
|
+
console.log('✅ Elements retrieved successfully');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
test('should get a specific element if it exists', async () => {
|
|
91
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
92
|
+
Name: 'TestElement',
|
|
93
|
+
Type: 'Numeric',
|
|
94
|
+
Level: 0,
|
|
95
|
+
Index: 1,
|
|
96
|
+
Attributes: {}
|
|
97
|
+
}));
|
|
98
|
+
|
|
99
|
+
const element = await elementService.get('TestDimension', 'TestHierarchy', 'TestElement');
|
|
100
|
+
expect(element).toBeDefined();
|
|
101
|
+
expect(element.name).toBe('TestElement');
|
|
102
|
+
|
|
103
|
+
console.log('✅ Specific element retrieved successfully');
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test('should check if an element exists', async () => {
|
|
107
|
+
// Test existing element
|
|
108
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
109
|
+
Name: 'ExistingElement'
|
|
110
|
+
}));
|
|
111
|
+
|
|
112
|
+
const exists = await elementService.exists('TestDimension', 'TestHierarchy', 'ExistingElement');
|
|
113
|
+
expect(exists).toBe(true);
|
|
114
|
+
|
|
115
|
+
console.log('✅ Element existence check working');
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
test('should check if an element does not exist', async () => {
|
|
119
|
+
// Test non-existing element
|
|
120
|
+
const mockError = new TM1RestException('Element not found', 404, { status: 404 });
|
|
121
|
+
mockRestService.get.mockRejectedValue(mockError);
|
|
122
|
+
|
|
123
|
+
const notExists = await elementService.exists('TestDimension', 'TestHierarchy', 'NonExistentElement');
|
|
124
|
+
expect(notExists).toBe(false);
|
|
125
|
+
|
|
126
|
+
console.log('✅ Element non-existence check working');
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe('Element CRUD Operations', () => {
|
|
131
|
+
test('should create element', async () => {
|
|
132
|
+
const testElement = new Element('NewElement', 'Numeric');
|
|
133
|
+
|
|
134
|
+
mockRestService.post.mockResolvedValue(createMockResponse(
|
|
135
|
+
{ Name: 'NewElement' }, 201
|
|
136
|
+
));
|
|
137
|
+
|
|
138
|
+
const result = await elementService.create('TestDimension', 'TestHierarchy', testElement);
|
|
139
|
+
|
|
140
|
+
expect(mockRestService.post).toHaveBeenCalled();
|
|
141
|
+
expect(result.status).toBe(201);
|
|
142
|
+
|
|
143
|
+
console.log('✅ Element creation successful');
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
test('should update existing element', async () => {
|
|
147
|
+
const testElement = new Element('UpdatedElement', 'Numeric');
|
|
148
|
+
|
|
149
|
+
mockRestService.patch.mockResolvedValue(createMockResponse(
|
|
150
|
+
{ Name: 'UpdatedElement' }, 200
|
|
151
|
+
));
|
|
152
|
+
|
|
153
|
+
const result = await elementService.update('TestDimension', 'TestHierarchy', testElement);
|
|
154
|
+
|
|
155
|
+
expect(mockRestService.patch).toHaveBeenCalled();
|
|
156
|
+
expect(result.status).toBe(200);
|
|
157
|
+
|
|
158
|
+
console.log('✅ Element update successful');
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
test('should delete element', async () => {
|
|
162
|
+
mockRestService.delete.mockResolvedValue(createMockResponse({}, 204));
|
|
163
|
+
|
|
164
|
+
const result = await elementService.delete('TestDimension', 'TestHierarchy', 'ElementToDelete');
|
|
165
|
+
|
|
166
|
+
expect(mockRestService.delete).toHaveBeenCalled();
|
|
167
|
+
expect(result.status).toBe(204);
|
|
168
|
+
|
|
169
|
+
console.log('✅ Element deletion successful');
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
test('should update or create element', async () => {
|
|
173
|
+
const testElement = new Element('TestElement', 'Numeric');
|
|
174
|
+
|
|
175
|
+
// Mock exists method to return true (element exists)
|
|
176
|
+
jest.spyOn(elementService, 'exists').mockResolvedValue(true);
|
|
177
|
+
|
|
178
|
+
mockRestService.patch.mockResolvedValue(createMockResponse(
|
|
179
|
+
{ Name: 'TestElement' }, 200
|
|
180
|
+
));
|
|
181
|
+
|
|
182
|
+
const result = await elementService.updateOrCreate('TestDimension', 'TestHierarchy', testElement);
|
|
183
|
+
|
|
184
|
+
expect(mockRestService.patch).toHaveBeenCalled();
|
|
185
|
+
expect(result.status).toBe(200);
|
|
186
|
+
|
|
187
|
+
console.log('✅ Element update or create successful');
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
describe('Element Hierarchy Operations', () => {
|
|
192
|
+
test('should get element parents', async () => {
|
|
193
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
194
|
+
value: [{ Name: 'Parent1' }]
|
|
195
|
+
}));
|
|
196
|
+
|
|
197
|
+
const parents = await elementService.getParents('TestDimension', 'TestHierarchy', 'ChildElement');
|
|
198
|
+
|
|
199
|
+
expect(Array.isArray(parents)).toBe(true);
|
|
200
|
+
expect(parents.length).toBe(1);
|
|
201
|
+
expect(parents[0]).toBe('Parent1');
|
|
202
|
+
|
|
203
|
+
console.log('✅ Element parents retrieved successfully');
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test('should get element children', async () => {
|
|
207
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
208
|
+
value: [{ Name: 'Child1' }, { Name: 'Child2' }]
|
|
209
|
+
}));
|
|
210
|
+
|
|
211
|
+
const children = await elementService.getChildren('TestDimension', 'TestHierarchy', 'ParentElement');
|
|
212
|
+
|
|
213
|
+
expect(Array.isArray(children)).toBe(true);
|
|
214
|
+
expect(children.length).toBe(2);
|
|
215
|
+
expect(children[0]).toBe('Child1');
|
|
216
|
+
expect(children[1]).toBe('Child2');
|
|
217
|
+
|
|
218
|
+
console.log('✅ Element children retrieved successfully');
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
test('should get leaf elements', async () => {
|
|
222
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
223
|
+
value: [
|
|
224
|
+
{ Name: 'Leaf1', Type: 'String' },
|
|
225
|
+
{ Name: 'Leaf2', Type: 'Numeric' }
|
|
226
|
+
]
|
|
227
|
+
}));
|
|
228
|
+
|
|
229
|
+
const leafElements = await elementService.getLeafElements('TestDimension', 'TestHierarchy');
|
|
230
|
+
|
|
231
|
+
expect(Array.isArray(leafElements)).toBe(true);
|
|
232
|
+
expect(leafElements.length).toBe(2);
|
|
233
|
+
expect(leafElements[0].name).toBe('Leaf1');
|
|
234
|
+
expect(leafElements[1].name).toBe('Leaf2');
|
|
235
|
+
|
|
236
|
+
console.log('✅ Leaf elements retrieved successfully');
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
test('should get consolidated elements', async () => {
|
|
240
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
241
|
+
value: [
|
|
242
|
+
{ Name: 'Consol1', Type: 'Consolidated' },
|
|
243
|
+
{ Name: 'Consol2', Type: 'Consolidated' }
|
|
244
|
+
]
|
|
245
|
+
}));
|
|
246
|
+
|
|
247
|
+
const consolElements = await elementService.getConsolidatedElements('TestDimension', 'TestHierarchy');
|
|
248
|
+
|
|
249
|
+
expect(Array.isArray(consolElements)).toBe(true);
|
|
250
|
+
expect(consolElements.length).toBe(2);
|
|
251
|
+
expect(consolElements[0].name).toBe('Consol1');
|
|
252
|
+
expect(consolElements[1].name).toBe('Consol2');
|
|
253
|
+
|
|
254
|
+
console.log('✅ Consolidated elements retrieved successfully');
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
describe('Element Count Operations', () => {
|
|
259
|
+
test('should get elements count', async () => {
|
|
260
|
+
mockRestService.get.mockResolvedValue(createMockResponse('150'));
|
|
261
|
+
|
|
262
|
+
const count = await elementService.getElementsCount('TestDimension', 'TestHierarchy');
|
|
263
|
+
|
|
264
|
+
expect(typeof count).toBe('number');
|
|
265
|
+
expect(count).toBe(150);
|
|
266
|
+
|
|
267
|
+
console.log('✅ Elements count retrieved successfully');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
describe('Element Attributes Operations', () => {
|
|
272
|
+
test('should get element attributes', async () => {
|
|
273
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
274
|
+
value: [
|
|
275
|
+
{ Name: 'Attribute1', Type: 'String' },
|
|
276
|
+
{ Name: 'Attribute2', Type: 'Numeric' }
|
|
277
|
+
]
|
|
278
|
+
}));
|
|
279
|
+
|
|
280
|
+
const attributes = await elementService.getElementAttributes('TestDimension', 'TestHierarchy');
|
|
281
|
+
|
|
282
|
+
expect(Array.isArray(attributes)).toBe(true);
|
|
283
|
+
expect(attributes.length).toBe(2);
|
|
284
|
+
expect(attributes[0].name).toBe('Attribute1');
|
|
285
|
+
expect(attributes[1].name).toBe('Attribute2');
|
|
286
|
+
|
|
287
|
+
console.log('✅ Element attributes retrieved successfully');
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
test('should update element attribute', async () => {
|
|
291
|
+
mockRestService.patch.mockResolvedValue(createMockResponse({}, 200));
|
|
292
|
+
|
|
293
|
+
const result = await elementService.updateElementAttribute(
|
|
294
|
+
'TestDimension',
|
|
295
|
+
'TestHierarchy',
|
|
296
|
+
'TestElement',
|
|
297
|
+
'TestAttribute',
|
|
298
|
+
'TestValue'
|
|
299
|
+
);
|
|
300
|
+
|
|
301
|
+
expect(mockRestService.patch).toHaveBeenCalled();
|
|
302
|
+
expect(result.status).toBe(200);
|
|
303
|
+
|
|
304
|
+
console.log('✅ Element attribute updated successfully');
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
describe('Element Error Handling', () => {
|
|
309
|
+
test('should handle invalid element names gracefully', async () => {
|
|
310
|
+
mockRestService.get.mockRejectedValue({
|
|
311
|
+
response: { status: 400, statusText: 'Bad Request' }
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
await expect(elementService.get('TestDimension', 'TestHierarchy', ''))
|
|
315
|
+
.rejects.toMatchObject({
|
|
316
|
+
response: { status: 400 }
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
console.log('✅ Invalid element names handled gracefully');
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
test('should handle network errors gracefully', async () => {
|
|
323
|
+
mockRestService.get.mockRejectedValue({
|
|
324
|
+
code: 'ECONNREFUSED'
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
await expect(elementService.getNames('TestDimension', 'TestHierarchy'))
|
|
328
|
+
.rejects.toMatchObject({
|
|
329
|
+
code: 'ECONNREFUSED'
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
console.log('✅ Network errors handled gracefully');
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
test('should handle authentication errors', async () => {
|
|
336
|
+
mockRestService.get.mockRejectedValue({
|
|
337
|
+
response: { status: 401, statusText: 'Unauthorized' }
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
await expect(elementService.getElements('TestDimension', 'TestHierarchy'))
|
|
341
|
+
.rejects.toMatchObject({
|
|
342
|
+
response: { status: 401 }
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
console.log('✅ Authentication errors handled gracefully');
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
describe('Element Service Edge Cases', () => {
|
|
350
|
+
test('should handle empty element lists', async () => {
|
|
351
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
352
|
+
value: []
|
|
353
|
+
}));
|
|
354
|
+
|
|
355
|
+
const elementNames = await elementService.getNames('EmptyDimension', 'EmptyHierarchy');
|
|
356
|
+
|
|
357
|
+
expect(Array.isArray(elementNames)).toBe(true);
|
|
358
|
+
expect(elementNames.length).toBe(0);
|
|
359
|
+
|
|
360
|
+
console.log('✅ Empty element lists handled correctly');
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
test('should handle concurrent element operations', async () => {
|
|
364
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
365
|
+
value: [{ Name: 'TestElement' }]
|
|
366
|
+
}));
|
|
367
|
+
|
|
368
|
+
const operations = [
|
|
369
|
+
elementService.getNames('TestDimension', 'TestHierarchy'),
|
|
370
|
+
elementService.getNames('TestDimension', 'TestHierarchy'),
|
|
371
|
+
elementService.getNames('TestDimension', 'TestHierarchy')
|
|
372
|
+
];
|
|
373
|
+
|
|
374
|
+
const results = await Promise.allSettled(operations);
|
|
375
|
+
const successful = results.filter(r => r.status === 'fulfilled');
|
|
376
|
+
|
|
377
|
+
expect(successful.length).toBe(3);
|
|
378
|
+
console.log('✅ Concurrent operations handled successfully');
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
test('should handle large element lists efficiently', async () => {
|
|
382
|
+
const largeElementList = Array(1000).fill(null).map((_, i) => ({
|
|
383
|
+
Name: `Element${i}`,
|
|
384
|
+
Type: 'Numeric',
|
|
385
|
+
Level: 0,
|
|
386
|
+
Index: i
|
|
387
|
+
}));
|
|
388
|
+
|
|
389
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
390
|
+
value: largeElementList
|
|
391
|
+
}));
|
|
392
|
+
|
|
393
|
+
const startTime = Date.now();
|
|
394
|
+
const elementNames = await elementService.getNames('LargeDimension', 'LargeHierarchy');
|
|
395
|
+
const endTime = Date.now();
|
|
396
|
+
|
|
397
|
+
expect(elementNames.length).toBe(1000);
|
|
398
|
+
expect(endTime - startTime).toBeLessThan(1000); // Should be fast with mocking
|
|
399
|
+
|
|
400
|
+
console.log('✅ Large element lists handled efficiently');
|
|
401
|
+
});
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
describe('Element Service Integration', () => {
|
|
405
|
+
test('should maintain consistent data across operations', async () => {
|
|
406
|
+
const elementData = {
|
|
407
|
+
value: [
|
|
408
|
+
{ Name: 'Element1' },
|
|
409
|
+
{ Name: 'Element2' }
|
|
410
|
+
]
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
mockRestService.get.mockResolvedValue(createMockResponse(elementData));
|
|
414
|
+
|
|
415
|
+
const names1 = await elementService.getNames('TestDimension', 'TestHierarchy');
|
|
416
|
+
const names2 = await elementService.getNames('TestDimension', 'TestHierarchy');
|
|
417
|
+
|
|
418
|
+
expect(names1).toEqual(names2);
|
|
419
|
+
expect(names1).toEqual(['Element1', 'Element2']);
|
|
420
|
+
|
|
421
|
+
console.log('✅ Data consistency maintained across operations');
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
test('should handle element lifecycle operations', async () => {
|
|
425
|
+
const testElement = new Element('LifecycleElement', 'Numeric');
|
|
426
|
+
|
|
427
|
+
// Mock element creation
|
|
428
|
+
mockRestService.post.mockResolvedValue(createMockResponse({}, 201));
|
|
429
|
+
|
|
430
|
+
await elementService.create('TestDimension', 'TestHierarchy', testElement);
|
|
431
|
+
|
|
432
|
+
// Mock element existence check (true after creation)
|
|
433
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
434
|
+
Name: 'LifecycleElement'
|
|
435
|
+
}));
|
|
436
|
+
|
|
437
|
+
const afterCreationExists = await elementService.exists('TestDimension', 'TestHierarchy', 'LifecycleElement');
|
|
438
|
+
expect(afterCreationExists).toBe(true);
|
|
439
|
+
|
|
440
|
+
// Mock element update
|
|
441
|
+
mockRestService.patch.mockResolvedValue(createMockResponse({}, 200));
|
|
442
|
+
|
|
443
|
+
const updateResult = await elementService.update('TestDimension', 'TestHierarchy', testElement);
|
|
444
|
+
expect(updateResult.status).toBe(200);
|
|
445
|
+
|
|
446
|
+
// Mock element deletion
|
|
447
|
+
mockRestService.delete.mockResolvedValue(createMockResponse({}, 204));
|
|
448
|
+
|
|
449
|
+
await elementService.delete('TestDimension', 'TestHierarchy', 'LifecycleElement');
|
|
450
|
+
|
|
451
|
+
console.log('✅ Element lifecycle operations handled successfully');
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
describe('Element Bulk Operations', () => {
|
|
456
|
+
test('should handle bulk element deletion', async () => {
|
|
457
|
+
const elementsToDelete = ['Element1', 'Element2', 'Element3'];
|
|
458
|
+
|
|
459
|
+
// For the useTI=true path, we need to mock ProcessService operations
|
|
460
|
+
// The method creates a TI process, executes it, and then deletes it
|
|
461
|
+
|
|
462
|
+
// Mock process creation, execution, and deletion
|
|
463
|
+
mockRestService.post.mockResolvedValue(createMockResponse({}, 201)); // create process
|
|
464
|
+
mockRestService.post.mockResolvedValue(createMockResponse({}, 200)); // execute process
|
|
465
|
+
mockRestService.delete.mockResolvedValue(createMockResponse({}, 204)); // delete process
|
|
466
|
+
|
|
467
|
+
await elementService.deleteElements('TestDimension', 'TestHierarchy', elementsToDelete, true);
|
|
468
|
+
|
|
469
|
+
console.log('✅ Bulk element deletion handled successfully');
|
|
470
|
+
});
|
|
471
|
+
});
|
|
472
|
+
});
|