@itwin/reports-config-widget-react 0.3.0 → 0.5.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/CHANGELOG.json +41 -0
- package/CHANGELOG.md +25 -2
- package/coverage/clover.xml +867 -0
- package/coverage/coverage-final.json +33 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +206 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +193 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/test/index.html +116 -0
- package/coverage/lcov-report/src/test/test-utils.tsx.html +379 -0
- package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +265 -0
- package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +247 -0
- package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +589 -0
- package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +664 -0
- package/coverage/lcov-report/src/widget/components/Constants.ts.html +112 -0
- package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +367 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +187 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +145 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +139 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +151 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +190 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +176 -0
- package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +295 -0
- package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +208 -0
- package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +289 -0
- package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +262 -0
- package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +472 -0
- package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +472 -0
- package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +469 -0
- package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +1063 -0
- package/coverage/lcov-report/src/widget/components/Reports.tsx.html +754 -0
- package/coverage/lcov-report/src/widget/components/ReportsConfigContext.tsx.html +373 -0
- package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +301 -0
- package/coverage/lcov-report/src/widget/components/ReportsHeader.tsx.html +166 -0
- package/coverage/lcov-report/src/widget/components/ReportsRouter.tsx.html +274 -0
- package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +286 -0
- package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +337 -0
- package/coverage/lcov-report/src/widget/components/index.html +416 -0
- package/coverage/lcov-report/src/widget/components/utils.tsx.html +565 -0
- package/coverage/lcov-report/src/widget/context/BulkExtractorContext.tsx.html +163 -0
- package/coverage/lcov-report/src/widget/context/ReportsConfigApiContext.tsx.html +202 -0
- package/coverage/lcov-report/src/widget/context/index.html +131 -0
- package/coverage/lcov-report/src/widget/hooks/index.html +116 -0
- package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +295 -0
- package/coverage/lcov-report/src/widget/index.html +116 -0
- package/coverage/lcov.info +1609 -0
- package/jest.config.js +1 -0
- package/lib/cjs/ReportsConfigWidget.js +1 -1
- package/lib/cjs/ReportsConfigWidget.js.map +1 -1
- package/lib/cjs/reports-config-widget-react.js +5 -1
- package/lib/cjs/reports-config-widget-react.js.map +1 -1
- package/lib/cjs/test/AddMappingModal.test.js +20 -70
- package/lib/cjs/test/AddMappingModal.test.js.map +1 -1
- package/lib/cjs/test/BulkExtractor.test.js +5 -1
- package/lib/cjs/test/BulkExtractor.test.js.map +1 -1
- package/lib/cjs/test/DeleteModal.test.js +2 -2
- package/lib/cjs/test/DeleteModal.test.js.map +1 -1
- package/lib/cjs/test/ReportAction.test.js +7 -7
- package/lib/cjs/test/ReportAction.test.js.map +1 -1
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js +31 -81
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -1
- package/lib/cjs/test/ReportMappings.test.js +38 -88
- package/lib/cjs/test/ReportMappings.test.js.map +1 -1
- package/lib/cjs/test/Reports.test.js +68 -66
- package/lib/cjs/test/Reports.test.js.map +1 -1
- package/lib/cjs/test/WidgetHeader.test.js +9 -3
- package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
- package/lib/cjs/test/test-utils.d.ts +30 -0
- package/lib/cjs/test/test-utils.d.ts.map +1 -1
- package/lib/cjs/test/test-utils.js +66 -7
- package/lib/cjs/test/test-utils.js.map +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/cjs/widget/ReportsConfigUiProvider.d.ts +3 -3
- package/lib/cjs/widget/ReportsConfigUiProvider.d.ts.map +1 -1
- package/lib/cjs/widget/ReportsConfigUiProvider.js +10 -8
- package/lib/cjs/widget/ReportsConfigUiProvider.js.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.d.ts +2 -2
- package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.js +5 -1
- package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.scss +2 -3
- package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.js +27 -28
- package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.scss +1 -2
- package/lib/cjs/widget/components/BulkExtractor.js +2 -2
- package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
- package/lib/cjs/widget/components/Constants.d.ts +1 -0
- package/lib/cjs/widget/components/Constants.d.ts.map +1 -1
- package/lib/cjs/widget/components/Constants.js +2 -1
- package/lib/cjs/widget/components/Constants.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.js +8 -4
- package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.scss +2 -3
- package/lib/cjs/widget/components/ExtractionStatus.js +7 -3
- package/lib/cjs/widget/components/ExtractionStatus.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStatus.scss +6 -7
- package/lib/cjs/widget/components/HorizontalTile.js +2 -2
- package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/HorizontalTile.scss +10 -16
- package/lib/cjs/widget/components/LocalizedTablePaginator.js +7 -3
- package/lib/cjs/widget/components/LocalizedTablePaginator.js.map +1 -1
- package/lib/cjs/widget/components/ReportAction.js +19 -17
- package/lib/cjs/widget/components/ReportAction.js.map +1 -1
- package/lib/cjs/widget/components/ReportAction.scss +1 -2
- package/lib/cjs/widget/components/ReportHorizontalTile.js +14 -12
- package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +22 -18
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.js +28 -27
- package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.scss +9 -10
- package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
- package/lib/cjs/widget/components/Reports.js +26 -22
- package/lib/cjs/widget/components/Reports.js.map +1 -1
- package/lib/cjs/widget/components/Reports.scss +15 -15
- package/lib/cjs/widget/components/ReportsConfigContext.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportsConfigContext.js +29 -32
- package/lib/cjs/widget/components/ReportsConfigContext.js.map +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js +9 -6
- package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
- package/lib/cjs/widget/components/ReportsContainer.scss +1 -3
- package/lib/cjs/widget/components/ReportsRouter.js +1 -2
- package/lib/cjs/widget/components/ReportsRouter.js.map +1 -1
- package/lib/cjs/widget/components/SearchBar.d.ts.map +1 -1
- package/lib/cjs/widget/components/SearchBar.js +9 -5
- package/lib/cjs/widget/components/SearchBar.js.map +1 -1
- package/lib/cjs/widget/components/SearchBar.scss +0 -1
- package/lib/cjs/widget/components/SelectIModel.js +11 -7
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.scss +2 -3
- package/lib/cjs/widget/components/utils.d.ts.map +1 -1
- package/lib/cjs/widget/components/utils.js +1 -1
- package/lib/cjs/widget/components/utils.js.map +1 -1
- package/lib/cjs/widget/components/utils.scss +16 -8
- package/lib/cjs/widget/context/BulkExtractorContext.js +6 -2
- package/lib/cjs/widget/context/BulkExtractorContext.js.map +1 -1
- package/lib/cjs/widget/context/ReportsConfigApiContext.js +6 -2
- package/lib/cjs/widget/context/ReportsConfigApiContext.js.map +1 -1
- package/lib/cjs/widget/hooks/useValidator.js +1 -1
- package/lib/cjs/widget/hooks/useValidator.js.map +1 -1
- package/lib/esm/ReportsConfigWidget.js +1 -1
- package/lib/esm/ReportsConfigWidget.js.map +1 -1
- package/lib/esm/test/AddMappingModal.test.js +2 -56
- package/lib/esm/test/AddMappingModal.test.js.map +1 -1
- package/lib/esm/test/ReportMappingHorizontalTile.test.js +3 -57
- package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -1
- package/lib/esm/test/ReportMappings.test.js +8 -62
- package/lib/esm/test/ReportMappings.test.js.map +1 -1
- package/lib/esm/test/Reports.test.js +32 -53
- package/lib/esm/test/Reports.test.js.map +1 -1
- package/lib/esm/test/WidgetHeader.test.js +8 -2
- package/lib/esm/test/WidgetHeader.test.js.map +1 -1
- package/lib/esm/test/test-utils.d.ts +30 -0
- package/lib/esm/test/test-utils.d.ts.map +1 -1
- package/lib/esm/test/test-utils.js +59 -4
- package/lib/esm/test/test-utils.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/widget/ReportsConfigUiProvider.d.ts +3 -3
- package/lib/esm/widget/ReportsConfigUiProvider.d.ts.map +1 -1
- package/lib/esm/widget/ReportsConfigUiProvider.js +2 -4
- package/lib/esm/widget/ReportsConfigUiProvider.js.map +1 -1
- package/lib/esm/widget/components/ActionPanel.d.ts +2 -2
- package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/esm/widget/components/ActionPanel.js.map +1 -1
- package/lib/esm/widget/components/ActionPanel.scss +2 -3
- package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.js +10 -15
- package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.scss +1 -2
- package/lib/esm/widget/components/Constants.d.ts +1 -0
- package/lib/esm/widget/components/Constants.d.ts.map +1 -1
- package/lib/esm/widget/components/Constants.js +1 -0
- package/lib/esm/widget/components/Constants.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.js +2 -2
- package/lib/esm/widget/components/DeleteModal.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.scss +2 -3
- package/lib/esm/widget/components/ExtractionStatus.scss +6 -7
- package/lib/esm/widget/components/HorizontalTile.scss +10 -16
- package/lib/esm/widget/components/ReportAction.js +7 -9
- package/lib/esm/widget/components/ReportAction.js.map +1 -1
- package/lib/esm/widget/components/ReportAction.scss +1 -2
- package/lib/esm/widget/components/ReportHorizontalTile.js +4 -6
- package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js +11 -11
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -1
- package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportMappings.js +7 -10
- package/lib/esm/widget/components/ReportMappings.js.map +1 -1
- package/lib/esm/widget/components/ReportMappings.scss +9 -10
- package/lib/esm/widget/components/Reports.d.ts.map +1 -1
- package/lib/esm/widget/components/Reports.js +9 -9
- package/lib/esm/widget/components/Reports.js.map +1 -1
- package/lib/esm/widget/components/Reports.scss +15 -15
- package/lib/esm/widget/components/ReportsConfigContext.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportsConfigContext.js +21 -28
- package/lib/esm/widget/components/ReportsConfigContext.js.map +1 -1
- package/lib/esm/widget/components/ReportsContainer.js +1 -2
- package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
- package/lib/esm/widget/components/ReportsContainer.scss +1 -3
- package/lib/esm/widget/components/ReportsRouter.js +1 -2
- package/lib/esm/widget/components/ReportsRouter.js.map +1 -1
- package/lib/esm/widget/components/SearchBar.d.ts.map +1 -1
- package/lib/esm/widget/components/SearchBar.js +2 -2
- package/lib/esm/widget/components/SearchBar.js.map +1 -1
- package/lib/esm/widget/components/SearchBar.scss +0 -1
- package/lib/esm/widget/components/SelectIModel.js +1 -1
- package/lib/esm/widget/components/SelectIModel.js.map +1 -1
- package/lib/esm/widget/components/SelectIModel.scss +2 -3
- package/lib/esm/widget/components/utils.d.ts.map +1 -1
- package/lib/esm/widget/components/utils.js +2 -2
- package/lib/esm/widget/components/utils.js.map +1 -1
- package/lib/esm/widget/components/utils.scss +16 -8
- package/lib/public/locales/en/ReportsConfigWidget.json +4 -0
- package/package.json +56 -55
- package/public/locales/en/ReportsConfigWidget.json +4 -0
- package/src/test/AddMappingModal.test.tsx +7 -57
- package/src/test/ReportMappingHorizontalTile.test.tsx +6 -58
- package/src/test/ReportMappings.test.tsx +7 -58
- package/src/test/Reports.test.tsx +32 -110
- package/src/test/WidgetHeader.test.tsx +9 -2
- package/src/test/test-utils.tsx +62 -1
- package/src/widget/ReportsConfigUiProvider.tsx +7 -14
- package/src/widget/components/ActionPanel.scss +2 -3
- package/src/widget/components/ActionPanel.tsx +1 -1
- package/src/widget/components/AddMappingsModal.scss +1 -2
- package/src/widget/components/AddMappingsModal.tsx +16 -21
- package/src/widget/components/Constants.ts +2 -0
- package/src/widget/components/DeleteModal.scss +2 -3
- package/src/widget/components/DeleteModal.tsx +3 -3
- package/src/widget/components/ExtractionStatus.scss +6 -7
- package/src/widget/components/HorizontalTile.scss +10 -16
- package/src/widget/components/ReportAction.scss +1 -2
- package/src/widget/components/ReportAction.tsx +3 -3
- package/src/widget/components/ReportHorizontalTile.tsx +1 -1
- package/src/widget/components/ReportMappingHorizontalTile.tsx +28 -27
- package/src/widget/components/ReportMappings.scss +9 -10
- package/src/widget/components/ReportMappings.tsx +2 -4
- package/src/widget/components/Reports.scss +15 -15
- package/src/widget/components/Reports.tsx +25 -22
- package/src/widget/components/ReportsConfigContext.tsx +3 -2
- package/src/widget/components/ReportsContainer.scss +1 -3
- package/src/widget/components/SearchBar.scss +0 -1
- package/src/widget/components/SearchBar.tsx +6 -1
- package/src/widget/components/SelectIModel.scss +2 -3
- package/src/widget/components/SelectIModel.tsx +1 -1
- package/src/widget/components/utils.scss +16 -8
- package/src/widget/components/utils.tsx +7 -6
- package/.rush/temp/operation/rebuild/all.log +0 -9
- package/.rush/temp/operation/rebuild/state.json +0 -3
- package/.rush/temp/package-deps_rebuild.json +0 -68
- package/.rush/temp/shrinkwrap-deps.json +0 -931
- package/reports-config-widget-react.build.error.log +0 -1
- package/reports-config-widget-react.build.log +0 -2
package/jest.config.js
CHANGED
|
@@ -19,6 +19,7 @@ module.exports = {
|
|
|
19
19
|
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|svg?.+)$":
|
|
20
20
|
"<rootDir>/__mocks__/fileMock.js",
|
|
21
21
|
"\\.(scss|sass|css)$": "jest-transform-stub",
|
|
22
|
+
'^axios$': require.resolve('axios'),
|
|
22
23
|
},
|
|
23
24
|
roots: [
|
|
24
25
|
"./src/",
|
|
@@ -10,7 +10,7 @@ class ReportsConfigWidget {
|
|
|
10
10
|
return ReportsConfigWidget._localization;
|
|
11
11
|
}
|
|
12
12
|
static async initialize(localization) {
|
|
13
|
-
ReportsConfigWidget._localization = localization
|
|
13
|
+
ReportsConfigWidget._localization = localization ?? core_frontend_1.IModelApp.localization;
|
|
14
14
|
// Setup localization
|
|
15
15
|
const ReportsConfigWidgetNamespace = "ReportsConfigWidget";
|
|
16
16
|
await ReportsConfigWidget._localization.registerNamespace(ReportsConfigWidgetNamespace);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportsConfigWidget.js","sourceRoot":"","sources":["../../src/ReportsConfigWidget.ts"],"names":[],"mappings":";;;AAKA,wDAAiD;AAEjD,MAAa,mBAAmB;IAIvB,MAAM,KAAK,qBAAqB;QACrC,OAAO,mBAAmB,CAAC,sBAAsB,CAAC;IACpD,CAAC;IAEM,MAAM,KAAK,YAAY;QAC5B,OAAO,mBAAmB,CAAC,aAAa,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA2B;QACxD,mBAAmB,CAAC,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"ReportsConfigWidget.js","sourceRoot":"","sources":["../../src/ReportsConfigWidget.ts"],"names":[],"mappings":";;;AAKA,wDAAiD;AAEjD,MAAa,mBAAmB;IAIvB,MAAM,KAAK,qBAAqB;QACrC,OAAO,mBAAmB,CAAC,sBAAsB,CAAC;IACpD,CAAC;IAEM,MAAM,KAAK,YAAY;QAC5B,OAAO,mBAAmB,CAAC,aAAa,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAA2B;QACxD,mBAAmB,CAAC,aAAa,GAAG,YAAY,IAAI,yBAAS,CAAC,YAAY,CAAC;QAC3E,qBAAqB;QACrB,MAAM,4BAA4B,GAAG,qBAAqB,CAAC;QAC3D,MAAM,mBAAmB,CAAC,aAAa,CAAC,iBAAiB,CACvD,4BAA4B,CAC7B,CAAC;QAEF,mBAAmB,CAAC,sBAAsB,GAAG,4BAA4B,CAAC;IAC5E,CAAC;IAEM,MAAM,CAAC,SAAS;QACrB,mBAAmB,CAAC,aAAa,CAAC,mBAAmB,CACnD,mBAAmB,CAAC,qBAAqB,CAC1C,CAAC;IACJ,CAAC;CACF;AA5BD,kDA4BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport type { Localization } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\n\nexport class ReportsConfigWidget {\n private static _localizationNamespace: string;\n private static _localization: Localization;\n\n public static get localizationNamespace(): string {\n return ReportsConfigWidget._localizationNamespace;\n }\n\n public static get localization(): Localization {\n return ReportsConfigWidget._localization;\n }\n\n public static async initialize(localization?: Localization): Promise<void> {\n ReportsConfigWidget._localization = localization ?? IModelApp.localization;\n // Setup localization\n const ReportsConfigWidgetNamespace = \"ReportsConfigWidget\";\n await ReportsConfigWidget._localization.registerNamespace(\n ReportsConfigWidgetNamespace\n );\n\n ReportsConfigWidget._localizationNamespace = ReportsConfigWidgetNamespace;\n }\n\n public static terminate() {\n ReportsConfigWidget._localization.unregisterNamespace(\n ReportsConfigWidget.localizationNamespace\n );\n }\n}\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reports-config-widget-react.js","sourceRoot":"","sources":["../../src/reports-config-widget-react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reports-config-widget-react.js","sourceRoot":"","sources":["../../src/reports-config-widget-react.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,gDAAgD;AAChD,mEAAiD;AACjD,wDAAsC;AAEtC,uDAAoE;AAA3D,kGAAA,OAAO,OAAA;AAChB,qEAAyF;AAAhF,gHAAA,cAAc,OAAA;AACvB,iFAA2G;AAAlG,4HAAA,oBAAoB,OAAA;AAC7B,iEAAmF;AAA1E,4GAAA,YAAY,OAAA;AACrB,mEAAkE;AAAzD,8GAAA,aAAa,OAAA","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** UI Provider for iTwin Viewer Applications */\nexport * from \"./widget/ReportsConfigUiProvider\";\nexport * from \"./ReportsConfigWidget\";\n\nexport { Reports, ReportsProps } from \"./widget/components/Reports\";\nexport { ReportMappings, ReportMappingsProps } from \"./widget/components/ReportMappings\";\nexport { ReportsConfigContext, ReportsConfigContextProps } from \"./widget/components/ReportsConfigContext\";\nexport { ReportAction, ReportActionProps } from \"./widget/components/ReportAction\";\nexport { BulkExtractor } from \"./widget/components/BulkExtractor\";\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -32,63 +36,10 @@ require("@testing-library/jest-dom");
|
|
|
32
36
|
const ReportsConfigWidget_1 = require("../ReportsConfigWidget");
|
|
33
37
|
const test_utils_1 = require("./test-utils");
|
|
34
38
|
const moq = __importStar(require("typemoq"));
|
|
35
|
-
const imodels_client_management_1 = require("@itwin/imodels-client-management");
|
|
36
39
|
const AddMappingsModal_1 = require("../widget/components/AddMappingsModal");
|
|
37
40
|
const core_common_1 = require("@itwin/core-common");
|
|
38
|
-
const mockITwinId = faker_1.default.datatype.uuid();
|
|
39
|
-
const mockIModelId1 = faker_1.default.datatype.uuid();
|
|
40
|
-
const mockIModelId2 = faker_1.default.datatype.uuid();
|
|
41
|
-
const mockReportId = faker_1.default.datatype.uuid();
|
|
42
|
-
const mockIModelsResponse = [
|
|
43
|
-
{
|
|
44
|
-
iModel: {
|
|
45
|
-
id: mockIModelId1,
|
|
46
|
-
displayName: "rAnDoMdIsPlAynAmE1",
|
|
47
|
-
name: "rAnDomName1",
|
|
48
|
-
description: "rAnDoMDeScRiPtIoN1",
|
|
49
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
50
|
-
state: imodels_client_management_1.IModelState.Initialized,
|
|
51
|
-
projectId: mockITwinId,
|
|
52
|
-
extent: null,
|
|
53
|
-
_links: {
|
|
54
|
-
creator: {
|
|
55
|
-
href: "",
|
|
56
|
-
},
|
|
57
|
-
namedVersions: {
|
|
58
|
-
href: "",
|
|
59
|
-
},
|
|
60
|
-
changesets: {
|
|
61
|
-
href: "",
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
iModel: {
|
|
68
|
-
id: mockIModelId2,
|
|
69
|
-
displayName: "rAnDoMdIsPlAynAmE2",
|
|
70
|
-
name: "rAnDomName2",
|
|
71
|
-
description: "rAnDoMDeScRiPtIoN2",
|
|
72
|
-
createdDateTime: "2021-10-04T22:13:50.397Z",
|
|
73
|
-
state: imodels_client_management_1.IModelState.Initialized,
|
|
74
|
-
projectId: mockITwinId,
|
|
75
|
-
extent: null,
|
|
76
|
-
_links: {
|
|
77
|
-
creator: {
|
|
78
|
-
href: "",
|
|
79
|
-
},
|
|
80
|
-
namedVersions: {
|
|
81
|
-
href: "",
|
|
82
|
-
},
|
|
83
|
-
changesets: {
|
|
84
|
-
href: "",
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
];
|
|
90
41
|
const mockProjectIModels = {
|
|
91
|
-
iModels: mockIModelsResponse.map((iModel) => ({
|
|
42
|
+
iModels: test_utils_1.mockIModelsResponse.map((iModel) => ({
|
|
92
43
|
id: iModel.iModel.id,
|
|
93
44
|
displayName: iModel.iModel.displayName,
|
|
94
45
|
})),
|
|
@@ -104,9 +55,9 @@ const mockReportMappingsFactory = () => {
|
|
|
104
55
|
return {
|
|
105
56
|
mappings: [
|
|
106
57
|
{
|
|
107
|
-
reportId: mockReportId,
|
|
58
|
+
reportId: test_utils_1.mockReportId,
|
|
108
59
|
mappingId: faker_1.default.datatype.uuid(),
|
|
109
|
-
imodelId: mockIModelId1,
|
|
60
|
+
imodelId: test_utils_1.mockIModelId1,
|
|
110
61
|
_links: {
|
|
111
62
|
report: {
|
|
112
63
|
href: "",
|
|
@@ -120,9 +71,9 @@ const mockReportMappingsFactory = () => {
|
|
|
120
71
|
},
|
|
121
72
|
},
|
|
122
73
|
{
|
|
123
|
-
reportId: mockReportId,
|
|
74
|
+
reportId: test_utils_1.mockReportId,
|
|
124
75
|
mappingId: faker_1.default.datatype.uuid(),
|
|
125
|
-
imodelId: mockIModelId2,
|
|
76
|
+
imodelId: test_utils_1.mockIModelId2,
|
|
126
77
|
_links: {
|
|
127
78
|
report: {
|
|
128
79
|
href: "",
|
|
@@ -187,14 +138,13 @@ const mockMappingsFactory = (mockReportMappings) => {
|
|
|
187
138
|
};
|
|
188
139
|
const mockReportMappingsAndMappingsFactory = (mockMappings, reportMappings) => {
|
|
189
140
|
const reportMappingsAndMapping = reportMappings.mappings.map((reportMapping) => {
|
|
190
|
-
var _a;
|
|
191
141
|
const mapping = mockMappings.find((x) => x.mapping.id === reportMapping.mappingId).mapping;
|
|
192
142
|
const iModelName = mockProjectIModels.iModels.find((x) => x.id === reportMapping.imodelId).displayName;
|
|
193
143
|
const reportMappingAndMapping = {
|
|
194
144
|
...reportMapping,
|
|
195
145
|
iModelName,
|
|
196
146
|
mappingName: mapping.mappingName,
|
|
197
|
-
mappingDescription:
|
|
147
|
+
mappingDescription: mapping.description ?? "",
|
|
198
148
|
};
|
|
199
149
|
return reportMappingAndMapping;
|
|
200
150
|
});
|
|
@@ -215,10 +165,10 @@ const mockMappingsClient = moq.Mock.ofType();
|
|
|
215
165
|
beforeAll(async () => {
|
|
216
166
|
const localization = new core_common_1.EmptyLocalization();
|
|
217
167
|
await ReportsConfigWidget_1.ReportsConfigWidget.initialize(localization);
|
|
218
|
-
mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
|
|
219
|
-
.returns(async () => mockIModelsResponse[0].iModel);
|
|
220
|
-
mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
|
|
221
|
-
.returns(async () => mockIModelsResponse[1].iModel);
|
|
168
|
+
mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: test_utils_1.mockIModelId1 })))
|
|
169
|
+
.returns(async () => test_utils_1.mockIModelsResponse[0].iModel);
|
|
170
|
+
mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: test_utils_1.mockIModelId2 })))
|
|
171
|
+
.returns(async () => test_utils_1.mockIModelsResponse[1].iModel);
|
|
222
172
|
mockIModelsClient.setup((x) => x.iModels)
|
|
223
173
|
.returns(() => mockIModelsClientOperations.object);
|
|
224
174
|
mockReportsClient.setup(async (x) => x.createReportMapping(moq.It.isAny(), moq.It.isAny(), moq.It.isAny())).returns(mockCreateReportMapping);
|
|
@@ -234,28 +184,28 @@ describe("Add Mapping Modal", () => {
|
|
|
234
184
|
const mockMappings = mockMappingsFactory(mockReportMappings);
|
|
235
185
|
const mockReportMappingsAndMappings = mockReportMappingsAndMappingsFactory(mockMappings, mockReportMappings);
|
|
236
186
|
mockGetMappings.mockReturnValueOnce(mockMappings.map((m) => m.mapping));
|
|
237
|
-
const { user } = test_utils_1.render(react_1.default.createElement(AddMappingsModal_1.AddMappingsModal, { show: true, reportId: mockReportId, existingMappings: mockReportMappingsAndMappings, onClose: jest.fn(), defaultIModelId: mockIModelId1 }), { iTwinId: mockITwinId, reportsClient: mockReportsClient.object, mappingsClient: mockMappingsClient.object, iModelsClient: mockIModelsClient.object });
|
|
187
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(AddMappingsModal_1.AddMappingsModal, { show: true, reportId: test_utils_1.mockReportId, existingMappings: mockReportMappingsAndMappings, onClose: jest.fn(), defaultIModelId: test_utils_1.mockIModelId1 }), { iTwinId: test_utils_1.mockITwinId, reportsClient: mockReportsClient.object, mappingsClient: mockMappingsClient.object, iModelsClient: mockIModelsClient.object });
|
|
238
188
|
expect(test_utils_1.screen.getByRole("dialog")).toBeInTheDocument();
|
|
239
189
|
const modal = test_utils_1.screen.getByRole("dialog");
|
|
240
|
-
const withinModal = test_utils_1.within(modal);
|
|
190
|
+
const withinModal = (0, test_utils_1.within)(modal);
|
|
241
191
|
expect(withinModal.getByText(/addmappings/i)).toBeInTheDocument();
|
|
242
192
|
const addButton = withinModal.getByRole("button", {
|
|
243
193
|
name: /add/i,
|
|
244
194
|
});
|
|
245
|
-
await test_utils_1.waitFor(() => test_utils_1.screen.getByRole("row"));
|
|
195
|
+
await (0, test_utils_1.waitFor)(() => test_utils_1.screen.getByRole("row"));
|
|
246
196
|
// Already mapped mappings are disabled
|
|
247
197
|
for (let i = 0; i < mockMappings.length - 1; i++) {
|
|
248
198
|
const row = test_utils_1.screen.getByRole("row", {
|
|
249
199
|
name: new RegExp(`${mockMappings[i].mapping.mappingName} ${mockMappings[i].mapping.description}`, "i"),
|
|
250
200
|
});
|
|
251
|
-
const checkbox = test_utils_1.within(row).getByRole("checkbox");
|
|
201
|
+
const checkbox = (0, test_utils_1.within)(row).getByRole("checkbox");
|
|
252
202
|
expect(checkbox).toBeDisabled();
|
|
253
203
|
}
|
|
254
204
|
// Click on checkbox on new mapping
|
|
255
205
|
const unmappedRow = test_utils_1.screen.getByRole("row", {
|
|
256
206
|
name: new RegExp(`${mockMappings[mockMappings.length - 1].mapping.mappingName} ${mockMappings[mockMappings.length - 1].mapping.description}`, "i"),
|
|
257
207
|
});
|
|
258
|
-
const enabledCheckbox = test_utils_1.within(unmappedRow).getByRole("checkbox");
|
|
208
|
+
const enabledCheckbox = (0, test_utils_1.within)(unmappedRow).getByRole("checkbox");
|
|
259
209
|
await user.click(enabledCheckbox);
|
|
260
210
|
await user.click(addButton);
|
|
261
211
|
expect(mockCreateReportMapping).toBeCalledTimes(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddMappingModal.test.js","sourceRoot":"","sources":["../../../src/test/AddMappingModal.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport faker from \"@faker-js/faker\";\nimport \"@testing-library/jest-dom\";\nimport { ReportsConfigWidget } from \"../ReportsConfigWidget\";\nimport {\n render,\n screen,\n waitFor,\n within,\n} from \"./test-utils\";\nimport * as moq from \"typemoq\";\nimport type {\n MappingsClient,\n MappingSingle,\n ReportMappingCollection,\n ReportsClient,\n} from \"@itwin/insights-client\";\nimport type { ReportMappingAndMapping } from \"../widget/components/ReportMappings\";\nimport type { GetSingleIModelParams, IModelOperations, IModelsClient, OperationOptions } from \"@itwin/imodels-client-management\";\nimport { IModelState } from \"@itwin/imodels-client-management\";\nimport { AddMappingsModal } from \"../widget/components/AddMappingsModal\";\nimport { EmptyLocalization } from \"@itwin/core-common\";\n\nconst mockITwinId = faker.datatype.uuid();\nconst mockIModelId1 = faker.datatype.uuid();\nconst mockIModelId2 = faker.datatype.uuid();\n\nconst mockReportId = faker.datatype.uuid();\n\nconst mockIModelsResponse = [\n {\n iModel: {\n id: mockIModelId1,\n displayName: \"rAnDoMdIsPlAynAmE1\",\n name: \"rAnDomName1\",\n description: \"rAnDoMDeScRiPtIoN1\",\n createdDateTime: \"2021-10-04T22:13:50.397Z\",\n state: IModelState.Initialized,\n projectId: mockITwinId,\n extent: null,\n _links: {\n creator: {\n href: \"\",\n },\n namedVersions: {\n href: \"\",\n },\n changesets: {\n href: \"\",\n },\n },\n },\n },\n {\n iModel: {\n id: mockIModelId2,\n displayName: \"rAnDoMdIsPlAynAmE2\",\n name: \"rAnDomName2\",\n description: \"rAnDoMDeScRiPtIoN2\",\n createdDateTime: \"2021-10-04T22:13:50.397Z\",\n state: IModelState.Initialized,\n projectId: mockITwinId,\n extent: null,\n _links: {\n creator: {\n href: \"\",\n },\n namedVersions: {\n href: \"\",\n },\n changesets: {\n href: \"\",\n },\n },\n },\n },\n];\n\nconst mockProjectIModels = {\n iModels: mockIModelsResponse.map((iModel) => ({\n id: iModel.iModel.id,\n displayName: iModel.iModel.displayName,\n })),\n _links: {\n self: {\n href: \"\",\n },\n prev: null,\n next: null,\n },\n};\n\nconst mockReportMappingsFactory = (): ReportMappingCollection => {\n return {\n mappings: [\n {\n reportId: mockReportId,\n mappingId: faker.datatype.uuid(),\n imodelId: mockIModelId1,\n _links: {\n report: {\n href: \"\",\n },\n mapping: {\n href: \"\",\n },\n imodel: {\n href: \"\",\n },\n },\n },\n {\n reportId: mockReportId,\n mappingId: faker.datatype.uuid(),\n imodelId: mockIModelId2,\n _links: {\n report: {\n href: \"\",\n },\n mapping: {\n href: \"\",\n },\n imodel: {\n href: \"\",\n },\n },\n },\n ],\n _links: {\n next: undefined,\n self: {\n href: \"\",\n },\n },\n };\n};\n\nconst mockMappingsFactory = (\n mockReportMappings: ReportMappingCollection\n): MappingSingle[] => {\n const mockMappings: MappingSingle[] = mockReportMappings.mappings.map(\n (mapping, index) => ({\n mapping: {\n id: mapping.mappingId,\n mappingName: `mOcKMaPpIngNaMe${index}`,\n description: `mOcKmApPInGDeScRiPtIoN${index}`,\n extractionEnabled: false,\n createdOn: \"\",\n createdBy: \"\",\n modifiedOn: \"\",\n modifiedBy: \"\",\n _links: {\n imodel: {\n // Tie the mapping to to the iModel Id\n href: mapping.imodelId,\n },\n },\n },\n })\n );\n\n const extraMappingId = faker.datatype.uuid();\n const extraMappingName = \"mOcKNaMeExTrA\";\n const extraMappingDescription = \"mOcKDeScRiPtIoNeXtRa\";\n\n mockMappings.push({\n mapping: {\n id: extraMappingId,\n mappingName: extraMappingName,\n description: extraMappingDescription,\n extractionEnabled: false,\n createdOn: \"\",\n createdBy: \"\",\n modifiedOn: \"\",\n modifiedBy: \"\",\n _links: {\n imodel: {\n href: \"\",\n },\n },\n },\n });\n\n return mockMappings;\n};\n\nconst mockReportMappingsAndMappingsFactory = (mockMappings: MappingSingle[], reportMappings: ReportMappingCollection): ReportMappingAndMapping[] => {\n const reportMappingsAndMapping =\n reportMappings.mappings.map((reportMapping) => {\n const mapping = mockMappings.find((x) => x.mapping.id === reportMapping.mappingId)!.mapping;\n const iModelName = mockProjectIModels.iModels.find((x) => x.id === reportMapping.imodelId)!.displayName;\n const reportMappingAndMapping: ReportMappingAndMapping = {\n ...reportMapping,\n iModelName,\n mappingName: mapping.mappingName,\n mappingDescription: mapping.description ?? \"\",\n };\n return reportMappingAndMapping;\n });\n return reportMappingsAndMapping;\n};\n\njest.mock(\"@itwin/imodels-client-management\", () => ({\n ...jest.requireActual(\"@itwin/imodels-client-management\"),\n toArray: jest.fn().mockImplementation(async () => {\n return mockProjectIModels.iModels;\n }),\n}));\n\nconst mockGetMappings = jest.fn();\nconst mockCreateReportMapping = jest.fn();\n\nconst mockIModelsClient = moq.Mock.ofType<IModelsClient>();\nconst mockIModelsClientOperations = moq.Mock.ofType<IModelOperations<OperationOptions>>();\nconst mockReportsClient = moq.Mock.ofType<ReportsClient>();\nconst mockMappingsClient = moq.Mock.ofType<MappingsClient>();\n\nbeforeAll(async () => {\n const localization = new EmptyLocalization();\n await ReportsConfigWidget.initialize(localization);\n mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith<GetSingleIModelParams>({ iModelId: mockIModelId1 })))\n .returns(async () => mockIModelsResponse[0].iModel);\n mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith<GetSingleIModelParams>({ iModelId: mockIModelId2 })))\n .returns(async () => mockIModelsResponse[1].iModel);\n mockIModelsClient.setup((x) => x.iModels)\n .returns(() => mockIModelsClientOperations.object);\n mockReportsClient.setup(async (x) => x.createReportMapping(moq.It.isAny(), moq.It.isAny(), moq.It.isAny())).returns(mockCreateReportMapping);\n mockMappingsClient.setup(async (x) => x.getMappings(moq.It.isAny(), moq.It.isAny())).returns(mockGetMappings);\n});\n\nafterEach(() => {\n mockGetMappings.mockReset();\n mockIModelsClient.reset();\n});\n\ndescribe(\"Add Mapping Modal\", () => {\n it(\"Adding mapping sends create request\", async () => {\n const mockReportMappings = mockReportMappingsFactory();\n const mockMappings = mockMappingsFactory(mockReportMappings);\n const mockReportMappingsAndMappings = mockReportMappingsAndMappingsFactory(mockMappings, mockReportMappings);\n\n mockGetMappings.mockReturnValueOnce(mockMappings.map((m: MappingSingle) => m.mapping));\n\n const { user } = render(\n <AddMappingsModal\n show={true}\n reportId={mockReportId}\n existingMappings={mockReportMappingsAndMappings}\n onClose={jest.fn()}\n defaultIModelId={mockIModelId1}\n />, { iTwinId: mockITwinId, reportsClient: mockReportsClient.object, mappingsClient: mockMappingsClient.object, iModelsClient: mockIModelsClient.object }\n );\n\n expect(screen.getByRole(\"dialog\")).toBeInTheDocument();\n const modal = screen.getByRole(\"dialog\");\n const withinModal = within(modal);\n expect(withinModal.getByText(/addmappings/i)).toBeInTheDocument();\n\n const addButton = withinModal.getByRole(\"button\", {\n name: /add/i,\n });\n\n await waitFor(() => screen.getByRole(\"row\"));\n\n // Already mapped mappings are disabled\n for (let i = 0; i < mockMappings.length - 1; i++) {\n const row = screen.getByRole(\"row\", {\n name: new RegExp(\n `${mockMappings[i].mapping.mappingName} ${mockMappings[i].mapping.description}`,\n \"i\"\n ),\n });\n\n const checkbox = within(row).getByRole(\"checkbox\");\n expect(checkbox).toBeDisabled();\n }\n\n // Click on checkbox on new mapping\n const unmappedRow = screen.getByRole(\"row\", {\n name: new RegExp(\n `${mockMappings[mockMappings.length - 1].mapping.mappingName\n } ${mockMappings[mockMappings.length - 1].mapping.description}`,\n \"i\"\n ),\n });\n\n const enabledCheckbox = within(unmappedRow).getByRole(\"checkbox\");\n\n await user.click(enabledCheckbox);\n await user.click(addButton);\n\n expect(mockCreateReportMapping).toBeCalledTimes(1);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"AddMappingModal.test.js","sourceRoot":"","sources":["../../../src/test/AddMappingModal.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport faker from \"@faker-js/faker\";\nimport \"@testing-library/jest-dom\";\nimport { ReportsConfigWidget } from \"../ReportsConfigWidget\";\nimport {\n mockIModelId1,\n mockIModelId2,\n mockIModelsResponse,\n mockITwinId,\n mockReportId,\n render,\n screen,\n waitFor,\n within,\n} from \"./test-utils\";\nimport * as moq from \"typemoq\";\nimport type {\n MappingsClient,\n MappingSingle,\n ReportMappingCollection,\n ReportsClient,\n} from \"@itwin/insights-client\";\nimport type { ReportMappingAndMapping } from \"../widget/components/ReportMappings\";\nimport type { GetSingleIModelParams, IModelsClient } from \"@itwin/imodels-client-management\";\nimport { AddMappingsModal } from \"../widget/components/AddMappingsModal\";\nimport { EmptyLocalization } from \"@itwin/core-common\";\nimport type { IModelOperations, OperationOptions } from \"@itwin/imodels-client-management/lib/operations\";\n\nconst mockProjectIModels = {\n iModels: mockIModelsResponse.map((iModel) => ({\n id: iModel.iModel.id,\n displayName: iModel.iModel.displayName,\n })),\n _links: {\n self: {\n href: \"\",\n },\n prev: null,\n next: null,\n },\n};\n\nconst mockReportMappingsFactory = (): ReportMappingCollection => {\n return {\n mappings: [\n {\n reportId: mockReportId,\n mappingId: faker.datatype.uuid(),\n imodelId: mockIModelId1,\n _links: {\n report: {\n href: \"\",\n },\n mapping: {\n href: \"\",\n },\n imodel: {\n href: \"\",\n },\n },\n },\n {\n reportId: mockReportId,\n mappingId: faker.datatype.uuid(),\n imodelId: mockIModelId2,\n _links: {\n report: {\n href: \"\",\n },\n mapping: {\n href: \"\",\n },\n imodel: {\n href: \"\",\n },\n },\n },\n ],\n _links: {\n next: undefined,\n self: {\n href: \"\",\n },\n },\n };\n};\n\nconst mockMappingsFactory = (\n mockReportMappings: ReportMappingCollection\n): MappingSingle[] => {\n const mockMappings: MappingSingle[] = mockReportMappings.mappings.map(\n (mapping, index) => ({\n mapping: {\n id: mapping.mappingId,\n mappingName: `mOcKMaPpIngNaMe${index}`,\n description: `mOcKmApPInGDeScRiPtIoN${index}`,\n extractionEnabled: false,\n createdOn: \"\",\n createdBy: \"\",\n modifiedOn: \"\",\n modifiedBy: \"\",\n _links: {\n imodel: {\n // Tie the mapping to to the iModel Id\n href: mapping.imodelId,\n },\n },\n },\n })\n );\n\n const extraMappingId = faker.datatype.uuid();\n const extraMappingName = \"mOcKNaMeExTrA\";\n const extraMappingDescription = \"mOcKDeScRiPtIoNeXtRa\";\n\n mockMappings.push({\n mapping: {\n id: extraMappingId,\n mappingName: extraMappingName,\n description: extraMappingDescription,\n extractionEnabled: false,\n createdOn: \"\",\n createdBy: \"\",\n modifiedOn: \"\",\n modifiedBy: \"\",\n _links: {\n imodel: {\n href: \"\",\n },\n },\n },\n });\n\n return mockMappings;\n};\n\nconst mockReportMappingsAndMappingsFactory = (mockMappings: MappingSingle[], reportMappings: ReportMappingCollection): ReportMappingAndMapping[] => {\n const reportMappingsAndMapping =\n reportMappings.mappings.map((reportMapping) => {\n const mapping = mockMappings.find((x) => x.mapping.id === reportMapping.mappingId)!.mapping;\n const iModelName = mockProjectIModels.iModels.find((x) => x.id === reportMapping.imodelId)!.displayName;\n const reportMappingAndMapping: ReportMappingAndMapping = {\n ...reportMapping,\n iModelName,\n mappingName: mapping.mappingName,\n mappingDescription: mapping.description ?? \"\",\n };\n return reportMappingAndMapping;\n });\n return reportMappingsAndMapping;\n};\n\njest.mock(\"@itwin/imodels-client-management\", () => ({\n ...jest.requireActual(\"@itwin/imodels-client-management\"),\n toArray: jest.fn().mockImplementation(async () => {\n return mockProjectIModels.iModels;\n }),\n}));\n\nconst mockGetMappings = jest.fn();\nconst mockCreateReportMapping = jest.fn();\n\nconst mockIModelsClient = moq.Mock.ofType<IModelsClient>();\nconst mockIModelsClientOperations = moq.Mock.ofType<IModelOperations<OperationOptions>>();\nconst mockReportsClient = moq.Mock.ofType<ReportsClient>();\nconst mockMappingsClient = moq.Mock.ofType<MappingsClient>();\n\nbeforeAll(async () => {\n const localization = new EmptyLocalization();\n await ReportsConfigWidget.initialize(localization);\n mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith<GetSingleIModelParams>({ iModelId: mockIModelId1 })))\n .returns(async () => mockIModelsResponse[0].iModel);\n mockIModelsClientOperations.setup(async (x) => x.getSingle(moq.It.isObjectWith<GetSingleIModelParams>({ iModelId: mockIModelId2 })))\n .returns(async () => mockIModelsResponse[1].iModel);\n mockIModelsClient.setup((x) => x.iModels)\n .returns(() => mockIModelsClientOperations.object);\n mockReportsClient.setup(async (x) => x.createReportMapping(moq.It.isAny(), moq.It.isAny(), moq.It.isAny())).returns(mockCreateReportMapping);\n mockMappingsClient.setup(async (x) => x.getMappings(moq.It.isAny(), moq.It.isAny())).returns(mockGetMappings);\n});\n\nafterEach(() => {\n mockGetMappings.mockReset();\n mockIModelsClient.reset();\n});\n\ndescribe(\"Add Mapping Modal\", () => {\n it(\"Adding mapping sends create request\", async () => {\n const mockReportMappings = mockReportMappingsFactory();\n const mockMappings = mockMappingsFactory(mockReportMappings);\n const mockReportMappingsAndMappings = mockReportMappingsAndMappingsFactory(mockMappings, mockReportMappings);\n\n mockGetMappings.mockReturnValueOnce(mockMappings.map((m: MappingSingle) => m.mapping));\n\n const { user } = render(\n <AddMappingsModal\n show={true}\n reportId={mockReportId}\n existingMappings={mockReportMappingsAndMappings}\n onClose={jest.fn()}\n defaultIModelId={mockIModelId1}\n />, { iTwinId: mockITwinId, reportsClient: mockReportsClient.object, mappingsClient: mockMappingsClient.object, iModelsClient: mockIModelsClient.object }\n );\n\n expect(screen.getByRole(\"dialog\")).toBeInTheDocument();\n const modal = screen.getByRole(\"dialog\");\n const withinModal = within(modal);\n expect(withinModal.getByText(/addmappings/i)).toBeInTheDocument();\n\n const addButton = withinModal.getByRole(\"button\", {\n name: /add/i,\n });\n\n await waitFor(() => screen.getByRole(\"row\"));\n\n // Already mapped mappings are disabled\n for (let i = 0; i < mockMappings.length - 1; i++) {\n const row = screen.getByRole(\"row\", {\n name: new RegExp(\n `${mockMappings[i].mapping.mappingName} ${mockMappings[i].mapping.description}`,\n \"i\"\n ),\n });\n\n const checkbox = within(row).getByRole(\"checkbox\");\n expect(checkbox).toBeDisabled();\n }\n\n // Click on checkbox on new mapping\n const unmappedRow = screen.getByRole(\"row\", {\n name: new RegExp(\n `${mockMappings[mockMappings.length - 1].mapping.mappingName\n } ${mockMappings[mockMappings.length - 1].mapping.description}`,\n \"i\"\n ),\n });\n\n const enabledCheckbox = within(unmappedRow).getByRole(\"checkbox\");\n\n await user.click(enabledCheckbox);\n await user.click(addButton);\n\n expect(mockCreateReportMapping).toBeCalledTimes(1);\n });\n});\n"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkExtractor.test.js","sourceRoot":"","sources":["../../../src/test/BulkExtractor.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { BulkExtractor } from \"../widget/components/BulkExtractor\";\nimport { ExtractionStates } from \"../widget/components/ExtractionStatus\";\nimport { assert } from \"chai\";\nimport * as moq from \"typemoq\";\nimport { ExtractionClient, ExtractorState, ReportsClient } from \"@itwin/insights-client\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\n\njest.mock(\"../widget/components/Constants.ts\", () => ({\n STATUS_CHECK_INTERVAL: -1,\n}));\n\njest.mock(\"../widget/components/ExtractionToast.tsx\", () => ({\n FailedExtractionToast: jest.fn(),\n SuccessfulExtractionToast: jest.fn(),\n}));\n\nconst mockRunExtraction = moq.Mock.ofType<(accessToken: AccessToken, iModelId: string) => Promise<{ id: string }>>();\nconst mockGetStatus = moq.Mock.ofType<(accessToken: AccessToken, jobId: string) => Promise<{ state: ExtractorState }>>();\nconst mockGetReportMappings = moq.Mock.ofType<(accessToken: AccessToken, reportId: string) => Promise<{ imodelId: string }[]>>();\n\njest.mock(\"@itwin/insights-client\", () => ({\n ...jest.requireActual(\"@itwin/insights-client\"),\n ReportsClient: jest.fn().mockImplementation(() => ({\n getReportMappings: mockGetReportMappings.object,\n })),\n ExtractionClient: jest.fn().mockImplementation(() => ({\n runExtraction: mockRunExtraction.object,\n getExtractionStatus: mockGetStatus.object,\n })),\n}));\n\nafterEach(() => {\n mockRunExtraction.reset();\n mockGetStatus.reset();\n});\n\nconst mockToastCallback = jest.fn();\n\nconst mockGetAccessToken = async () => \"mockAccessToken\";\n\nconst mockIModelId = \"mockIModelId\";\nconst mockIModelId1 = \"mockIModelId1\";\nconst mockReportId = \"mockReportId\";\nconst mockRunId = \"mockRunId\";\nconst mockRunId1 = \"mockRunId1\";\n\ndescribe(\"BulkExtractor\", () => {\n\n it(\"should return status none for unknown iModel\", async () => {\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.None);\n });\n\n it(\"should return running status for started extraction\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Running);\n });\n\n it(\"should return failed status for failed extraction\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Failed })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Failed);\n });\n\n it(\"full status check cycle\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n\n let result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Queued);\n\n result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Running);\n\n result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Succeeded);\n });\n\n it(\"two started jobs should return status\", async () => {\n const mockIModelIds = [mockIModelId, mockIModelId1];\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runIModelExtractions(mockIModelIds);\n\n const result1 = await sut.getIModelState(mockIModelId, \"\", \"\");\n const result2 = await sut.getIModelState(mockIModelId1, \"\", \"\");\n\n assert.strictEqual(result1, ExtractionStates.Queued);\n assert.strictEqual(result2, ExtractionStates.Queued);\n });\n\n it(\"should return status none for unknown report\", async () => {\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.None);\n });\n\n it(\"should return status running for running report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Running);\n });\n\n it(\"should return status running for both iModels in report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result1 = await sut.getIModelState(mockIModelId, \"\", \"\");\n const result2 = await sut.getIModelState(mockIModelId1, \"\", \"\");\n\n assert.strictEqual(result1, ExtractionStates.Running);\n assert.strictEqual(result2, ExtractionStates.Running);\n });\n\n it(\"should return lowest progress status for extractions in report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Queued);\n });\n\n it(\"should return status failed if one of the extractions in report failed\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Failed })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId1 }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Failed);\n });\n\n it(\"full report extraction status check cycle\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runReportExtractions([mockReportId]);\n\n let result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Queued);\n\n result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Running);\n\n result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Succeeded);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"BulkExtractor.test.js","sourceRoot":"","sources":["../../../src/test/BulkExtractor.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { BulkExtractor } from \"../widget/components/BulkExtractor\";\nimport { ExtractionStates } from \"../widget/components/ExtractionStatus\";\nimport { assert } from \"chai\";\nimport * as moq from \"typemoq\";\nimport { ExtractionClient, ExtractorState, ReportsClient } from \"@itwin/insights-client\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\n\njest.mock(\"../widget/components/Constants.ts\", () => ({\n STATUS_CHECK_INTERVAL: -1,\n}));\n\njest.mock(\"../widget/components/ExtractionToast.tsx\", () => ({\n FailedExtractionToast: jest.fn(),\n SuccessfulExtractionToast: jest.fn(),\n}));\n\nconst mockRunExtraction = moq.Mock.ofType<(accessToken: AccessToken, iModelId: string) => Promise<{ id: string }>>();\nconst mockGetStatus = moq.Mock.ofType<(accessToken: AccessToken, jobId: string) => Promise<{ state: ExtractorState }>>();\nconst mockGetReportMappings = moq.Mock.ofType<(accessToken: AccessToken, reportId: string) => Promise<{ imodelId: string }[]>>();\n\njest.mock(\"@itwin/insights-client\", () => ({\n ...jest.requireActual(\"@itwin/insights-client\"),\n ReportsClient: jest.fn().mockImplementation(() => ({\n getReportMappings: mockGetReportMappings.object,\n })),\n ExtractionClient: jest.fn().mockImplementation(() => ({\n runExtraction: mockRunExtraction.object,\n getExtractionStatus: mockGetStatus.object,\n })),\n}));\n\nafterEach(() => {\n mockRunExtraction.reset();\n mockGetStatus.reset();\n});\n\nconst mockToastCallback = jest.fn();\n\nconst mockGetAccessToken = async () => \"mockAccessToken\";\n\nconst mockIModelId = \"mockIModelId\";\nconst mockIModelId1 = \"mockIModelId1\";\nconst mockReportId = \"mockReportId\";\nconst mockRunId = \"mockRunId\";\nconst mockRunId1 = \"mockRunId1\";\n\ndescribe(\"BulkExtractor\", () => {\n\n it(\"should return status none for unknown iModel\", async () => {\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.None);\n });\n\n it(\"should return running status for started extraction\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Running);\n });\n\n it(\"should return failed status for failed extraction\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Failed })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n const result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Failed);\n });\n\n it(\"full status check cycle\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockIModelId);\n\n let result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Queued);\n\n result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Running);\n\n result = await sut.getIModelState(mockIModelId, \"\", \"\");\n assert.strictEqual(result, ExtractionStates.Succeeded);\n });\n\n it(\"two started jobs should return status\", async () => {\n const mockIModelIds = [mockIModelId, mockIModelId1];\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runIModelExtractions(mockIModelIds);\n\n const result1 = await sut.getIModelState(mockIModelId, \"\", \"\");\n const result2 = await sut.getIModelState(mockIModelId1, \"\", \"\");\n\n assert.strictEqual(result1, ExtractionStates.Queued);\n assert.strictEqual(result2, ExtractionStates.Queued);\n });\n\n it(\"should return status none for unknown report\", async () => {\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.None);\n });\n\n it(\"should return status running for running report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Running);\n });\n\n it(\"should return status running for both iModels in report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result1 = await sut.getIModelState(mockIModelId, \"\", \"\");\n const result2 = await sut.getIModelState(mockIModelId1, \"\", \"\");\n\n assert.strictEqual(result1, ExtractionStates.Running);\n assert.strictEqual(result2, ExtractionStates.Running);\n });\n\n it(\"should return lowest progress status for extractions in report\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Queued);\n });\n\n it(\"should return status failed if one of the extractions in report failed\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(\n async () => ({ id: mockRunId1 })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(\n async () => ({ state: ExtractorState.Failed })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId1 }, { imodelId: mockIModelId1 }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runReportExtractions([mockReportId]);\n\n const result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Failed);\n });\n\n it(\"full report extraction status check cycle\", async () => {\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(\n async () => ({ id: mockRunId })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Queued })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Running })\n );\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(\n async () => ({ state: ExtractorState.Succeeded })\n );\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(\n async () => ([{ imodelId: mockIModelId }])\n );\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runReportExtractions([mockReportId]);\n\n let result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Queued);\n\n result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Running);\n\n result = await sut.getReportState(mockReportId);\n assert.strictEqual(result, ExtractionStates.Succeeded);\n });\n});\n"]}
|
|
@@ -19,12 +19,12 @@ beforeAll(async () => {
|
|
|
19
19
|
});
|
|
20
20
|
describe("Delete modal", () => {
|
|
21
21
|
it("should render", () => {
|
|
22
|
-
const { container } = test_utils_1.render(react_1.default.createElement(DeleteModal_1.default, { entityName: "test", onDelete: jest.fn(), refresh: jest.fn(), onClose: jest.fn() }));
|
|
22
|
+
const { container } = (0, test_utils_1.render)(react_1.default.createElement(DeleteModal_1.default, { entityName: "test", onDelete: jest.fn(), refresh: jest.fn(), onClose: jest.fn() }));
|
|
23
23
|
expect(container).toBeTruthy();
|
|
24
24
|
});
|
|
25
25
|
it("should call onDelete when delete button is clicked", async () => {
|
|
26
26
|
const onDelete = jest.fn();
|
|
27
|
-
const { user } = test_utils_1.render(react_1.default.createElement(DeleteModal_1.default, { entityName: "test", onDelete: onDelete, refresh: jest.fn(), onClose: jest.fn() }));
|
|
27
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(DeleteModal_1.default, { entityName: "test", onDelete: onDelete, refresh: jest.fn(), onClose: jest.fn() }));
|
|
28
28
|
const deleteButton = test_utils_1.screen.getByRole("button", {
|
|
29
29
|
name: /delete/i,
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteModal.test.js","sourceRoot":"","sources":["../../../src/test/DeleteModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAC1B,qCAAmC;AACnC,6CAGsB;AACtB,mFAA2D;AAC3D,gEAA6D;AAC7D,oDAAuD;AAEvD,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,YAAY,GAAG,IAAI,+BAAiB,EAAE,CAAC;IAC7C,MAAM,yCAAmB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAM,
|
|
1
|
+
{"version":3,"file":"DeleteModal.test.js","sourceRoot":"","sources":["../../../src/test/DeleteModal.test.tsx"],"names":[],"mappings":";;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAC1B,qCAAmC;AACnC,6CAGsB;AACtB,mFAA2D;AAC3D,gEAA6D;AAC7D,oDAAuD;AAEvD,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,YAAY,GAAG,IAAI,+BAAiB,EAAE,CAAC;IAC7C,MAAM,yCAAmB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,mBAAM,EAC1B,8BAAC,qBAAW,IACV,UAAU,EAAC,MAAM,EACjB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EACnB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,GAClB,CACH,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAM,EACrB,8BAAC,qBAAW,IACV,UAAU,EAAC,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,GAClB,CACH,CAAC;QACF,MAAM,YAAY,GAAG,mBAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9C,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport \"@testing-library/jest-dom\";\nimport {\n render,\n screen,\n} from \"./test-utils\";\nimport DeleteModal from \"../widget/components/DeleteModal\";\nimport { ReportsConfigWidget } from \"../ReportsConfigWidget\";\nimport { EmptyLocalization } from \"@itwin/core-common\";\n\nbeforeAll(async () => {\n const localization = new EmptyLocalization();\n await ReportsConfigWidget.initialize(localization);\n});\n\ndescribe(\"Delete modal\", () => {\n it(\"should render\", () => {\n const { container } = render(\n <DeleteModal\n entityName=\"test\"\n onDelete={jest.fn()}\n refresh={jest.fn()}\n onClose={jest.fn()}\n />\n );\n expect(container).toBeTruthy();\n });\n\n it(\"should call onDelete when delete button is clicked\", async () => {\n const onDelete = jest.fn();\n const { user } = render(\n <DeleteModal\n entityName=\"test\"\n onDelete={onDelete}\n refresh={jest.fn()}\n onClose={jest.fn()}\n />\n );\n const deleteButton = screen.getByRole(\"button\", {\n name: /delete/i,\n });\n await user.click(deleteButton);\n expect(onDelete).toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -23,7 +23,7 @@ beforeAll(async () => {
|
|
|
23
23
|
describe("Reports Action", () => {
|
|
24
24
|
it("required fields should be filled out", async () => {
|
|
25
25
|
const mockReturnFn = jest.fn();
|
|
26
|
-
test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
26
|
+
(0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
27
27
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
28
28
|
name: /add/i,
|
|
29
29
|
});
|
|
@@ -48,7 +48,7 @@ describe("Reports Action", () => {
|
|
|
48
48
|
};
|
|
49
49
|
const reportsClient = new insights_client_1.ReportsClient();
|
|
50
50
|
jest.spyOn(reportsClient, "createReport").mockImplementation(async () => new Promise((resolve) => setTimeout(() => { resolve(mockReport); }, 100)));
|
|
51
|
-
const { user } = test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }), { reportsClient });
|
|
51
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }), { reportsClient });
|
|
52
52
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
53
53
|
name: /add/i,
|
|
54
54
|
});
|
|
@@ -69,12 +69,12 @@ describe("Reports Action", () => {
|
|
|
69
69
|
expect(addButton).toBeDisabled();
|
|
70
70
|
expect(cancelButton).toBeDisabled();
|
|
71
71
|
expect(nameInput).toBeDisabled();
|
|
72
|
-
await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByTestId(/loading\-spinner/i));
|
|
72
|
+
await (0, test_utils_1.waitForElementToBeRemoved)(() => test_utils_1.screen.getByTestId(/loading\-spinner/i));
|
|
73
73
|
expect(mockReturnFn).toHaveBeenCalledTimes(1);
|
|
74
74
|
});
|
|
75
75
|
it("No duplicate underscores in the beginning of name", async () => {
|
|
76
76
|
const mockReturnFn = jest.fn();
|
|
77
|
-
const { user } = test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
77
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
78
78
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
79
79
|
name: /add/i,
|
|
80
80
|
});
|
|
@@ -87,7 +87,7 @@ describe("Reports Action", () => {
|
|
|
87
87
|
});
|
|
88
88
|
it("Only begin with letters or underscores of name", async () => {
|
|
89
89
|
const mockReturnFn = jest.fn();
|
|
90
|
-
const { user } = test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
90
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
91
91
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
92
92
|
name: /add/i,
|
|
93
93
|
});
|
|
@@ -100,7 +100,7 @@ describe("Reports Action", () => {
|
|
|
100
100
|
});
|
|
101
101
|
it("Only letters underscores and digits of name", async () => {
|
|
102
102
|
const mockReturnFn = jest.fn();
|
|
103
|
-
const { user } = test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
103
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
104
104
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
105
105
|
name: /add/i,
|
|
106
106
|
});
|
|
@@ -113,7 +113,7 @@ describe("Reports Action", () => {
|
|
|
113
113
|
});
|
|
114
114
|
it("check for character limits of name", async () => {
|
|
115
115
|
const mockReturnFn = jest.fn();
|
|
116
|
-
const { user } = test_utils_1.render(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
116
|
+
const { user } = (0, test_utils_1.render)(react_1.default.createElement(ReportAction_1.ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }));
|
|
117
117
|
const addButton = test_utils_1.screen.getByRole("button", {
|
|
118
118
|
name: /add/i,
|
|
119
119
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportAction.test.js","sourceRoot":"","sources":["../../../src/test/ReportAction.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport faker from \"@faker-js/faker\";\nimport \"@testing-library/jest-dom\";\nimport { ReportsConfigWidget } from \"../ReportsConfigWidget\";\nimport {\n render,\n screen,\n waitForElementToBeRemoved,\n} from \"./test-utils\";\nimport { ReportAction } from \"../widget/components/ReportAction\";\nimport userEvent from \"@testing-library/user-event\";\nimport { EmptyLocalization } from \"@itwin/core-common\";\nimport type { Report } from \"@itwin/insights-client\";\nimport { ReportsClient } from \"@itwin/insights-client\";\n\nbeforeAll(async () => {\n const localization = new EmptyLocalization();\n await ReportsConfigWidget.initialize(localization);\n});\n\ndescribe(\"Reports Action\", () => {\n it(\"required fields should be filled out\", async () => {\n const mockReturnFn = jest.fn();\n\n render(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n const cancelButton = screen.getByRole(\"button\", {\n name: /cancel/i,\n });\n\n expect(cancelButton).toBeEnabled();\n expect(addButton).toBeDisabled();\n });\n\n it(\"should be able to add report\", async () => {\n const mockReturnFn = jest.fn();\n const mockReport: Report = {\n id: faker.datatype.uuid(),\n displayName: \"mOcKRePoRt1\",\n description: \"\",\n deleted: false,\n _links: {\n project: {\n href: \"\",\n },\n },\n };\n\n const reportsClient = new ReportsClient();\n\n jest.spyOn(reportsClient, \"createReport\").mockImplementation(async () =>\n new Promise((resolve) => setTimeout(() => { resolve(mockReport); }, 100))\n );\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />, { reportsClient });\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n const cancelButton = screen.getByRole(\"button\", {\n name: /cancel/i,\n });\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n const descriptionInput = screen.getByRole(\"textbox\", {\n name: /description/i,\n });\n\n await userEvent.type(nameInput, \"mOcKTeXt\");\n await userEvent.type(descriptionInput, \"moCk DeScRiPtIoN\");\n expect(cancelButton).toBeEnabled();\n expect(addButton).toBeEnabled();\n\n await user.click(addButton);\n\n expect(addButton).toBeDisabled();\n expect(cancelButton).toBeDisabled();\n expect(nameInput).toBeDisabled();\n\n await waitForElementToBeRemoved(() =>\n screen.getByTestId(/loading\\-spinner/i)\n );\n\n expect(mockReturnFn).toHaveBeenCalledTimes(1);\n });\n\n it(\"No duplicate underscores in the beginning of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"__testName\");\n await user.click(addButton);\n expect(\n screen.getByText(/validators\\.noduplicateunderscore/i)\n ).toBeInTheDocument();\n });\n\n it(\"Only begin with letters or underscores of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"$testName\");\n await user.click(addButton);\n expect(\n screen.getByText(/validators\\.onlybeginswithletterorunderscore/i)\n ).toBeInTheDocument();\n });\n\n it(\"Only letters underscores and digits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"_# \");\n await user.click(addButton);\n expect(\n screen.getByText(\n /validators\\.FollowedByLettersUnderscoresSpacesAndDigits/i\n )\n ).toBeInTheDocument();\n });\n\n it(\"check for character limits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, faker.random.alpha(200));\n await user.click(addButton);\n expect(screen.getByText(/validators\\.charlimit/i)).toBeInTheDocument();\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"ReportAction.test.js","sourceRoot":"","sources":["../../../src/test/ReportAction.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport faker from \"@faker-js/faker\";\nimport \"@testing-library/jest-dom\";\nimport { ReportsConfigWidget } from \"../ReportsConfigWidget\";\nimport {\n render,\n screen,\n waitForElementToBeRemoved,\n} from \"./test-utils\";\nimport { ReportAction } from \"../widget/components/ReportAction\";\nimport userEvent from \"@testing-library/user-event\";\nimport { EmptyLocalization } from \"@itwin/core-common\";\nimport type { Report } from \"@itwin/insights-client\";\nimport { ReportsClient } from \"@itwin/insights-client\";\n\nbeforeAll(async () => {\n const localization = new EmptyLocalization();\n await ReportsConfigWidget.initialize(localization);\n});\n\ndescribe(\"Reports Action\", () => {\n it(\"required fields should be filled out\", async () => {\n const mockReturnFn = jest.fn();\n\n render(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n const cancelButton = screen.getByRole(\"button\", {\n name: /cancel/i,\n });\n\n expect(cancelButton).toBeEnabled();\n expect(addButton).toBeDisabled();\n });\n\n it(\"should be able to add report\", async () => {\n const mockReturnFn = jest.fn();\n const mockReport: Report = {\n id: faker.datatype.uuid(),\n displayName: \"mOcKRePoRt1\",\n description: \"\",\n deleted: false,\n _links: {\n project: {\n href: \"\",\n },\n },\n };\n\n const reportsClient = new ReportsClient();\n\n jest.spyOn(reportsClient, \"createReport\").mockImplementation(async () =>\n new Promise((resolve) => setTimeout(() => { resolve(mockReport); }, 100))\n );\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />, { reportsClient });\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n const cancelButton = screen.getByRole(\"button\", {\n name: /cancel/i,\n });\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n const descriptionInput = screen.getByRole(\"textbox\", {\n name: /description/i,\n });\n\n await userEvent.type(nameInput, \"mOcKTeXt\");\n await userEvent.type(descriptionInput, \"moCk DeScRiPtIoN\");\n expect(cancelButton).toBeEnabled();\n expect(addButton).toBeEnabled();\n\n await user.click(addButton);\n\n expect(addButton).toBeDisabled();\n expect(cancelButton).toBeDisabled();\n expect(nameInput).toBeDisabled();\n\n await waitForElementToBeRemoved(() =>\n screen.getByTestId(/loading\\-spinner/i)\n );\n\n expect(mockReturnFn).toHaveBeenCalledTimes(1);\n });\n\n it(\"No duplicate underscores in the beginning of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"__testName\");\n await user.click(addButton);\n expect(\n screen.getByText(/validators\\.noduplicateunderscore/i)\n ).toBeInTheDocument();\n });\n\n it(\"Only begin with letters or underscores of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"$testName\");\n await user.click(addButton);\n expect(\n screen.getByText(/validators\\.onlybeginswithletterorunderscore/i)\n ).toBeInTheDocument();\n });\n\n it(\"Only letters underscores and digits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, \"_# \");\n await user.click(addButton);\n expect(\n screen.getByText(\n /validators\\.FollowedByLettersUnderscoresSpacesAndDigits/i\n )\n ).toBeInTheDocument();\n });\n\n it(\"check for character limits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(\n <ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />\n );\n\n const addButton = screen.getByRole(\"button\", {\n name: /add/i,\n });\n\n const nameInput = screen.getByRole(\"textbox\", {\n name: /name/i,\n });\n\n await userEvent.type(nameInput, faker.random.alpha(200));\n await user.click(addButton);\n expect(screen.getByText(/validators\\.charlimit/i)).toBeInTheDocument();\n });\n});\n"]}
|