@itwin/reports-config-widget-react 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/package-deps_rebuild.json +38 -34
- package/.rush/temp/shrinkwrap-deps.json +14 -6
- package/CHANGELOG.json +30 -0
- package/CHANGELOG.md +17 -1
- package/coverage/clover.xml +605 -610
- package/coverage/coverage-final.json +28 -27
- package/coverage/lcov-report/index.html +31 -31
- package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +10 -10
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/test/index.html +1 -1
- package/coverage/lcov-report/src/test/test-utils.tsx.html +22 -22
- package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +7 -7
- package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +29 -41
- package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +31 -37
- package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +270 -162
- package/coverage/lcov-report/src/widget/components/Constants.ts.html +4 -4
- package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +21 -21
- package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +6 -6
- package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +14 -14
- package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +15 -15
- package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +14 -14
- package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +22 -19
- package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +43 -43
- package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +57 -57
- package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +208 -0
- package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +14 -20
- package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +30 -33
- package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +469 -0
- package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +183 -231
- package/coverage/lcov-report/src/widget/components/Reports.tsx.html +73 -43
- package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +10 -10
- package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +10 -10
- package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +31 -31
- package/coverage/lcov-report/src/widget/components/index.html +100 -85
- package/coverage/lcov-report/src/widget/components/utils.tsx.html +32 -32
- package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +8 -8
- package/coverage/lcov-report/src/widget/context/index.html +1 -1
- package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
- package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +7 -7
- package/coverage/lcov-report/src/widget/index.html +1 -1
- package/coverage/lcov.info +990 -1003
- package/jest.config.js +6 -0
- package/lib/cjs/test/AddMappingModal.test.d.ts +2 -0
- package/lib/cjs/test/AddMappingModal.test.d.ts.map +1 -0
- package/lib/cjs/test/AddMappingModal.test.js +277 -0
- package/lib/cjs/test/AddMappingModal.test.js.map +1 -0
- package/lib/cjs/test/BulkExtractor.test.d.ts +2 -0
- package/lib/cjs/test/BulkExtractor.test.d.ts.map +1 -0
- package/lib/cjs/test/BulkExtractor.test.js +182 -0
- package/lib/cjs/test/BulkExtractor.test.js.map +1 -0
- package/lib/cjs/test/DeleteModal.test.d.ts +2 -0
- package/lib/cjs/test/DeleteModal.test.d.ts.map +1 -0
- package/lib/cjs/test/DeleteModal.test.js +93 -0
- package/lib/cjs/test/DeleteModal.test.js.map +1 -0
- package/lib/cjs/test/ReportAction.test.js +2 -3
- package/lib/cjs/test/ReportAction.test.js.map +1 -1
- package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts +2 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js +340 -0
- package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -0
- package/lib/cjs/test/ReportMappings.test.js +115 -267
- package/lib/cjs/test/ReportMappings.test.js.map +1 -1
- package/lib/cjs/test/Reports.test.js +1 -1
- package/lib/cjs/test/Reports.test.js.map +1 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/cjs/widget/components/ActionPanel.js +4 -5
- package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.d.ts +2 -2
- package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.js +5 -4
- package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/cjs/widget/components/AddMappingsModal.scss +4 -3
- package/lib/cjs/widget/components/BulkExtractor.d.ts +18 -9
- package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
- package/lib/cjs/widget/components/BulkExtractor.js +86 -57
- package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.js +1 -1
- package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
- package/lib/cjs/widget/components/DeleteModal.scss +4 -3
- package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
- package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
- package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
- package/lib/cjs/widget/components/ExtractionStatus.scss +15 -1
- package/lib/cjs/widget/components/ExtractionToast.d.ts +11 -0
- package/lib/cjs/widget/components/ExtractionToast.d.ts.map +1 -0
- package/lib/cjs/widget/components/ExtractionToast.js +33 -0
- package/lib/cjs/widget/components/ExtractionToast.js.map +1 -0
- package/lib/cjs/widget/components/HorizontalTile.scss +1 -1
- package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportAction.js +3 -3
- package/lib/cjs/widget/components/ReportAction.js.map +1 -1
- package/lib/cjs/widget/components/ReportAction.scss +2 -2
- package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportHorizontalTile.js +1 -2
- package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +82 -0
- package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -0
- package/lib/cjs/widget/components/ReportMappings.d.ts +3 -1
- package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.js +39 -40
- package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
- package/lib/cjs/widget/components/ReportMappings.scss +7 -7
- package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
- package/lib/cjs/widget/components/Reports.js +13 -6
- package/lib/cjs/widget/components/Reports.js.map +1 -1
- package/lib/cjs/widget/components/Reports.scss +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js +1 -1
- package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
- package/lib/cjs/widget/components/ReportsContainer.scss +2 -2
- package/lib/cjs/widget/components/SelectIModel.js +2 -2
- package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
- package/lib/cjs/widget/components/SelectIModel.scss +4 -3
- 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 +2 -2
- package/lib/esm/test/AddMappingModal.test.d.ts +2 -0
- package/lib/esm/test/AddMappingModal.test.d.ts.map +1 -0
- package/lib/esm/test/AddMappingModal.test.js +253 -0
- package/lib/esm/test/AddMappingModal.test.js.map +1 -0
- package/lib/esm/test/BulkExtractor.test.d.ts +2 -0
- package/lib/esm/test/BulkExtractor.test.d.ts.map +1 -0
- package/lib/esm/test/BulkExtractor.test.js +158 -0
- package/lib/esm/test/BulkExtractor.test.js.map +1 -0
- package/lib/esm/test/DeleteModal.test.d.ts +2 -0
- package/lib/esm/test/DeleteModal.test.d.ts.map +1 -0
- package/lib/esm/test/DeleteModal.test.js +69 -0
- package/lib/esm/test/DeleteModal.test.js.map +1 -0
- package/lib/esm/test/ReportAction.test.js +2 -3
- package/lib/esm/test/ReportAction.test.js.map +1 -1
- package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts +2 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.js +316 -0
- package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -0
- package/lib/esm/test/ReportMappings.test.js +117 -269
- package/lib/esm/test/ReportMappings.test.js.map +1 -1
- package/lib/esm/test/Reports.test.js +1 -1
- package/lib/esm/test/Reports.test.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
- package/lib/esm/widget/components/ActionPanel.js +4 -5
- package/lib/esm/widget/components/ActionPanel.js.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.d.ts +2 -2
- package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.js +4 -5
- package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
- package/lib/esm/widget/components/AddMappingsModal.scss +4 -3
- package/lib/esm/widget/components/BulkExtractor.d.ts +18 -9
- package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
- package/lib/esm/widget/components/BulkExtractor.js +86 -57
- package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.js +1 -1
- package/lib/esm/widget/components/DeleteModal.js.map +1 -1
- package/lib/esm/widget/components/DeleteModal.scss +4 -3
- package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
- package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
- package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
- package/lib/esm/widget/components/ExtractionStatus.scss +15 -1
- package/lib/esm/widget/components/ExtractionToast.d.ts +11 -0
- package/lib/esm/widget/components/ExtractionToast.d.ts.map +1 -0
- package/lib/esm/widget/components/ExtractionToast.js +25 -0
- package/lib/esm/widget/components/ExtractionToast.js.map +1 -0
- package/lib/esm/widget/components/HorizontalTile.scss +1 -1
- package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportAction.js +3 -3
- package/lib/esm/widget/components/ReportAction.js.map +1 -1
- package/lib/esm/widget/components/ReportAction.scss +2 -2
- package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportHorizontalTile.js +1 -2
- package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
- package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js +75 -0
- package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -0
- package/lib/esm/widget/components/ReportMappings.d.ts +3 -1
- package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
- package/lib/esm/widget/components/ReportMappings.js +40 -41
- package/lib/esm/widget/components/ReportMappings.js.map +1 -1
- package/lib/esm/widget/components/ReportMappings.scss +7 -7
- package/lib/esm/widget/components/Reports.d.ts.map +1 -1
- package/lib/esm/widget/components/Reports.js +15 -8
- package/lib/esm/widget/components/Reports.js.map +1 -1
- package/lib/esm/widget/components/Reports.scss +1 -1
- package/lib/esm/widget/components/ReportsContainer.js +1 -1
- package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
- package/lib/esm/widget/components/ReportsContainer.scss +2 -2
- package/lib/esm/widget/components/SelectIModel.js +2 -2
- package/lib/esm/widget/components/SelectIModel.js.map +1 -1
- package/lib/esm/widget/components/SelectIModel.scss +4 -3
- package/lib/esm/widget/components/utils.js +1 -1
- package/lib/esm/widget/components/utils.js.map +1 -1
- package/lib/esm/widget/components/utils.scss +2 -2
- package/lib/public/locales/en/ReportsConfigWidget.json +5 -0
- package/package.json +7 -4
- package/public/locales/en/ReportsConfigWidget.json +5 -0
- package/reports-config-widget-react.build.error.log +10 -6
- package/reports-config-widget-react.build.log +51 -46
- package/src/test/AddMappingModal.test.tsx +315 -0
- package/src/test/BulkExtractor.test.ts +301 -0
- package/src/test/DeleteModal.test.tsx +118 -0
- package/src/test/ReportAction.test.tsx +2 -4
- package/src/test/ReportMappingHorizontalTile.test.tsx +451 -0
- package/src/test/ReportMappings.test.tsx +154 -549
- package/src/test/Reports.test.tsx +1 -1
- package/src/widget/components/ActionPanel.tsx +19 -23
- package/src/widget/components/AddMappingsModal.scss +4 -3
- package/src/widget/components/AddMappingsModal.tsx +4 -6
- package/src/widget/components/BulkExtractor.ts +97 -61
- package/src/widget/components/DeleteModal.scss +4 -3
- package/src/widget/components/DeleteModal.tsx +1 -1
- package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +1 -1
- package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +1 -0
- package/src/widget/components/ExtractionStatus.scss +15 -1
- package/src/widget/components/ExtractionToast.tsx +41 -0
- package/src/widget/components/HorizontalTile.scss +1 -1
- package/src/widget/components/ReportAction.scss +2 -2
- package/src/widget/components/ReportAction.tsx +1 -3
- package/src/widget/components/ReportHorizontalTile.tsx +1 -2
- package/src/widget/components/ReportMappingHorizontalTile.tsx +128 -0
- package/src/widget/components/ReportMappings.scss +7 -7
- package/src/widget/components/ReportMappings.tsx +89 -105
- package/src/widget/components/Reports.scss +1 -1
- package/src/widget/components/Reports.tsx +18 -8
- package/src/widget/components/ReportsContainer.scss +2 -2
- package/src/widget/components/ReportsContainer.tsx +1 -1
- package/src/widget/components/SelectIModel.scss +4 -3
- package/src/widget/components/SelectIModel.tsx +2 -2
- package/src/widget/components/utils.scss +2 -2
- package/src/widget/components/utils.tsx +1 -1
- package/coverage/lcov-report/src/widget/components/Extraction.tsx.html +0 -1030
- package/lib/cjs/widget/components/Extraction.d.ts +0 -28
- package/lib/cjs/widget/components/Extraction.d.ts.map +0 -1
- package/lib/cjs/widget/components/Extraction.js +0 -190
- package/lib/cjs/widget/components/Extraction.js.map +0 -1
- package/lib/cjs/widget/components/Extraction.scss +0 -39
- package/lib/esm/widget/components/Extraction.d.ts +0 -28
- package/lib/esm/widget/components/Extraction.d.ts.map +0 -1
- package/lib/esm/widget/components/Extraction.js +0 -166
- package/lib/esm/widget/components/Extraction.js.map +0 -1
- package/lib/esm/widget/components/Extraction.scss +0 -39
- package/src/widget/components/Extraction.scss +0 -39
- package/src/widget/components/Extraction.tsx +0 -315
|
@@ -7,19 +7,13 @@ import faker from "@faker-js/faker";
|
|
|
7
7
|
import "@testing-library/jest-dom";
|
|
8
8
|
import { NoRenderApp } from "@itwin/core-frontend";
|
|
9
9
|
import { ReportsConfigWidget } from "../ReportsConfigWidget";
|
|
10
|
-
import {
|
|
11
|
-
import { render, screen, TestUtils, waitForElementToBeRemoved, within, } from "./test-utils";
|
|
12
|
-
import userEvent from "@testing-library/user-event";
|
|
10
|
+
import { act, render, screen, TestUtils, waitForElementToBeRemoved, within, } from "./test-utils";
|
|
13
11
|
import * as moq from "typemoq";
|
|
14
|
-
import { rest } from "msw";
|
|
15
|
-
import { ExtractorState, } from "@itwin/insights-client";
|
|
16
12
|
import { ReportMappings } from "../widget/components/ReportMappings";
|
|
17
|
-
import {
|
|
18
|
-
import { REPORTS_CONFIG_BASE_URL } from "../widget/ReportsConfigUiProvider";
|
|
19
|
-
import { REFRESH_DELAY } from "../widget/components/Extraction";
|
|
13
|
+
import { IModelState } from "@itwin/imodels-client-management";
|
|
20
14
|
import { Presentation, SelectionChangeEvent, } from "@itwin/presentation-frontend";
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
import { Text } from "@itwin/itwinui-react";
|
|
16
|
+
import { EmptyLocalization } from "@itwin/core-common";
|
|
23
17
|
const mockITwinId = faker.datatype.uuid();
|
|
24
18
|
// Lets work with two iModels for now.
|
|
25
19
|
const mockIModelId1 = faker.datatype.uuid();
|
|
@@ -160,23 +154,61 @@ const mockMappingsFactory = (mockReportMappings) => {
|
|
|
160
154
|
},
|
|
161
155
|
},
|
|
162
156
|
}));
|
|
163
|
-
|
|
164
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mapping));
|
|
165
|
-
}));
|
|
166
|
-
return [mockMappings, iModelHandlers];
|
|
157
|
+
return mockMappings;
|
|
167
158
|
};
|
|
168
159
|
const connectionMock = moq.Mock.ofType();
|
|
160
|
+
const mockBulkExtractor = moq.Mock.ofType();
|
|
169
161
|
const selectionManagerMock = moq.Mock.ofType();
|
|
170
162
|
const selectionScopesManagerMock = moq.Mock.ofType();
|
|
163
|
+
const mockIModelsClient = moq.Mock.ofType();
|
|
164
|
+
jest.mock("../widget/components/Constants.ts", () => ({
|
|
165
|
+
STATUS_CHECK_INTERVAL: 10,
|
|
166
|
+
}));
|
|
167
|
+
jest.mock("../widget/components/ReportMappingHorizontalTile", () => ({
|
|
168
|
+
ReportMappingHorizontalTile: (props) => {
|
|
169
|
+
return (React.createElement("div", { "data-testid": "horizontal-tile" },
|
|
170
|
+
React.createElement(Text, null, props.mapping.mappingName),
|
|
171
|
+
React.createElement(Text, { title: props.mapping.mappingDescription }, props.mapping.iModelName)));
|
|
172
|
+
},
|
|
173
|
+
}));
|
|
171
174
|
jest.mock("@itwin/appui-react", () => ({
|
|
172
175
|
...jest.requireActual("@itwin/appui-react"),
|
|
173
176
|
useActiveIModelConnection: () => connectionMock.object,
|
|
174
177
|
}));
|
|
175
|
-
|
|
178
|
+
let returnFn;
|
|
179
|
+
jest.mock("../widget/components/AddMappingsModal", () => ({
|
|
180
|
+
...jest.requireActual("../widget/components/AddMappingsModal"),
|
|
181
|
+
AddMappingsModal: (props) => {
|
|
182
|
+
returnFn = props.returnFn;
|
|
183
|
+
return React.createElement("div", { "data-testid": "add-mappings-modal" });
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
186
|
+
jest.mock("@itwin/imodels-client-management", () => ({
|
|
187
|
+
...jest.requireActual("@itwin/imodels-client-management"),
|
|
188
|
+
IModelsClient: jest.fn().mockImplementation(() => ({
|
|
189
|
+
iModels: mockIModelsClient.object,
|
|
190
|
+
})),
|
|
191
|
+
toArray: jest.fn().mockImplementation(async () => {
|
|
192
|
+
return mockProjectIModels.iModels;
|
|
193
|
+
}),
|
|
194
|
+
}));
|
|
195
|
+
const mockGetMapping = jest.fn();
|
|
196
|
+
const mockGetMappings = jest.fn();
|
|
197
|
+
const mockGetReportMappings = jest.fn();
|
|
198
|
+
const mockDeleteReportMapping = jest.fn();
|
|
199
|
+
jest.mock("@itwin/insights-client", () => ({
|
|
200
|
+
...jest.requireActual("@itwin/insights-client"),
|
|
201
|
+
MappingsClient: jest.fn().mockImplementation(() => ({
|
|
202
|
+
getMapping: mockGetMapping,
|
|
203
|
+
getMappings: mockGetMappings,
|
|
204
|
+
})),
|
|
205
|
+
ReportsClient: jest.fn().mockImplementation(() => ({
|
|
206
|
+
getReportMappings: mockGetReportMappings,
|
|
207
|
+
deleteReportMapping: mockDeleteReportMapping,
|
|
208
|
+
})),
|
|
209
|
+
}));
|
|
176
210
|
beforeAll(async () => {
|
|
177
|
-
|
|
178
|
-
global.XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; // eslint-disable-line @typescript-eslint/no-var-requires
|
|
179
|
-
await NoRenderApp.startup();
|
|
211
|
+
await NoRenderApp.startup({ localization: new EmptyLocalization() });
|
|
180
212
|
await Presentation.initialize();
|
|
181
213
|
const selectionSet = moq.Mock.ofType();
|
|
182
214
|
const onChanged = moq.Mock.ofType();
|
|
@@ -199,53 +231,46 @@ beforeAll(async () => {
|
|
|
199
231
|
Presentation.setSelectionManager(selectionManagerMock.object);
|
|
200
232
|
await TestUtils.initializeUiFramework(connectionMock.object);
|
|
201
233
|
await ReportsConfigWidget.initialize();
|
|
202
|
-
server.listen();
|
|
203
234
|
});
|
|
204
235
|
afterAll(() => {
|
|
205
236
|
TestUtils.terminateUiFramework();
|
|
206
|
-
server.close();
|
|
207
237
|
});
|
|
208
238
|
afterEach(() => {
|
|
209
|
-
|
|
239
|
+
mockGetMapping.mockReset();
|
|
240
|
+
mockGetMappings.mockReset();
|
|
241
|
+
mockGetReportMappings.mockReset();
|
|
242
|
+
mockDeleteReportMapping.mockReset();
|
|
243
|
+
mockIModelsClient.reset();
|
|
244
|
+
mockBulkExtractor.reset();
|
|
210
245
|
});
|
|
211
246
|
describe("Report Mappings View", () => {
|
|
212
247
|
it("shows all report mappings", async () => {
|
|
213
|
-
var _a, _b;
|
|
214
248
|
const mockReportMappings = mockReportMappingsFactory();
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
249
|
+
const mockMappings = mockMappingsFactory(mockReportMappings);
|
|
250
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
|
|
251
|
+
.returns(async () => mockIModelsResponse[0].iModel);
|
|
252
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
|
|
253
|
+
.returns(async () => mockIModelsResponse[1].iModel);
|
|
254
|
+
mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
|
|
255
|
+
mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
|
|
256
|
+
render(React.createElement(ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
|
|
224
257
|
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
225
258
|
const horizontalTiles = screen.getAllByTestId("horizontal-tile");
|
|
226
|
-
|
|
227
|
-
for (const [index, horizontalTile] of horizontalTiles.entries()) {
|
|
228
|
-
const reportMappingTile = within(horizontalTile);
|
|
229
|
-
const mockiModel = mockIModelsResponse.find((iModel) => iModel.iModel.id === mockMappings[index].mapping._links.imodel.href);
|
|
230
|
-
expect(reportMappingTile.getByText(mockMappings[index].mapping.mappingName)).toBeInTheDocument();
|
|
231
|
-
expect(reportMappingTile.getByTitle((_a = mockMappings[index].mapping.description) !== null && _a !== void 0 ? _a : "")).toBeInTheDocument();
|
|
232
|
-
expect(reportMappingTile.getByText((_b = mockiModel === null || mockiModel === void 0 ? void 0 : mockiModel.iModel.displayName) !== null && _b !== void 0 ? _b : "")).toBeInTheDocument();
|
|
233
|
-
}
|
|
259
|
+
assertHorizontalTiles(horizontalTiles, mockMappings);
|
|
234
260
|
});
|
|
235
261
|
it("search for a report mapping", async () => {
|
|
236
262
|
var _a, _b, _c, _d;
|
|
237
263
|
const mockReportMappings = mockReportMappingsFactory();
|
|
238
|
-
const
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
const { user } = render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
264
|
+
const mockMappings = mockMappingsFactory(mockReportMappings);
|
|
265
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
|
|
266
|
+
.returns(async () => mockIModelsResponse[0].iModel);
|
|
267
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
|
|
268
|
+
.returns(async () => mockIModelsResponse[1].iModel);
|
|
269
|
+
mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
|
|
270
|
+
mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
|
|
271
|
+
const { user } = render(React.createElement(ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
|
|
247
272
|
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
248
|
-
const searchButton = within(screen.getByTestId(/search-bar/i)).getByRole("button");
|
|
273
|
+
const searchButton = within(screen.getByTestId(/rcw-search-bar/i)).getByRole("button");
|
|
249
274
|
await user.click(searchButton);
|
|
250
275
|
const searchInput = screen.getByRole("textbox", {
|
|
251
276
|
name: /search\-textbox/i,
|
|
@@ -266,133 +291,33 @@ describe("Report Mappings View", () => {
|
|
|
266
291
|
expect(screen.getAllByTestId("horizontal-tile")).toHaveLength(1);
|
|
267
292
|
expect(screen.getByText((_d = iModel === null || iModel === void 0 ? void 0 : iModel.iModel.displayName) !== null && _d !== void 0 ? _d : "")).toBeInTheDocument();
|
|
268
293
|
});
|
|
269
|
-
it("remove a report mapping", async () => {
|
|
270
|
-
const mockReportMappings = mockReportMappingsFactory();
|
|
271
|
-
const [_, iModelHandlers] = mockMappingsFactory(mockReportMappings);
|
|
272
|
-
const mockReportMappingsOriginalSize = mockReportMappings.mappings.length;
|
|
273
|
-
server.use(rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
|
|
274
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
|
|
275
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
|
|
276
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
|
|
277
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
|
|
278
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
|
|
279
|
-
}), ...iModelHandlers, rest.delete(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings/${mockReportMappings.mappings[0].mappingId}`, async (_req, res, ctx) => {
|
|
280
|
-
mockReportMappings.mappings = mockReportMappings.mappings.filter((mapping) => mapping.mappingId !== mockReportMappings.mappings[0].mappingId);
|
|
281
|
-
return res(ctx.delay(100), ctx.status(204));
|
|
282
|
-
}));
|
|
283
|
-
const { user } = render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
284
|
-
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
285
|
-
const firstMenuDropdown = within(screen.getAllByTestId(/tile-action-button/i)[0]).getByRole("button");
|
|
286
|
-
await user.click(firstMenuDropdown);
|
|
287
|
-
const removeButton = screen.getByRole("menuitem", { name: /remove/i });
|
|
288
|
-
await user.click(removeButton);
|
|
289
|
-
// Delete modal dialog should appear
|
|
290
|
-
expect(screen.getByRole("dialog")).toBeInTheDocument();
|
|
291
|
-
const deleteButton = screen.getByRole("button", {
|
|
292
|
-
name: /delete/i,
|
|
293
|
-
});
|
|
294
|
-
await user.click(deleteButton);
|
|
295
|
-
await waitForElementToBeRemoved(() => screen.getByTestId(/rcw-loading-delete/i));
|
|
296
|
-
await waitForElementToBeRemoved(() => screen.getByRole("dialog"));
|
|
297
|
-
// Should be one less mapping
|
|
298
|
-
expect(screen.getAllByTestId("horizontal-tile")).toHaveLength(mockReportMappingsOriginalSize - 1);
|
|
299
|
-
});
|
|
300
294
|
it("add mapping", async () => {
|
|
301
295
|
const mockReportMappings = mockReportMappingsFactory();
|
|
302
|
-
const
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
mockMappings.
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
mappingName: extraMappingName,
|
|
311
|
-
description: extraMappingDescription,
|
|
312
|
-
extractionEnabled: false,
|
|
313
|
-
createdOn: "",
|
|
314
|
-
createdBy: "",
|
|
315
|
-
modifiedOn: "",
|
|
316
|
-
modifiedBy: "",
|
|
317
|
-
_links: {
|
|
318
|
-
imodel: {
|
|
319
|
-
href: "",
|
|
320
|
-
},
|
|
321
|
-
},
|
|
322
|
-
},
|
|
323
|
-
});
|
|
324
|
-
const mockMappingsResponse = {
|
|
325
|
-
// Type guarding
|
|
326
|
-
mappings: mockMappings
|
|
327
|
-
.map((mapping) => mapping.mapping)
|
|
328
|
-
.filter((mapping) => !!mapping),
|
|
329
|
-
_links: {
|
|
330
|
-
next: undefined,
|
|
331
|
-
self: {
|
|
332
|
-
href: "",
|
|
333
|
-
},
|
|
334
|
-
},
|
|
335
|
-
};
|
|
336
|
-
server.use(rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
|
|
337
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
|
|
338
|
-
}), rest.get(`${Constants.api.baseUrl}`, async (_req, res, ctx) => {
|
|
339
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockProjectIModels));
|
|
340
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
|
|
341
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
|
|
342
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
|
|
343
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
|
|
344
|
-
}), rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/imodels/${mockProjectIModels.iModels[0].id}/mappings`, async (_req, res, ctx) => {
|
|
345
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockMappingsResponse));
|
|
346
|
-
}), rest.post(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
|
|
347
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
|
|
348
|
-
}), ...iModelHandlers);
|
|
349
|
-
const { user } = render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
296
|
+
const mockMappings = mockMappingsFactory(mockReportMappings);
|
|
297
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
|
|
298
|
+
.returns(async () => mockIModelsResponse[0].iModel);
|
|
299
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
|
|
300
|
+
.returns(async () => mockIModelsResponse[1].iModel);
|
|
301
|
+
mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
|
|
302
|
+
mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
|
|
303
|
+
const { user } = render(React.createElement(ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
|
|
350
304
|
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
305
|
+
mockGetMappings.mockReturnValueOnce(mockMappings.map((m) => m.mapping));
|
|
351
306
|
const addMappingButton = screen.getByRole("button", {
|
|
352
307
|
name: /addmapping/i,
|
|
353
308
|
});
|
|
354
309
|
await user.click(addMappingButton);
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const withinModal = within(modal);
|
|
360
|
-
expect(withinModal.getByText(/addmappings/i)).toBeInTheDocument();
|
|
361
|
-
const addButton = withinModal.getByRole("button", {
|
|
362
|
-
name: /add/i,
|
|
363
|
-
});
|
|
364
|
-
// Add button should be disabled
|
|
365
|
-
expect(addButton).toBeDisabled();
|
|
366
|
-
// Already mapped mappings are disabled
|
|
367
|
-
for (let i = 0; i < mockMappings.length - 1; i++) {
|
|
368
|
-
const row = screen.getByRole("row", {
|
|
369
|
-
name: new RegExp(`${mockMappings[i].mapping.mappingName} ${mockMappings[i].mapping.description}`, "i"),
|
|
370
|
-
});
|
|
371
|
-
const checkbox = within(row).getByRole("checkbox");
|
|
372
|
-
expect(checkbox).toBeDisabled();
|
|
373
|
-
}
|
|
374
|
-
// Click on checkbox on new mapping
|
|
375
|
-
const unmappedRow = screen.getByRole("row", {
|
|
376
|
-
name: new RegExp(`${mockMappings[mockMappings.length - 1].mapping.mappingName} ${mockMappings[mockMappings.length - 1].mapping.description}`, "i"),
|
|
310
|
+
const addMappingsModal = await screen.findByTestId("add-mappings-modal");
|
|
311
|
+
expect(addMappingsModal).toBeInTheDocument();
|
|
312
|
+
await act(async () => {
|
|
313
|
+
await returnFn();
|
|
377
314
|
});
|
|
378
|
-
const
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
// Modal should go away
|
|
382
|
-
await waitForElementToBeRemoved(() => screen.getByTestId(/rcw-action-loading-spinner/i));
|
|
383
|
-
await waitForElementToBeRemoved(() => screen.getByRole("dialog"));
|
|
315
|
+
const horizontalTiles = screen.getAllByTestId("horizontal-tile");
|
|
316
|
+
assertHorizontalTiles(horizontalTiles, mockMappings);
|
|
317
|
+
expect(mockGetReportMappings).toBeCalledTimes(2);
|
|
384
318
|
});
|
|
385
319
|
it("odata feed url", async () => {
|
|
386
|
-
const
|
|
387
|
-
const [_, iModelHandlers] = mockMappingsFactory(mockReportMappings);
|
|
388
|
-
server.use(rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
|
|
389
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
|
|
390
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
|
|
391
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
|
|
392
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
|
|
393
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
|
|
394
|
-
}), ...iModelHandlers);
|
|
395
|
-
const { user } = render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
320
|
+
const { user } = render(React.createElement(ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
|
|
396
321
|
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
397
322
|
const urlTextbox = screen.getByRole("textbox", {
|
|
398
323
|
name: /odatafeedurl/i,
|
|
@@ -405,111 +330,34 @@ describe("Report Mappings View", () => {
|
|
|
405
330
|
await user.click(copyButton);
|
|
406
331
|
expect(screen.getByText(/copiedtoclipboard/i)).toBeInTheDocument();
|
|
407
332
|
});
|
|
408
|
-
it("
|
|
333
|
+
it("update all datasets", async () => {
|
|
409
334
|
const mockReportMappings = mockReportMappingsFactory();
|
|
410
|
-
const
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
const
|
|
420
|
-
const mockExtractionResponse = {
|
|
421
|
-
run: {
|
|
422
|
-
id: mockRunId,
|
|
423
|
-
_links: {
|
|
424
|
-
status: {
|
|
425
|
-
href: "",
|
|
426
|
-
},
|
|
427
|
-
},
|
|
428
|
-
},
|
|
429
|
-
};
|
|
430
|
-
let mockStatusResponse = {
|
|
431
|
-
status: {
|
|
432
|
-
state: ExtractorState.Queued,
|
|
433
|
-
reason: "",
|
|
434
|
-
containsIssues: false,
|
|
435
|
-
_links: {
|
|
436
|
-
logs: {
|
|
437
|
-
href: "",
|
|
438
|
-
},
|
|
439
|
-
},
|
|
440
|
-
},
|
|
441
|
-
};
|
|
442
|
-
server.use(rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
|
|
443
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
|
|
444
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
|
|
445
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
|
|
446
|
-
}), rest.get(`${Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
|
|
447
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
|
|
448
|
-
}), ...iModelHandlers, rest.post(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/imodels/${mockIModel.id}/extraction/run`, async (_req, res, ctx) => {
|
|
449
|
-
return res(ctx.delay(800), ctx.status(200), ctx.json(mockExtractionResponse));
|
|
450
|
-
}), rest.get(`${REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/extraction/status/${mockRunId}`, async (_req, res, ctx) => {
|
|
451
|
-
return res(ctx.delay(), ctx.status(200), ctx.json(mockStatusResponse));
|
|
452
|
-
}));
|
|
453
|
-
render(React.createElement(ReportMappings, { report: mockReport, goBack: jest.fn() }));
|
|
454
|
-
// https://github.com/testing-library/user-event/issues/833
|
|
455
|
-
const user = userEvent.setup({ delay: null });
|
|
335
|
+
const mockMappings = mockMappingsFactory(mockReportMappings);
|
|
336
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
|
|
337
|
+
.returns(async () => mockIModelsResponse[0].iModel);
|
|
338
|
+
mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
|
|
339
|
+
.returns(async () => mockIModelsResponse[1].iModel);
|
|
340
|
+
mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
|
|
341
|
+
mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
|
|
342
|
+
const iModels = mockIModelsResponse.map((iModel) => iModel.iModel.id);
|
|
343
|
+
mockBulkExtractor.setup(async (x) => x.runIModelExtractions(iModels)).returns(async () => Promise.resolve());
|
|
344
|
+
const { user } = render(React.createElement(ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
|
|
456
345
|
await waitForElementToBeRemoved(() => screen.getByText(/loading/i));
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
const option = screen.getByRole("menuitem", {
|
|
462
|
-
name: mockIModel.displayName,
|
|
463
|
-
});
|
|
464
|
-
await user.click(option);
|
|
465
|
-
// Combobox should have correct status
|
|
466
|
-
const extractionComponent = screen.getByTestId("extraction-combo-box");
|
|
467
|
-
expect(within(extractionComponent).getByDisplayValue(mockIModel.displayName)).toBeInTheDocument();
|
|
468
|
-
// Should be two in the document. One in the status and the other in the list.
|
|
469
|
-
// TODO Assert that it is in the correct HorizontalTile
|
|
470
|
-
const startingStates = await screen.findAllByTitle(/starting/i);
|
|
471
|
-
expect(startingStates).toHaveLength(2);
|
|
472
|
-
const loadingStates = await screen.findAllByTitle(/loading/i);
|
|
473
|
-
expect(loadingStates).toHaveLength(2);
|
|
474
|
-
// act(() => {
|
|
475
|
-
// jest.advanceTimersByTime(2000)
|
|
476
|
-
// });
|
|
477
|
-
const queuedStates = await screen.findAllByTitle(/queued/i, undefined, {
|
|
478
|
-
timeout: delay,
|
|
479
|
-
});
|
|
480
|
-
expect(queuedStates).toHaveLength(2);
|
|
481
|
-
mockStatusResponse = {
|
|
482
|
-
status: {
|
|
483
|
-
state: ExtractorState.Running,
|
|
484
|
-
reason: "",
|
|
485
|
-
containsIssues: false,
|
|
486
|
-
_links: {
|
|
487
|
-
logs: {
|
|
488
|
-
href: "",
|
|
489
|
-
},
|
|
490
|
-
},
|
|
491
|
-
},
|
|
492
|
-
};
|
|
493
|
-
const runningStates = await screen.findAllByTitle(/running/i, undefined, {
|
|
494
|
-
timeout: delay,
|
|
495
|
-
});
|
|
496
|
-
expect(runningStates).toHaveLength(2);
|
|
497
|
-
mockStatusResponse = {
|
|
498
|
-
status: {
|
|
499
|
-
state: ExtractorState.Succeeded,
|
|
500
|
-
reason: "",
|
|
501
|
-
containsIssues: false,
|
|
502
|
-
_links: {
|
|
503
|
-
logs: {
|
|
504
|
-
href: "",
|
|
505
|
-
},
|
|
506
|
-
},
|
|
507
|
-
},
|
|
508
|
-
};
|
|
509
|
-
const succeededStates = await screen.findAllByTitle(/success/i, undefined, {
|
|
510
|
-
timeout: delay,
|
|
511
|
-
});
|
|
512
|
-
expect(succeededStates).toHaveLength(2);
|
|
346
|
+
const extractAllButton = screen.getByText(/UpdateAllDatasets/i);
|
|
347
|
+
expect(extractAllButton).toBeInTheDocument();
|
|
348
|
+
await user.click(extractAllButton);
|
|
349
|
+
mockBulkExtractor.verify(async (x) => x.runIModelExtractions(iModels), moq.Times.once());
|
|
513
350
|
});
|
|
351
|
+
const assertHorizontalTiles = (horizontalTiles, mockMappings) => {
|
|
352
|
+
var _a, _b;
|
|
353
|
+
expect(horizontalTiles).toHaveLength(mockMappings.length);
|
|
354
|
+
for (const [index, horizontalTile] of horizontalTiles.entries()) {
|
|
355
|
+
const reportMappingTile = within(horizontalTile);
|
|
356
|
+
const mockiModel = mockIModelsResponse.find((iModel) => iModel.iModel.id === mockMappings[index].mapping._links.imodel.href);
|
|
357
|
+
expect(reportMappingTile.getByText(mockMappings[index].mapping.mappingName)).toBeInTheDocument();
|
|
358
|
+
expect(reportMappingTile.getByTitle((_a = mockMappings[index].mapping.description) !== null && _a !== void 0 ? _a : "")).toBeInTheDocument();
|
|
359
|
+
expect(reportMappingTile.getByText((_b = mockiModel === null || mockiModel === void 0 ? void 0 : mockiModel.iModel.displayName) !== null && _b !== void 0 ? _b : "")).toBeInTheDocument();
|
|
360
|
+
}
|
|
361
|
+
};
|
|
514
362
|
});
|
|
515
363
|
//# sourceMappingURL=ReportMappings.test.js.map
|