@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.
Files changed (250) hide show
  1. package/.rush/temp/package-deps_rebuild.json +38 -34
  2. package/.rush/temp/shrinkwrap-deps.json +14 -6
  3. package/CHANGELOG.json +30 -0
  4. package/CHANGELOG.md +17 -1
  5. package/coverage/clover.xml +605 -610
  6. package/coverage/coverage-final.json +28 -27
  7. package/coverage/lcov-report/index.html +31 -31
  8. package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +10 -10
  9. package/coverage/lcov-report/src/index.html +1 -1
  10. package/coverage/lcov-report/src/test/index.html +1 -1
  11. package/coverage/lcov-report/src/test/test-utils.tsx.html +22 -22
  12. package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +7 -7
  13. package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +29 -41
  14. package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +31 -37
  15. package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +270 -162
  16. package/coverage/lcov-report/src/widget/components/Constants.ts.html +4 -4
  17. package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +21 -21
  18. package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +6 -6
  19. package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +14 -14
  20. package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +15 -15
  21. package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +14 -14
  22. package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +22 -19
  23. package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +43 -43
  24. package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +57 -57
  25. package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +208 -0
  26. package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +8 -8
  27. package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +8 -8
  28. package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +14 -20
  29. package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +30 -33
  30. package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +469 -0
  31. package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +183 -231
  32. package/coverage/lcov-report/src/widget/components/Reports.tsx.html +73 -43
  33. package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +10 -10
  34. package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +10 -10
  35. package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +31 -31
  36. package/coverage/lcov-report/src/widget/components/index.html +100 -85
  37. package/coverage/lcov-report/src/widget/components/utils.tsx.html +32 -32
  38. package/coverage/lcov-report/src/widget/context/ReportsApiConfigContext.tsx.html +8 -8
  39. package/coverage/lcov-report/src/widget/context/index.html +1 -1
  40. package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
  41. package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +7 -7
  42. package/coverage/lcov-report/src/widget/index.html +1 -1
  43. package/coverage/lcov.info +990 -1003
  44. package/jest.config.js +6 -0
  45. package/lib/cjs/test/AddMappingModal.test.d.ts +2 -0
  46. package/lib/cjs/test/AddMappingModal.test.d.ts.map +1 -0
  47. package/lib/cjs/test/AddMappingModal.test.js +277 -0
  48. package/lib/cjs/test/AddMappingModal.test.js.map +1 -0
  49. package/lib/cjs/test/BulkExtractor.test.d.ts +2 -0
  50. package/lib/cjs/test/BulkExtractor.test.d.ts.map +1 -0
  51. package/lib/cjs/test/BulkExtractor.test.js +182 -0
  52. package/lib/cjs/test/BulkExtractor.test.js.map +1 -0
  53. package/lib/cjs/test/DeleteModal.test.d.ts +2 -0
  54. package/lib/cjs/test/DeleteModal.test.d.ts.map +1 -0
  55. package/lib/cjs/test/DeleteModal.test.js +93 -0
  56. package/lib/cjs/test/DeleteModal.test.js.map +1 -0
  57. package/lib/cjs/test/ReportAction.test.js +2 -3
  58. package/lib/cjs/test/ReportAction.test.js.map +1 -1
  59. package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts +2 -0
  60. package/lib/cjs/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
  61. package/lib/cjs/test/ReportMappingHorizontalTile.test.js +340 -0
  62. package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -0
  63. package/lib/cjs/test/ReportMappings.test.js +115 -267
  64. package/lib/cjs/test/ReportMappings.test.js.map +1 -1
  65. package/lib/cjs/test/Reports.test.js +1 -1
  66. package/lib/cjs/test/Reports.test.js.map +1 -1
  67. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  68. package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
  69. package/lib/cjs/widget/components/ActionPanel.js +4 -5
  70. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  71. package/lib/cjs/widget/components/AddMappingsModal.d.ts +2 -2
  72. package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
  73. package/lib/cjs/widget/components/AddMappingsModal.js +5 -4
  74. package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
  75. package/lib/cjs/widget/components/AddMappingsModal.scss +4 -3
  76. package/lib/cjs/widget/components/BulkExtractor.d.ts +18 -9
  77. package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
  78. package/lib/cjs/widget/components/BulkExtractor.js +86 -57
  79. package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
  80. package/lib/cjs/widget/components/DeleteModal.js +1 -1
  81. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  82. package/lib/cjs/widget/components/DeleteModal.scss +4 -3
  83. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
  84. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  85. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  86. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
  87. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  88. package/lib/cjs/widget/components/ExtractionStatus.scss +15 -1
  89. package/lib/cjs/widget/components/ExtractionToast.d.ts +11 -0
  90. package/lib/cjs/widget/components/ExtractionToast.d.ts.map +1 -0
  91. package/lib/cjs/widget/components/ExtractionToast.js +33 -0
  92. package/lib/cjs/widget/components/ExtractionToast.js.map +1 -0
  93. package/lib/cjs/widget/components/HorizontalTile.scss +1 -1
  94. package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
  95. package/lib/cjs/widget/components/ReportAction.js +3 -3
  96. package/lib/cjs/widget/components/ReportAction.js.map +1 -1
  97. package/lib/cjs/widget/components/ReportAction.scss +2 -2
  98. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  99. package/lib/cjs/widget/components/ReportHorizontalTile.js +1 -2
  100. package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
  101. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
  102. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
  103. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +82 -0
  104. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -0
  105. package/lib/cjs/widget/components/ReportMappings.d.ts +3 -1
  106. package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
  107. package/lib/cjs/widget/components/ReportMappings.js +39 -40
  108. package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
  109. package/lib/cjs/widget/components/ReportMappings.scss +7 -7
  110. package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
  111. package/lib/cjs/widget/components/Reports.js +13 -6
  112. package/lib/cjs/widget/components/Reports.js.map +1 -1
  113. package/lib/cjs/widget/components/Reports.scss +1 -1
  114. package/lib/cjs/widget/components/ReportsContainer.js +1 -1
  115. package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
  116. package/lib/cjs/widget/components/ReportsContainer.scss +2 -2
  117. package/lib/cjs/widget/components/SelectIModel.js +2 -2
  118. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  119. package/lib/cjs/widget/components/SelectIModel.scss +4 -3
  120. package/lib/cjs/widget/components/utils.js +1 -1
  121. package/lib/cjs/widget/components/utils.js.map +1 -1
  122. package/lib/cjs/widget/components/utils.scss +2 -2
  123. package/lib/esm/test/AddMappingModal.test.d.ts +2 -0
  124. package/lib/esm/test/AddMappingModal.test.d.ts.map +1 -0
  125. package/lib/esm/test/AddMappingModal.test.js +253 -0
  126. package/lib/esm/test/AddMappingModal.test.js.map +1 -0
  127. package/lib/esm/test/BulkExtractor.test.d.ts +2 -0
  128. package/lib/esm/test/BulkExtractor.test.d.ts.map +1 -0
  129. package/lib/esm/test/BulkExtractor.test.js +158 -0
  130. package/lib/esm/test/BulkExtractor.test.js.map +1 -0
  131. package/lib/esm/test/DeleteModal.test.d.ts +2 -0
  132. package/lib/esm/test/DeleteModal.test.d.ts.map +1 -0
  133. package/lib/esm/test/DeleteModal.test.js +69 -0
  134. package/lib/esm/test/DeleteModal.test.js.map +1 -0
  135. package/lib/esm/test/ReportAction.test.js +2 -3
  136. package/lib/esm/test/ReportAction.test.js.map +1 -1
  137. package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts +2 -0
  138. package/lib/esm/test/ReportMappingHorizontalTile.test.d.ts.map +1 -0
  139. package/lib/esm/test/ReportMappingHorizontalTile.test.js +316 -0
  140. package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -0
  141. package/lib/esm/test/ReportMappings.test.js +117 -269
  142. package/lib/esm/test/ReportMappings.test.js.map +1 -1
  143. package/lib/esm/test/Reports.test.js +1 -1
  144. package/lib/esm/test/Reports.test.js.map +1 -1
  145. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  146. package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
  147. package/lib/esm/widget/components/ActionPanel.js +4 -5
  148. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  149. package/lib/esm/widget/components/AddMappingsModal.d.ts +2 -2
  150. package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
  151. package/lib/esm/widget/components/AddMappingsModal.js +4 -5
  152. package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
  153. package/lib/esm/widget/components/AddMappingsModal.scss +4 -3
  154. package/lib/esm/widget/components/BulkExtractor.d.ts +18 -9
  155. package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
  156. package/lib/esm/widget/components/BulkExtractor.js +86 -57
  157. package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
  158. package/lib/esm/widget/components/DeleteModal.js +1 -1
  159. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  160. package/lib/esm/widget/components/DeleteModal.scss +4 -3
  161. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +1 -1
  162. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  163. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  164. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +1 -1
  165. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  166. package/lib/esm/widget/components/ExtractionStatus.scss +15 -1
  167. package/lib/esm/widget/components/ExtractionToast.d.ts +11 -0
  168. package/lib/esm/widget/components/ExtractionToast.d.ts.map +1 -0
  169. package/lib/esm/widget/components/ExtractionToast.js +25 -0
  170. package/lib/esm/widget/components/ExtractionToast.js.map +1 -0
  171. package/lib/esm/widget/components/HorizontalTile.scss +1 -1
  172. package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
  173. package/lib/esm/widget/components/ReportAction.js +3 -3
  174. package/lib/esm/widget/components/ReportAction.js.map +1 -1
  175. package/lib/esm/widget/components/ReportAction.scss +2 -2
  176. package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  177. package/lib/esm/widget/components/ReportHorizontalTile.js +1 -2
  178. package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
  179. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts +13 -0
  180. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -0
  181. package/lib/esm/widget/components/ReportMappingHorizontalTile.js +75 -0
  182. package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -0
  183. package/lib/esm/widget/components/ReportMappings.d.ts +3 -1
  184. package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
  185. package/lib/esm/widget/components/ReportMappings.js +40 -41
  186. package/lib/esm/widget/components/ReportMappings.js.map +1 -1
  187. package/lib/esm/widget/components/ReportMappings.scss +7 -7
  188. package/lib/esm/widget/components/Reports.d.ts.map +1 -1
  189. package/lib/esm/widget/components/Reports.js +15 -8
  190. package/lib/esm/widget/components/Reports.js.map +1 -1
  191. package/lib/esm/widget/components/Reports.scss +1 -1
  192. package/lib/esm/widget/components/ReportsContainer.js +1 -1
  193. package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
  194. package/lib/esm/widget/components/ReportsContainer.scss +2 -2
  195. package/lib/esm/widget/components/SelectIModel.js +2 -2
  196. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  197. package/lib/esm/widget/components/SelectIModel.scss +4 -3
  198. package/lib/esm/widget/components/utils.js +1 -1
  199. package/lib/esm/widget/components/utils.js.map +1 -1
  200. package/lib/esm/widget/components/utils.scss +2 -2
  201. package/lib/public/locales/en/ReportsConfigWidget.json +5 -0
  202. package/package.json +7 -4
  203. package/public/locales/en/ReportsConfigWidget.json +5 -0
  204. package/reports-config-widget-react.build.error.log +10 -6
  205. package/reports-config-widget-react.build.log +51 -46
  206. package/src/test/AddMappingModal.test.tsx +315 -0
  207. package/src/test/BulkExtractor.test.ts +301 -0
  208. package/src/test/DeleteModal.test.tsx +118 -0
  209. package/src/test/ReportAction.test.tsx +2 -4
  210. package/src/test/ReportMappingHorizontalTile.test.tsx +451 -0
  211. package/src/test/ReportMappings.test.tsx +154 -549
  212. package/src/test/Reports.test.tsx +1 -1
  213. package/src/widget/components/ActionPanel.tsx +19 -23
  214. package/src/widget/components/AddMappingsModal.scss +4 -3
  215. package/src/widget/components/AddMappingsModal.tsx +4 -6
  216. package/src/widget/components/BulkExtractor.ts +97 -61
  217. package/src/widget/components/DeleteModal.scss +4 -3
  218. package/src/widget/components/DeleteModal.tsx +1 -1
  219. package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +1 -1
  220. package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +1 -0
  221. package/src/widget/components/ExtractionStatus.scss +15 -1
  222. package/src/widget/components/ExtractionToast.tsx +41 -0
  223. package/src/widget/components/HorizontalTile.scss +1 -1
  224. package/src/widget/components/ReportAction.scss +2 -2
  225. package/src/widget/components/ReportAction.tsx +1 -3
  226. package/src/widget/components/ReportHorizontalTile.tsx +1 -2
  227. package/src/widget/components/ReportMappingHorizontalTile.tsx +128 -0
  228. package/src/widget/components/ReportMappings.scss +7 -7
  229. package/src/widget/components/ReportMappings.tsx +89 -105
  230. package/src/widget/components/Reports.scss +1 -1
  231. package/src/widget/components/Reports.tsx +18 -8
  232. package/src/widget/components/ReportsContainer.scss +2 -2
  233. package/src/widget/components/ReportsContainer.tsx +1 -1
  234. package/src/widget/components/SelectIModel.scss +4 -3
  235. package/src/widget/components/SelectIModel.tsx +2 -2
  236. package/src/widget/components/utils.scss +2 -2
  237. package/src/widget/components/utils.tsx +1 -1
  238. package/coverage/lcov-report/src/widget/components/Extraction.tsx.html +0 -1030
  239. package/lib/cjs/widget/components/Extraction.d.ts +0 -28
  240. package/lib/cjs/widget/components/Extraction.d.ts.map +0 -1
  241. package/lib/cjs/widget/components/Extraction.js +0 -190
  242. package/lib/cjs/widget/components/Extraction.js.map +0 -1
  243. package/lib/cjs/widget/components/Extraction.scss +0 -39
  244. package/lib/esm/widget/components/Extraction.d.ts +0 -28
  245. package/lib/esm/widget/components/Extraction.d.ts.map +0 -1
  246. package/lib/esm/widget/components/Extraction.js +0 -166
  247. package/lib/esm/widget/components/Extraction.js.map +0 -1
  248. package/lib/esm/widget/components/Extraction.scss +0 -39
  249. package/src/widget/components/Extraction.scss +0 -39
  250. package/src/widget/components/Extraction.tsx +0 -315
