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,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DimensionService Tests for tm1npm
|
|
3
|
+
* Comprehensive tests for TM1 Dimension operations with proper mocking
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { DimensionService } from '../services/DimensionService';
|
|
7
|
+
import { RestService } from '../services/RestService';
|
|
8
|
+
import { Dimension } from '../objects/Dimension';
|
|
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('DimensionService Tests', () => {
|
|
21
|
+
let dimensionService: DimensionService;
|
|
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
|
+
dimensionService = new DimensionService(mockRestService);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe('Dimension Retrieval Operations', () => {
|
|
42
|
+
test('should get all dimension names', async () => {
|
|
43
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
44
|
+
value: [
|
|
45
|
+
{ Name: 'Time' },
|
|
46
|
+
{ Name: 'Account' },
|
|
47
|
+
{ Name: 'Version' }
|
|
48
|
+
]
|
|
49
|
+
}));
|
|
50
|
+
|
|
51
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
52
|
+
|
|
53
|
+
expect(Array.isArray(dimensionNames)).toBe(true);
|
|
54
|
+
expect(dimensionNames.length).toBe(3);
|
|
55
|
+
expect(dimensionNames).toEqual(['Time', 'Account', 'Version']);
|
|
56
|
+
expect(mockRestService.get).toHaveBeenCalledWith("/Dimensions?$select=Name");
|
|
57
|
+
|
|
58
|
+
console.log('✅ Dimension names retrieved successfully');
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('should get all dimensions with skip control dimensions', async () => {
|
|
62
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
63
|
+
value: [
|
|
64
|
+
{ Name: 'Time', Hierarchies: [{ Name: 'Time' }] },
|
|
65
|
+
{ Name: 'Account', Hierarchies: [{ Name: 'Account' }] }
|
|
66
|
+
]
|
|
67
|
+
}));
|
|
68
|
+
|
|
69
|
+
const dimensions = await dimensionService.getAll(true); // skip control dimensions
|
|
70
|
+
|
|
71
|
+
expect(Array.isArray(dimensions)).toBe(true);
|
|
72
|
+
expect(dimensions.length).toBe(2);
|
|
73
|
+
expect(dimensions[0].name).toBe('Time');
|
|
74
|
+
expect(dimensions[1].name).toBe('Account');
|
|
75
|
+
|
|
76
|
+
console.log('✅ All dimensions retrieved with control dimension filtering');
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('should get a specific dimension if it exists', async () => {
|
|
80
|
+
mockRestService.get.mockResolvedValueOnce(createMockResponse({
|
|
81
|
+
value: [{ Name: 'Time' }]
|
|
82
|
+
}));
|
|
83
|
+
|
|
84
|
+
mockRestService.get.mockResolvedValueOnce(createMockResponse({
|
|
85
|
+
Name: 'Time',
|
|
86
|
+
Hierarchies: [{ Name: 'Time', Elements: [] }]
|
|
87
|
+
}));
|
|
88
|
+
|
|
89
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
90
|
+
expect(dimensionNames).toContain('Time');
|
|
91
|
+
|
|
92
|
+
const dimension = await dimensionService.get('Time');
|
|
93
|
+
expect(dimension).toBeDefined();
|
|
94
|
+
expect(dimension.name).toBe('Time');
|
|
95
|
+
|
|
96
|
+
console.log('✅ Specific dimension retrieved successfully');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test('should check if a dimension exists', async () => {
|
|
100
|
+
// Test existing dimension
|
|
101
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
102
|
+
Name: 'Time',
|
|
103
|
+
Hierarchies: []
|
|
104
|
+
}));
|
|
105
|
+
|
|
106
|
+
const exists = await dimensionService.exists('Time');
|
|
107
|
+
expect(exists).toBe(true);
|
|
108
|
+
|
|
109
|
+
console.log('✅ Dimension existence check working');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test('should check if a dimension does not exist', async () => {
|
|
113
|
+
// Test non-existing dimension
|
|
114
|
+
const mockError = new TM1RestException('Dimension not found', 404, { status: 404 });
|
|
115
|
+
mockRestService.get.mockRejectedValue(mockError);
|
|
116
|
+
|
|
117
|
+
const notExists = await dimensionService.exists('NonExistentDimension');
|
|
118
|
+
expect(notExists).toBe(false);
|
|
119
|
+
|
|
120
|
+
console.log('✅ Dimension non-existence check working');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
describe('Hierarchy Operations', () => {
|
|
125
|
+
test('should get hierarchies count for existing dimensions', async () => {
|
|
126
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
127
|
+
Name: 'Time',
|
|
128
|
+
Hierarchies: [
|
|
129
|
+
{ Name: 'Time' },
|
|
130
|
+
{ Name: 'TimeAlternate' }
|
|
131
|
+
]
|
|
132
|
+
}));
|
|
133
|
+
|
|
134
|
+
const dimension = await dimensionService.get('Time');
|
|
135
|
+
|
|
136
|
+
expect(dimension.hierarchies).toBeDefined();
|
|
137
|
+
expect(dimension.hierarchies.length).toBe(2);
|
|
138
|
+
expect(dimension.hierarchies[0].name).toBe('Time');
|
|
139
|
+
|
|
140
|
+
console.log('✅ Hierarchy operations working');
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
test('should get elements count for dimension', async () => {
|
|
144
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
145
|
+
Name: 'Account',
|
|
146
|
+
Hierarchies: [{
|
|
147
|
+
Name: 'Account',
|
|
148
|
+
Elements: [
|
|
149
|
+
{ Name: 'Revenue' },
|
|
150
|
+
{ Name: 'Expenses' },
|
|
151
|
+
{ Name: 'NetIncome' }
|
|
152
|
+
]
|
|
153
|
+
}]
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
const dimension = await dimensionService.get('Account');
|
|
157
|
+
const elements = dimension.hierarchies[0].elements;
|
|
158
|
+
|
|
159
|
+
expect(elements).toBeDefined();
|
|
160
|
+
expect(elements.length).toBe(3);
|
|
161
|
+
expect(elements[0].name).toBe('Revenue');
|
|
162
|
+
|
|
163
|
+
console.log('✅ Elements count operations working');
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
describe('Element Operations', () => {
|
|
168
|
+
test('should get dimension names for cube', async () => {
|
|
169
|
+
// This would typically be handled by CubeService, but can test dimension context
|
|
170
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
171
|
+
value: [
|
|
172
|
+
{ Name: 'Time' },
|
|
173
|
+
{ Name: 'Account' },
|
|
174
|
+
{ Name: 'Version' }
|
|
175
|
+
]
|
|
176
|
+
}));
|
|
177
|
+
|
|
178
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
179
|
+
|
|
180
|
+
expect(dimensionNames.includes('Time')).toBe(true);
|
|
181
|
+
expect(dimensionNames.includes('Account')).toBe(true);
|
|
182
|
+
expect(dimensionNames.includes('Version')).toBe(true);
|
|
183
|
+
|
|
184
|
+
console.log('✅ Dimension names for cube context working');
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
test('should handle elements count operation', async () => {
|
|
188
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
189
|
+
Name: 'Time',
|
|
190
|
+
Hierarchies: [{
|
|
191
|
+
Name: 'Time',
|
|
192
|
+
Elements: Array(12).fill(null).map((_, i) => ({
|
|
193
|
+
Name: `Month${i + 1}`,
|
|
194
|
+
Type: 'Numeric'
|
|
195
|
+
}))
|
|
196
|
+
}]
|
|
197
|
+
}));
|
|
198
|
+
|
|
199
|
+
const dimension = await dimensionService.get('Time');
|
|
200
|
+
const elementCount = dimension.hierarchies[0].elements.length;
|
|
201
|
+
|
|
202
|
+
expect(elementCount).toBe(12);
|
|
203
|
+
|
|
204
|
+
console.log('✅ Elements count operation working');
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
describe('Dimension Error Handling', () => {
|
|
209
|
+
test('should handle invalid dimension names gracefully', async () => {
|
|
210
|
+
mockRestService.get.mockRejectedValue({
|
|
211
|
+
response: { status: 400, statusText: 'Bad Request' }
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
await expect(dimensionService.get('')).rejects.toMatchObject({
|
|
215
|
+
response: { status: 400 }
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
console.log('✅ Invalid dimension names handled gracefully');
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
test('should handle network errors gracefully', async () => {
|
|
222
|
+
mockRestService.get.mockRejectedValue({
|
|
223
|
+
code: 'ECONNREFUSED'
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
await expect(dimensionService.getAllNames()).rejects.toMatchObject({
|
|
227
|
+
code: 'ECONNREFUSED'
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
console.log('✅ Network errors handled gracefully');
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
test('should handle authentication errors', async () => {
|
|
234
|
+
mockRestService.get.mockRejectedValue({
|
|
235
|
+
response: { status: 401, statusText: 'Unauthorized' }
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
await expect(dimensionService.getAllNames()).rejects.toMatchObject({
|
|
239
|
+
response: { status: 401 }
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
console.log('✅ Authentication errors handled gracefully');
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
describe('Dimension Service Edge Cases', () => {
|
|
247
|
+
test('should handle empty dimension lists', async () => {
|
|
248
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
249
|
+
value: []
|
|
250
|
+
}));
|
|
251
|
+
|
|
252
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
253
|
+
|
|
254
|
+
expect(Array.isArray(dimensionNames)).toBe(true);
|
|
255
|
+
expect(dimensionNames.length).toBe(0);
|
|
256
|
+
|
|
257
|
+
console.log('✅ Empty dimension lists handled correctly');
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
test('should handle concurrent dimension operations', async () => {
|
|
261
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
262
|
+
value: [{ Name: 'TestDimension' }]
|
|
263
|
+
}));
|
|
264
|
+
|
|
265
|
+
const operations = [
|
|
266
|
+
dimensionService.getAllNames(),
|
|
267
|
+
dimensionService.getAllNames(),
|
|
268
|
+
dimensionService.getAllNames()
|
|
269
|
+
];
|
|
270
|
+
|
|
271
|
+
const results = await Promise.allSettled(operations);
|
|
272
|
+
const successful = results.filter(r => r.status === 'fulfilled');
|
|
273
|
+
|
|
274
|
+
expect(successful.length).toBe(3);
|
|
275
|
+
console.log('✅ Concurrent operations handled successfully');
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
test('should handle large dimension lists efficiently', async () => {
|
|
279
|
+
const largeDimensionList = Array(1000).fill(null).map((_, i) => ({
|
|
280
|
+
Name: `Dimension${i}`,
|
|
281
|
+
Hierarchies: [{ Name: `Dimension${i}` }]
|
|
282
|
+
}));
|
|
283
|
+
|
|
284
|
+
mockRestService.get.mockResolvedValue(createMockResponse({
|
|
285
|
+
value: largeDimensionList
|
|
286
|
+
}));
|
|
287
|
+
|
|
288
|
+
const startTime = Date.now();
|
|
289
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
290
|
+
const endTime = Date.now();
|
|
291
|
+
|
|
292
|
+
expect(dimensionNames.length).toBe(1000);
|
|
293
|
+
expect(endTime - startTime).toBeLessThan(1000); // Should be fast with mocking
|
|
294
|
+
|
|
295
|
+
console.log('✅ Large dimension lists handled efficiently');
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
describe('Dimension Service Integration', () => {
|
|
300
|
+
test('should maintain consistent data across operations', async () => {
|
|
301
|
+
const dimensionData = {
|
|
302
|
+
value: [
|
|
303
|
+
{ Name: 'Time' },
|
|
304
|
+
{ Name: 'Account' }
|
|
305
|
+
]
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
mockRestService.get.mockResolvedValue(createMockResponse(dimensionData));
|
|
309
|
+
|
|
310
|
+
const names1 = await dimensionService.getAllNames();
|
|
311
|
+
const names2 = await dimensionService.getAllNames();
|
|
312
|
+
|
|
313
|
+
expect(names1).toEqual(names2);
|
|
314
|
+
expect(names1).toEqual(['Time', 'Account']);
|
|
315
|
+
|
|
316
|
+
console.log('✅ Data consistency maintained across operations');
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
test('should handle dimension hierarchy consistency', async () => {
|
|
320
|
+
const timeDimension = {
|
|
321
|
+
Name: 'Time',
|
|
322
|
+
Hierarchies: [
|
|
323
|
+
{ Name: 'Time', Elements: [{ Name: 'Jan' }, { Name: 'Feb' }] }
|
|
324
|
+
]
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
mockRestService.get.mockResolvedValueOnce(createMockResponse({
|
|
328
|
+
value: [{ Name: 'Time' }]
|
|
329
|
+
}));
|
|
330
|
+
|
|
331
|
+
mockRestService.get.mockResolvedValueOnce(createMockResponse(timeDimension));
|
|
332
|
+
|
|
333
|
+
const dimensionNames = await dimensionService.getAllNames();
|
|
334
|
+
expect(dimensionNames).toContain('Time');
|
|
335
|
+
|
|
336
|
+
const dimension = await dimensionService.get('Time');
|
|
337
|
+
expect(dimension.hierarchies[0].elements.length).toBe(2);
|
|
338
|
+
|
|
339
|
+
console.log('✅ Dimension hierarchy consistency maintained');
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
describe('Dimension CRUD Operations', () => {
|
|
344
|
+
test('should handle dimension creation and deletion lifecycle', async () => {
|
|
345
|
+
const testDimension = new Dimension('TestDimension');
|
|
346
|
+
|
|
347
|
+
// Mock dimension existence check (false) for create method's internal check
|
|
348
|
+
const mockError = new TM1RestException('Dimension not found', 404, { status: 404 });
|
|
349
|
+
mockRestService.get.mockRejectedValueOnce(mockError);
|
|
350
|
+
|
|
351
|
+
// Mock dimension creation
|
|
352
|
+
mockRestService.post.mockResolvedValue(createMockResponse({}, 201));
|
|
353
|
+
|
|
354
|
+
await dimensionService.create(testDimension);
|
|
355
|
+
|
|
356
|
+
// Mock dimension existence check (true after creation)
|
|
357
|
+
mockRestService.get.mockResolvedValueOnce(createMockResponse({
|
|
358
|
+
Name: 'TestDimension',
|
|
359
|
+
Hierarchies: []
|
|
360
|
+
}));
|
|
361
|
+
|
|
362
|
+
const afterCreationExists = await dimensionService.exists('TestDimension');
|
|
363
|
+
expect(afterCreationExists).toBe(true);
|
|
364
|
+
|
|
365
|
+
// Mock dimension deletion
|
|
366
|
+
mockRestService.delete.mockResolvedValue(createMockResponse({}, 204));
|
|
367
|
+
|
|
368
|
+
await dimensionService.delete('TestDimension');
|
|
369
|
+
|
|
370
|
+
console.log('✅ Dimension lifecycle operations handled successfully');
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
});
|