@@ -31,19 +31,13 @@ const faker_1 = __importDefault(require("@faker-js/faker"));
31
31
  require("@testing-library/jest-dom");
32
32
  const core_frontend_1 = require("@itwin/core-frontend");
33
33
  const ReportsConfigWidget_1 = require("../ReportsConfigWidget");
34
- const node_1 = require("msw/node");
35
34
  const test_utils_1 = require("./test-utils");
36
- const user_event_1 = __importDefault(require("@testing-library/user-event"));
37
35
  const moq = __importStar(require("typemoq"));
38
- const msw_1 = require("msw");
39
- const insights_client_1 = require("@itwin/insights-client");
40
36
  const ReportMappings_1 = require("../widget/components/ReportMappings");
41
37
  const imodels_client_management_1 = require("@itwin/imodels-client-management");
42
- const ReportsConfigUiProvider_1 = require("../widget/ReportsConfigUiProvider");
43
- const Extraction_1 = require("../widget/components/Extraction");
44
38
  const presentation_frontend_1 = require("@itwin/presentation-frontend");
45
- // For the extraction test
46
- jest.setTimeout(20000);
39
+ const itwinui_react_1 = require("@itwin/itwinui-react");
40
+ const core_common_1 = require("@itwin/core-common");
47
41
  const mockITwinId = faker_1.default.datatype.uuid();
48
42
  // Lets work with two iModels for now.
49
43
  const mockIModelId1 = faker_1.default.datatype.uuid();
@@ -184,23 +178,61 @@ const mockMappingsFactory = (mockReportMappings) => {
184
178
  },
185
179
  },
186
180
  }));
187
- const iModelHandlers = mockMappings.map((mapping) => msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/imodels/${mapping.mapping._links.imodel.href}/mappings/${mapping.mapping.id}`, async (_req, res, ctx) => {
188
- return res(ctx.delay(), ctx.status(200), ctx.json(mapping));
189
- }));
190
- return [mockMappings, iModelHandlers];
181
+ return mockMappings;
191
182
  };
192
183
  const connectionMock = moq.Mock.ofType();
184
+ const mockBulkExtractor = moq.Mock.ofType();
193
185
  const selectionManagerMock = moq.Mock.ofType();
194
186
  const selectionScopesManagerMock = moq.Mock.ofType();
187
+ const mockIModelsClient = moq.Mock.ofType();
188
+ jest.mock("../widget/components/Constants.ts", () => ({
189
+ STATUS_CHECK_INTERVAL: 10,
190
+ }));
191
+ jest.mock("../widget/components/ReportMappingHorizontalTile", () => ({
192
+ ReportMappingHorizontalTile: (props) => {
193
+ return (react_1.default.createElement("div", { "data-testid": "horizontal-tile" },
194
+ react_1.default.createElement(itwinui_react_1.Text, null, props.mapping.mappingName),
195
+ react_1.default.createElement(itwinui_react_1.Text, { title: props.mapping.mappingDescription }, props.mapping.iModelName)));
196
+ },
197
+ }));
195
198
  jest.mock("@itwin/appui-react", () => ({
196
199
  ...jest.requireActual("@itwin/appui-react"),
197
200
  useActiveIModelConnection: () => connectionMock.object,
198
201
  }));
199
- const server = node_1.setupServer();
202
+ let returnFn;
203
+ jest.mock("../widget/components/AddMappingsModal", () => ({
204
+ ...jest.requireActual("../widget/components/AddMappingsModal"),
205
+ AddMappingsModal: (props) => {
206
+ returnFn = props.returnFn;
207
+ return react_1.default.createElement("div", { "data-testid": "add-mappings-modal" });
208
+ },
209
+ }));
210
+ jest.mock("@itwin/imodels-client-management", () => ({
211
+ ...jest.requireActual("@itwin/imodels-client-management"),
212
+ IModelsClient: jest.fn().mockImplementation(() => ({
213
+ iModels: mockIModelsClient.object,
214
+ })),
215
+ toArray: jest.fn().mockImplementation(async () => {
216
+ return mockProjectIModels.iModels;
217
+ }),
218
+ }));
219
+ const mockGetMapping = jest.fn();
220
+ const mockGetMappings = jest.fn();
221
+ const mockGetReportMappings = jest.fn();
222
+ const mockDeleteReportMapping = jest.fn();
223
+ jest.mock("@itwin/insights-client", () => ({
224
+ ...jest.requireActual("@itwin/insights-client"),
225
+ MappingsClient: jest.fn().mockImplementation(() => ({
226
+ getMapping: mockGetMapping,
227
+ getMappings: mockGetMappings,
228
+ })),
229
+ ReportsClient: jest.fn().mockImplementation(() => ({
230
+ getReportMappings: mockGetReportMappings,
231
+ deleteReportMapping: mockDeleteReportMapping,
232
+ })),
233
+ }));
200
234
  beforeAll(async () => {
201
- // This is required by the i18n module within iTwin.js
202
- global.XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; // eslint-disable-line @typescript-eslint/no-var-requires
203
- await core_frontend_1.NoRenderApp.startup();
235
+ await core_frontend_1.NoRenderApp.startup({ localization: new core_common_1.EmptyLocalization() });
204
236
  await presentation_frontend_1.Presentation.initialize();
205
237
  const selectionSet = moq.Mock.ofType();
206
238
  const onChanged = moq.Mock.ofType();
@@ -223,53 +255,46 @@ beforeAll(async () => {
223
255
  presentation_frontend_1.Presentation.setSelectionManager(selectionManagerMock.object);
224
256
  await test_utils_1.TestUtils.initializeUiFramework(connectionMock.object);
225
257
  await ReportsConfigWidget_1.ReportsConfigWidget.initialize();
226
- server.listen();
227
258
  });
228
259
  afterAll(() => {
229
260
  test_utils_1.TestUtils.terminateUiFramework();
230
- server.close();
231
261
  });
232
262
  afterEach(() => {
233
- server.resetHandlers();
263
+ mockGetMapping.mockReset();
264
+ mockGetMappings.mockReset();
265
+ mockGetReportMappings.mockReset();
266
+ mockDeleteReportMapping.mockReset();
267
+ mockIModelsClient.reset();
268
+ mockBulkExtractor.reset();
234
269
  });
235
270
  describe("Report Mappings View", () => {
236
271
  it("shows all report mappings", async () => {
237
- var _a, _b;
238
272
  const mockReportMappings = mockReportMappingsFactory();
239
- const [mockMappings, iModelHandlers] = mockMappingsFactory(mockReportMappings);
240
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
241
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
242
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
243
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
244
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
245
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
246
- }), ...iModelHandlers);
247
- test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
273
+ const mockMappings = mockMappingsFactory(mockReportMappings);
274
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
275
+ .returns(async () => mockIModelsResponse[0].iModel);
276
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
277
+ .returns(async () => mockIModelsResponse[1].iModel);
278
+ mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
279
+ mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
280
+ test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
248
281
  await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
249
282
  const horizontalTiles = test_utils_1.screen.getAllByTestId("horizontal-tile");
250
- expect(horizontalTiles).toHaveLength(mockMappings.length);
251
- for (const [index, horizontalTile] of horizontalTiles.entries()) {
252
- const reportMappingTile = test_utils_1.within(horizontalTile);
253
- const mockiModel = mockIModelsResponse.find((iModel) => iModel.iModel.id === mockMappings[index].mapping._links.imodel.href);
254
- expect(reportMappingTile.getByText(mockMappings[index].mapping.mappingName)).toBeInTheDocument();
255
- expect(reportMappingTile.getByTitle((_a = mockMappings[index].mapping.description) !== null && _a !== void 0 ? _a : "")).toBeInTheDocument();
256
- expect(reportMappingTile.getByText((_b = mockiModel === null || mockiModel === void 0 ? void 0 : mockiModel.iModel.displayName) !== null && _b !== void 0 ? _b : "")).toBeInTheDocument();
257
- }
283
+ assertHorizontalTiles(horizontalTiles, mockMappings);
258
284
  });
259
285
  it("search for a report mapping", async () => {
260
286
  var _a, _b, _c, _d;
261
287
  const mockReportMappings = mockReportMappingsFactory();
262
- const [mockMappings, iModelHandlers] = mockMappingsFactory(mockReportMappings);
263
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
264
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
265
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
266
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
267
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
268
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
269
- }), ...iModelHandlers);
270
- const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
288
+ const mockMappings = mockMappingsFactory(mockReportMappings);
289
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
290
+ .returns(async () => mockIModelsResponse[0].iModel);
291
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
292
+ .returns(async () => mockIModelsResponse[1].iModel);
293
+ mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
294
+ mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
295
+ const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
271
296
  await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
272
- const searchButton = test_utils_1.within(test_utils_1.screen.getByTestId(/search-bar/i)).getByRole("button");
297
+ const searchButton = test_utils_1.within(test_utils_1.screen.getByTestId(/rcw-search-bar/i)).getByRole("button");
273
298
  await user.click(searchButton);
274
299
  const searchInput = test_utils_1.screen.getByRole("textbox", {
275
300
  name: /search\-textbox/i,
@@ -290,133 +315,33 @@ describe("Report Mappings View", () => {
290
315
  expect(test_utils_1.screen.getAllByTestId("horizontal-tile")).toHaveLength(1);
291
316
  expect(test_utils_1.screen.getByText((_d = iModel === null || iModel === void 0 ? void 0 : iModel.iModel.displayName) !== null && _d !== void 0 ? _d : "")).toBeInTheDocument();
292
317
  });
293
- it("remove a report mapping", async () => {
294
- const mockReportMappings = mockReportMappingsFactory();
295
- const [_, iModelHandlers] = mockMappingsFactory(mockReportMappings);
296
- const mockReportMappingsOriginalSize = mockReportMappings.mappings.length;
297
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
298
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
299
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
300
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
301
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
302
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
303
- }), ...iModelHandlers, msw_1.rest.delete(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings/${mockReportMappings.mappings[0].mappingId}`, async (_req, res, ctx) => {
304
- mockReportMappings.mappings = mockReportMappings.mappings.filter((mapping) => mapping.mappingId !== mockReportMappings.mappings[0].mappingId);
305
- return res(ctx.delay(100), ctx.status(204));
306
- }));
307
- const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
308
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
309
- const firstMenuDropdown = test_utils_1.within(test_utils_1.screen.getAllByTestId(/tile-action-button/i)[0]).getByRole("button");
310
- await user.click(firstMenuDropdown);
311
- const removeButton = test_utils_1.screen.getByRole("menuitem", { name: /remove/i });
312
- await user.click(removeButton);
313
- // Delete modal dialog should appear
314
- expect(test_utils_1.screen.getByRole("dialog")).toBeInTheDocument();
315
- const deleteButton = test_utils_1.screen.getByRole("button", {
316
- name: /delete/i,
317
- });
318
- await user.click(deleteButton);
319
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByTestId(/rcw-loading-delete/i));
320
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByRole("dialog"));
321
- // Should be one less mapping
322
- expect(test_utils_1.screen.getAllByTestId("horizontal-tile")).toHaveLength(mockReportMappingsOriginalSize - 1);
323
- });
324
318
  it("add mapping", async () => {
325
319
  const mockReportMappings = mockReportMappingsFactory();
326
- const [mockMappings, iModelHandlers] = mockMappingsFactory(mockReportMappings);
327
- // Adding an extra unmapped mapping.
328
- const extraMappingId = faker_1.default.datatype.uuid();
329
- const extraMappingName = "mOcKNaMeExTrA";
330
- const extraMappingDescription = "mOcKDeScRiPtIoNeXtRa";
331
- mockMappings.push({
332
- mapping: {
333
- id: extraMappingId,
334
- mappingName: extraMappingName,
335
- description: extraMappingDescription,
336
- extractionEnabled: false,
337
- createdOn: "",
338
- createdBy: "",
339
- modifiedOn: "",
340
- modifiedBy: "",
341
- _links: {
342
- imodel: {
343
- href: "",
344
- },
345
- },
346
- },
347
- });
348
- const mockMappingsResponse = {
349
- // Type guarding
350
- mappings: mockMappings
351
- .map((mapping) => mapping.mapping)
352
- .filter((mapping) => !!mapping),
353
- _links: {
354
- next: undefined,
355
- self: {
356
- href: "",
357
- },
358
- },
359
- };
360
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
361
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
362
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}`, async (_req, res, ctx) => {
363
- return res(ctx.delay(), ctx.status(200), ctx.json(mockProjectIModels));
364
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
365
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
366
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
367
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
368
- }), msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/imodels/${mockProjectIModels.iModels[0].id}/mappings`, async (_req, res, ctx) => {
369
- return res(ctx.delay(), ctx.status(200), ctx.json(mockMappingsResponse));
370
- }), msw_1.rest.post(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
371
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
372
- }), ...iModelHandlers);
373
- const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
320
+ const mockMappings = mockMappingsFactory(mockReportMappings);
321
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
322
+ .returns(async () => mockIModelsResponse[0].iModel);
323
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
324
+ .returns(async () => mockIModelsResponse[1].iModel);
325
+ mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
326
+ mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
327
+ const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
374
328
  await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
329
+ mockGetMappings.mockReturnValueOnce(mockMappings.map((m) => m.mapping));
375
330
  const addMappingButton = test_utils_1.screen.getByRole("button", {
376
331
  name: /addmapping/i,
377
332
  });
378
333
  await user.click(addMappingButton);
379
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByTestId(/rcw-action-loading-spinner/i));
380
- // Add modal dialog should appear
381
- const modal = test_utils_1.screen.getByRole("dialog");
382
- expect(test_utils_1.screen.getByRole("dialog")).toBeInTheDocument();
383
- const withinModal = test_utils_1.within(modal);
384
- expect(withinModal.getByText(/addmappings/i)).toBeInTheDocument();
385
- const addButton = withinModal.getByRole("button", {
386
- name: /add/i,
387
- });
388
- // Add button should be disabled
389
- expect(addButton).toBeDisabled();
390
- // Already mapped mappings are disabled
391
- for (let i = 0; i < mockMappings.length - 1; i++) {
392
- const row = test_utils_1.screen.getByRole("row", {
393
- name: new RegExp(`${mockMappings[i].mapping.mappingName} ${mockMappings[i].mapping.description}`, "i"),
394
- });
395
- const checkbox = test_utils_1.within(row).getByRole("checkbox");
396
- expect(checkbox).toBeDisabled();
397
- }
398
- // Click on checkbox on new mapping
399
- const unmappedRow = test_utils_1.screen.getByRole("row", {
400
- name: new RegExp(`${mockMappings[mockMappings.length - 1].mapping.mappingName} ${mockMappings[mockMappings.length - 1].mapping.description}`, "i"),
334
+ const addMappingsModal = await test_utils_1.screen.findByTestId("add-mappings-modal");
335
+ expect(addMappingsModal).toBeInTheDocument();
336
+ await test_utils_1.act(async () => {
337
+ await returnFn();
401
338
  });
402
- const enabledCheckbox = test_utils_1.within(unmappedRow).getByRole("checkbox");
403
- await user.click(enabledCheckbox);
404
- await user.click(addButton);
405
- // Modal should go away
406
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByTestId(/rcw-action-loading-spinner/i));
407
- await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByRole("dialog"));
339
+ const horizontalTiles = test_utils_1.screen.getAllByTestId("horizontal-tile");
340
+ assertHorizontalTiles(horizontalTiles, mockMappings);
341
+ expect(mockGetReportMappings).toBeCalledTimes(2);
408
342
  });
409
343
  it("odata feed url", async () => {
410
- const mockReportMappings = mockReportMappingsFactory();
411
- const [_, iModelHandlers] = mockMappingsFactory(mockReportMappings);
412
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
413
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
414
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
415
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
416
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
417
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
418
- }), ...iModelHandlers);
419
- const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
344
+ const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
420
345
  await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
421
346
  const urlTextbox = test_utils_1.screen.getByRole("textbox", {
422
347
  name: /odatafeedurl/i,
@@ -429,111 +354,34 @@ describe("Report Mappings View", () => {
429
354
  await user.click(copyButton);
430
355
  expect(test_utils_1.screen.getByText(/copiedtoclipboard/i)).toBeInTheDocument();
431
356
  });
432
- it("full extraction", async () => {
357
+ it("update all datasets", async () => {
433
358
  const mockReportMappings = mockReportMappingsFactory();
434
- const [_, iModelHandlers] = mockMappingsFactory(mockReportMappings);
435
- const delay = Extraction_1.REFRESH_DELAY + 1000;
436
- // Faking timers currently makes all promise based queries from RTL become unpredictable.
437
- // https://github.com/testing-library/dom-testing-library/issues/988
438
- // Should come back to this later.
439
- // Consequently, this test will be a bit slower.
440
- // jest.useFakeTimers()
441
- Element.prototype.scrollIntoView = jest.fn();
442
- const mockIModel = mockIModelsResponse[0].iModel;
443
- const mockRunId = faker_1.default.datatype.uuid();
444
- const mockExtractionResponse = {
445
- run: {
446
- id: mockRunId,
447
- _links: {
448
- status: {
449
- href: "",
450
- },
451
- },
452
- },
453
- };
454
- let mockStatusResponse = {
455
- status: {
456
- state: insights_client_1.ExtractorState.Queued,
457
- reason: "",
458
- containsIssues: false,
459
- _links: {
460
- logs: {
461
- href: "",
462
- },
463
- },
464
- },
465
- };
466
- server.use(msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/reports/${mockReportId}/datasources/imodelMappings`, async (_req, res, ctx) => {
467
- return res(ctx.delay(), ctx.status(200), ctx.json(mockReportMappings));
468
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId1}`, async (_req, res, ctx) => {
469
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[0]));
470
- }), msw_1.rest.get(`${imodels_client_management_1.Constants.api.baseUrl}/${mockIModelId2}`, async (_req, res, ctx) => {
471
- return res(ctx.delay(), ctx.status(200), ctx.json(mockIModelsResponse[1]));
472
- }), ...iModelHandlers, msw_1.rest.post(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/imodels/${mockIModel.id}/extraction/run`, async (_req, res, ctx) => {
473
- return res(ctx.delay(800), ctx.status(200), ctx.json(mockExtractionResponse));
474
- }), msw_1.rest.get(`${ReportsConfigUiProvider_1.REPORTS_CONFIG_BASE_URL}/insights/reporting/datasources/extraction/status/${mockRunId}`, async (_req, res, ctx) => {
475
- return res(ctx.delay(), ctx.status(200), ctx.json(mockStatusResponse));
476
- }));
477
- test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, goBack: jest.fn() }));
478
- // https://github.com/testing-library/user-event/issues/833
479
- const user = user_event_1.default.setup({ delay: null });
359
+ const mockMappings = mockMappingsFactory(mockReportMappings);
360
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId1 })))
361
+ .returns(async () => mockIModelsResponse[0].iModel);
362
+ mockIModelsClient.setup(async (x) => x.getSingle(moq.It.isObjectWith({ iModelId: mockIModelId2 })))
363
+ .returns(async () => mockIModelsResponse[1].iModel);
364
+ mockGetMapping.mockReturnValueOnce(mockMappings[0].mapping).mockReturnValueOnce(mockMappings[1].mapping);
365
+ mockGetReportMappings.mockReturnValueOnce(mockReportMappings.mappings);
366
+ const iModels = mockIModelsResponse.map((iModel) => iModel.iModel.id);
367
+ mockBulkExtractor.setup(async (x) => x.runIModelExtractions(iModels)).returns(async () => Promise.resolve());
368
+ const { user } = test_utils_1.render(react_1.default.createElement(ReportMappings_1.ReportMappings, { report: mockReport, bulkExtractor: mockBulkExtractor.object, goBack: jest.fn() }));
480
369
  await test_utils_1.waitForElementToBeRemoved(() => test_utils_1.screen.getByText(/loading/i));
481
- const comboBox = test_utils_1.screen.getByRole("combobox", {
482
- name: /updatedataset/i,
483
- });
484
- await user.type(comboBox, mockIModel.displayName);
485
- const option = test_utils_1.screen.getByRole("menuitem", {
486
- name: mockIModel.displayName,
487
- });
488
- await user.click(option);
489
- // Combobox should have correct status
490
- const extractionComponent = test_utils_1.screen.getByTestId("extraction-combo-box");
491
- expect(test_utils_1.within(extractionComponent).getByDisplayValue(mockIModel.displayName)).toBeInTheDocument();
492
- // Should be two in the document. One in the status and the other in the list.
493
- // TODO Assert that it is in the correct HorizontalTile
494
- const startingStates = await test_utils_1.screen.findAllByTitle(/starting/i);
495
- expect(startingStates).toHaveLength(2);
496
- const loadingStates = await test_utils_1.screen.findAllByTitle(/loading/i);
497
- expect(loadingStates).toHaveLength(2);
498
- // act(() => {
499
- // jest.advanceTimersByTime(2000)
500
- // });
501
- const queuedStates = await test_utils_1.screen.findAllByTitle(/queued/i, undefined, {
502
- timeout: delay,
503
- });
504
- expect(queuedStates).toHaveLength(2);
505
- mockStatusResponse = {
506
- status: {
507
- state: insights_client_1.ExtractorState.Running,
508
- reason: "",
509
- containsIssues: false,
510
- _links: {
511
- logs: {
512
- href: "",
513
- },
514
- },
515
- },
516
- };
517
- const runningStates = await test_utils_1.screen.findAllByTitle(/running/i, undefined, {
518
- timeout: delay,
519
- });
520
- expect(runningStates).toHaveLength(2);
521
- mockStatusResponse = {
522
- status: {
523
- state: insights_client_1.ExtractorState.Succeeded,
524
- reason: "",
525
- containsIssues: false,
526
- _links: {
527
- logs: {
528
- href: "",
529
- },
530
- },
531
- },
532
- };
533
- const succeededStates = await test_utils_1.screen.findAllByTitle(/success/i, undefined, {
534
- timeout: delay,
535
- });
536
- expect(succeededStates).toHaveLength(2);
370
+ const extractAllButton = test_utils_1.screen.getByText(/UpdateAllDatasets/i);
371
+ expect(extractAllButton).toBeInTheDocument();
372
+ await user.click(extractAllButton);
373
+ mockBulkExtractor.verify(async (x) => x.runIModelExtractions(iModels), moq.Times.once());
537
374
  });
375
+ const assertHorizontalTiles = (horizontalTiles, mockMappings) => {
376
+ var _a, _b;
377
+ expect(horizontalTiles).toHaveLength(mockMappings.length);
378
+ for (const [index, horizontalTile] of horizontalTiles.entries()) {
379
+ const reportMappingTile = test_utils_1.within(horizontalTile);
380
+ const mockiModel = mockIModelsResponse.find((iModel) => iModel.iModel.id === mockMappings[index].mapping._links.imodel.href);
381
+ expect(reportMappingTile.getByText(mockMappings[index].mapping.mappingName)).toBeInTheDocument();
382
+ expect(reportMappingTile.getByTitle((_a = mockMappings[index].mapping.description) !== null && _a !== void 0 ? _a : "")).toBeInTheDocument();
383
+ expect(reportMappingTile.getByText((_b = mockiModel === null || mockiModel === void 0 ? void 0 : mockiModel.iModel.displayName) !== null && _b !== void 0 ? _b : "")).toBeInTheDocument();
384
+ }
385
+ };
538
386
  });
539
387
  //# sourceMappingURL=ReportMappings.test.js.map