@itwin/reports-config-widget-react 0.4.0 → 0.6.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.
Files changed (393) hide show
  1. package/CHANGELOG.json +61 -0
  2. package/CHANGELOG.md +23 -2
  3. package/LICENSE.md +9 -9
  4. package/README.md +38 -38
  5. package/__mocks__/fileMock.js +4 -4
  6. package/api/reports-config-widget-react.api.md +130 -0
  7. package/api/reports-config-widget-react.exports.csv +14 -0
  8. package/api/temp/reports-config-widget-react.api.md +130 -0
  9. package/coverage/clover.xml +524 -514
  10. package/coverage/coverage-final.json +32 -32
  11. package/coverage/lcov-report/favicon.png +0 -0
  12. package/coverage/lcov-report/index.html +26 -26
  13. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  14. package/coverage/lcov-report/src/ReportsConfigWidget.ts.html +15 -15
  15. package/coverage/lcov-report/src/index.html +1 -1
  16. package/coverage/lcov-report/src/test/index.html +15 -15
  17. package/coverage/lcov-report/src/test/test-utils.tsx.html +233 -20
  18. package/coverage/lcov-report/src/widget/ReportsConfigUiProvider.tsx.html +22 -64
  19. package/coverage/lcov-report/src/widget/components/ActionPanel.tsx.html +5 -38
  20. package/coverage/lcov-report/src/widget/components/AddMappingsModal.tsx.html +23 -119
  21. package/coverage/lcov-report/src/widget/components/BulkExtractor.ts.html +117 -90
  22. package/coverage/lcov-report/src/widget/components/Constants.ts.html +16 -10
  23. package/coverage/lcov-report/src/widget/components/DeleteModal.tsx.html +16 -106
  24. package/coverage/lcov-report/src/widget/components/ExtractionStates/FailedExtractionState.tsx.html +6 -21
  25. package/coverage/lcov-report/src/widget/components/ExtractionStates/QueuedExtractionState.tsx.html +6 -21
  26. package/coverage/lcov-report/src/widget/components/ExtractionStates/RunningExtractionState.tsx.html +7 -22
  27. package/coverage/lcov-report/src/widget/components/ExtractionStates/StartingExtractionState.tsx.html +7 -28
  28. package/coverage/lcov-report/src/widget/components/ExtractionStates/SucceededExtractionState.tsx.html +6 -21
  29. package/coverage/lcov-report/src/widget/components/ExtractionStates/index.html +1 -1
  30. package/coverage/lcov-report/src/widget/components/ExtractionStatus.tsx.html +20 -47
  31. package/coverage/lcov-report/src/widget/components/ExtractionToast.tsx.html +20 -11
  32. package/coverage/lcov-report/src/widget/components/HorizontalTile.tsx.html +16 -79
  33. package/coverage/lcov-report/src/widget/components/LocalizedTablePaginator.tsx.html +15 -108
  34. package/coverage/lcov-report/src/widget/components/ReportAction.tsx.html +36 -75
  35. package/coverage/lcov-report/src/widget/components/ReportHorizontalTile.tsx.html +62 -92
  36. package/coverage/lcov-report/src/widget/components/ReportMappingHorizontalTile.tsx.html +104 -128
  37. package/coverage/lcov-report/src/widget/components/ReportMappings.tsx.html +86 -299
  38. package/coverage/lcov-report/src/widget/components/Reports.tsx.html +64 -226
  39. package/coverage/lcov-report/src/widget/components/ReportsConfigContext.tsx.html +63 -45
  40. package/coverage/lcov-report/src/widget/components/ReportsContainer.tsx.html +10 -49
  41. package/coverage/lcov-report/src/widget/components/ReportsHeader.tsx.html +8 -47
  42. package/coverage/lcov-report/src/widget/components/ReportsRouter.tsx.html +6 -12
  43. package/coverage/lcov-report/src/widget/components/SearchBar.tsx.html +15 -27
  44. package/coverage/lcov-report/src/widget/components/SelectIModel.tsx.html +12 -57
  45. package/coverage/lcov-report/src/widget/components/index.html +56 -56
  46. package/coverage/lcov-report/src/widget/components/utils.tsx.html +32 -176
  47. package/coverage/lcov-report/src/widget/context/BulkExtractorContext.tsx.html +9 -15
  48. package/coverage/lcov-report/src/widget/context/ReportsConfigApiContext.tsx.html +9 -15
  49. package/coverage/lcov-report/src/widget/context/index.html +1 -1
  50. package/coverage/lcov-report/src/widget/hooks/index.html +1 -1
  51. package/coverage/lcov-report/src/widget/hooks/useValidator.ts.html +12 -54
  52. package/coverage/lcov-report/src/widget/index.html +1 -1
  53. package/coverage/lcov.info +959 -922
  54. package/jest.config.js +14 -17
  55. package/lib/cjs/ReportsConfigWidget.d.ts +4 -0
  56. package/lib/cjs/ReportsConfigWidget.d.ts.map +1 -1
  57. package/lib/cjs/ReportsConfigWidget.js +4 -0
  58. package/lib/cjs/ReportsConfigWidget.js.map +1 -1
  59. package/lib/cjs/reports-config-widget-react.js +8 -4
  60. package/lib/cjs/reports-config-widget-react.js.map +1 -1
  61. package/lib/cjs/test/AddMappingModal.test.js +24 -72
  62. package/lib/cjs/test/AddMappingModal.test.js.map +1 -1
  63. package/lib/cjs/test/BulkExtractor.test.js +73 -44
  64. package/lib/cjs/test/BulkExtractor.test.js.map +1 -1
  65. package/lib/cjs/test/DeleteModal.test.js +3 -3
  66. package/lib/cjs/test/DeleteModal.test.js.map +1 -1
  67. package/lib/cjs/test/ReportAction.test.js +6 -4
  68. package/lib/cjs/test/ReportAction.test.js.map +1 -1
  69. package/lib/cjs/test/ReportMappingHorizontalTile.test.js +76 -86
  70. package/lib/cjs/test/ReportMappingHorizontalTile.test.js.map +1 -1
  71. package/lib/cjs/test/ReportMappings.test.js +53 -80
  72. package/lib/cjs/test/ReportMappings.test.js.map +1 -1
  73. package/lib/cjs/test/Reports.test.js +54 -50
  74. package/lib/cjs/test/Reports.test.js.map +1 -1
  75. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  76. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  77. package/lib/cjs/test/test-utils.d.ts +38 -0
  78. package/lib/cjs/test/test-utils.d.ts.map +1 -1
  79. package/lib/cjs/test/test-utils.js +79 -5
  80. package/lib/cjs/test/test-utils.js.map +1 -1
  81. package/lib/cjs/tsconfig.tsbuildinfo +1 -1
  82. package/lib/cjs/widget/ReportsConfigUiProvider.d.ts +7 -0
  83. package/lib/cjs/widget/ReportsConfigUiProvider.d.ts.map +1 -1
  84. package/lib/cjs/widget/ReportsConfigUiProvider.js +13 -4
  85. package/lib/cjs/widget/ReportsConfigUiProvider.js.map +1 -1
  86. package/lib/cjs/widget/components/ActionPanel.d.ts.map +1 -1
  87. package/lib/cjs/widget/components/ActionPanel.js +5 -1
  88. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  89. package/lib/cjs/widget/components/AddMappingsModal.d.ts +1 -1
  90. package/lib/cjs/widget/components/AddMappingsModal.d.ts.map +1 -1
  91. package/lib/cjs/widget/components/AddMappingsModal.js +12 -8
  92. package/lib/cjs/widget/components/AddMappingsModal.js.map +1 -1
  93. package/lib/cjs/widget/components/AddMappingsModal.scss +1 -1
  94. package/lib/cjs/widget/components/BulkExtractor.d.ts +7 -4
  95. package/lib/cjs/widget/components/BulkExtractor.d.ts.map +1 -1
  96. package/lib/cjs/widget/components/BulkExtractor.js +52 -35
  97. package/lib/cjs/widget/components/BulkExtractor.js.map +1 -1
  98. package/lib/cjs/widget/components/Constants.d.ts +1 -0
  99. package/lib/cjs/widget/components/Constants.d.ts.map +1 -1
  100. package/lib/cjs/widget/components/Constants.js +5 -4
  101. package/lib/cjs/widget/components/Constants.js.map +1 -1
  102. package/lib/cjs/widget/components/DeleteModal.d.ts +1 -1
  103. package/lib/cjs/widget/components/DeleteModal.d.ts.map +1 -1
  104. package/lib/cjs/widget/components/DeleteModal.js +10 -6
  105. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  106. package/lib/cjs/widget/components/DeleteModal.scss +2 -2
  107. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.d.ts.map +1 -1
  108. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.js +3 -3
  109. package/lib/cjs/widget/components/ExtractionStates/FailedExtractionState.js.map +1 -1
  110. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.d.ts.map +1 -1
  111. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.js +3 -3
  112. package/lib/cjs/widget/components/ExtractionStates/QueuedExtractionState.js.map +1 -1
  113. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.d.ts.map +1 -1
  114. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js +3 -3
  115. package/lib/cjs/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  116. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.d.ts.map +1 -1
  117. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.js +3 -3
  118. package/lib/cjs/widget/components/ExtractionStates/StartingExtractionState.js.map +1 -1
  119. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  120. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js +3 -3
  121. package/lib/cjs/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  122. package/lib/cjs/widget/components/ExtractionStatus.d.ts +1 -1
  123. package/lib/cjs/widget/components/ExtractionStatus.d.ts.map +1 -1
  124. package/lib/cjs/widget/components/ExtractionStatus.js +14 -10
  125. package/lib/cjs/widget/components/ExtractionStatus.js.map +1 -1
  126. package/lib/cjs/widget/components/ExtractionStatus.scss +1 -1
  127. package/lib/cjs/widget/components/ExtractionToast.d.ts.map +1 -1
  128. package/lib/cjs/widget/components/ExtractionToast.js +3 -3
  129. package/lib/cjs/widget/components/ExtractionToast.js.map +1 -1
  130. package/lib/cjs/widget/components/HorizontalTile.d.ts.map +1 -1
  131. package/lib/cjs/widget/components/HorizontalTile.js +1 -2
  132. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
  133. package/lib/cjs/widget/components/HorizontalTile.scss +1 -4
  134. package/lib/cjs/widget/components/LocalizedTablePaginator.d.ts.map +1 -1
  135. package/lib/cjs/widget/components/LocalizedTablePaginator.js +6 -2
  136. package/lib/cjs/widget/components/LocalizedTablePaginator.js.map +1 -1
  137. package/lib/cjs/widget/components/ReportAction.d.ts +8 -0
  138. package/lib/cjs/widget/components/ReportAction.d.ts.map +1 -1
  139. package/lib/cjs/widget/components/ReportAction.js +14 -8
  140. package/lib/cjs/widget/components/ReportAction.js.map +1 -1
  141. package/lib/cjs/widget/components/ReportAction.scss +1 -1
  142. package/lib/cjs/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  143. package/lib/cjs/widget/components/ReportHorizontalTile.js +9 -5
  144. package/lib/cjs/widget/components/ReportHorizontalTile.js.map +1 -1
  145. package/lib/cjs/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
  146. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js +51 -46
  147. package/lib/cjs/widget/components/ReportMappingHorizontalTile.js.map +1 -1
  148. package/lib/cjs/widget/components/ReportMappings.d.ts +8 -0
  149. package/lib/cjs/widget/components/ReportMappings.d.ts.map +1 -1
  150. package/lib/cjs/widget/components/ReportMappings.js +30 -12
  151. package/lib/cjs/widget/components/ReportMappings.js.map +1 -1
  152. package/lib/cjs/widget/components/Reports.d.ts +9 -1
  153. package/lib/cjs/widget/components/Reports.d.ts.map +1 -1
  154. package/lib/cjs/widget/components/Reports.js +12 -9
  155. package/lib/cjs/widget/components/Reports.js.map +1 -1
  156. package/lib/cjs/widget/components/Reports.scss +0 -1
  157. package/lib/cjs/widget/components/ReportsConfigContext.d.ts +8 -0
  158. package/lib/cjs/widget/components/ReportsConfigContext.d.ts.map +1 -1
  159. package/lib/cjs/widget/components/ReportsConfigContext.js +20 -7
  160. package/lib/cjs/widget/components/ReportsConfigContext.js.map +1 -1
  161. package/lib/cjs/widget/components/ReportsContainer.d.ts +1 -1
  162. package/lib/cjs/widget/components/ReportsContainer.d.ts.map +1 -1
  163. package/lib/cjs/widget/components/ReportsContainer.js +7 -5
  164. package/lib/cjs/widget/components/ReportsContainer.js.map +1 -1
  165. package/lib/cjs/widget/components/ReportsContainer.scss +1 -1
  166. package/lib/cjs/widget/components/ReportsHeader.d.ts +1 -1
  167. package/lib/cjs/widget/components/ReportsHeader.d.ts.map +1 -1
  168. package/lib/cjs/widget/components/ReportsHeader.js +6 -7
  169. package/lib/cjs/widget/components/ReportsHeader.js.map +1 -1
  170. package/lib/cjs/widget/components/ReportsRouter.d.ts.map +1 -1
  171. package/lib/cjs/widget/components/ReportsRouter.js +3 -3
  172. package/lib/cjs/widget/components/ReportsRouter.js.map +1 -1
  173. package/lib/cjs/widget/components/SearchBar.d.ts +1 -1
  174. package/lib/cjs/widget/components/SearchBar.d.ts.map +1 -1
  175. package/lib/cjs/widget/components/SearchBar.js +9 -5
  176. package/lib/cjs/widget/components/SearchBar.js.map +1 -1
  177. package/lib/cjs/widget/components/SelectIModel.d.ts +1 -1
  178. package/lib/cjs/widget/components/SelectIModel.d.ts.map +1 -1
  179. package/lib/cjs/widget/components/SelectIModel.js +7 -3
  180. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  181. package/lib/cjs/widget/components/SelectIModel.scss +1 -1
  182. package/lib/cjs/widget/components/utils.d.ts +1 -1
  183. package/lib/cjs/widget/components/utils.d.ts.map +1 -1
  184. package/lib/cjs/widget/components/utils.js +5 -5
  185. package/lib/cjs/widget/components/utils.js.map +1 -1
  186. package/lib/cjs/widget/components/utils.scss +1 -1
  187. package/lib/cjs/widget/context/BulkExtractorContext.d.ts.map +1 -1
  188. package/lib/cjs/widget/context/BulkExtractorContext.js +5 -1
  189. package/lib/cjs/widget/context/BulkExtractorContext.js.map +1 -1
  190. package/lib/cjs/widget/context/ReportsConfigApiContext.d.ts.map +1 -1
  191. package/lib/cjs/widget/context/ReportsConfigApiContext.js +5 -1
  192. package/lib/cjs/widget/context/ReportsConfigApiContext.js.map +1 -1
  193. package/lib/cjs/widget/hooks/useValidator.d.ts +1 -4
  194. package/lib/cjs/widget/hooks/useValidator.d.ts.map +1 -1
  195. package/lib/cjs/widget/hooks/useValidator.js +3 -3
  196. package/lib/cjs/widget/hooks/useValidator.js.map +1 -1
  197. package/lib/esm/ReportsConfigWidget.d.ts +4 -0
  198. package/lib/esm/ReportsConfigWidget.d.ts.map +1 -1
  199. package/lib/esm/ReportsConfigWidget.js +4 -0
  200. package/lib/esm/ReportsConfigWidget.js.map +1 -1
  201. package/lib/esm/reports-config-widget-react.js +3 -3
  202. package/lib/esm/reports-config-widget-react.js.map +1 -1
  203. package/lib/esm/test/AddMappingModal.test.js +12 -64
  204. package/lib/esm/test/AddMappingModal.test.js.map +1 -1
  205. package/lib/esm/test/BulkExtractor.test.js +69 -44
  206. package/lib/esm/test/BulkExtractor.test.js.map +1 -1
  207. package/lib/esm/test/DeleteModal.test.js +4 -4
  208. package/lib/esm/test/DeleteModal.test.js.map +1 -1
  209. package/lib/esm/test/ReportAction.test.js +7 -5
  210. package/lib/esm/test/ReportAction.test.js.map +1 -1
  211. package/lib/esm/test/ReportMappingHorizontalTile.test.js +66 -80
  212. package/lib/esm/test/ReportMappingHorizontalTile.test.js.map +1 -1
  213. package/lib/esm/test/ReportMappings.test.js +42 -73
  214. package/lib/esm/test/ReportMappings.test.js.map +1 -1
  215. package/lib/esm/test/Reports.test.js +32 -51
  216. package/lib/esm/test/Reports.test.js.map +1 -1
  217. package/lib/esm/test/WidgetHeader.test.js +3 -3
  218. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  219. package/lib/esm/test/test-utils.d.ts +38 -0
  220. package/lib/esm/test/test-utils.d.ts.map +1 -1
  221. package/lib/esm/test/test-utils.js +73 -3
  222. package/lib/esm/test/test-utils.js.map +1 -1
  223. package/lib/esm/tsconfig.tsbuildinfo +1 -1
  224. package/lib/esm/widget/ReportsConfigUiProvider.d.ts +7 -0
  225. package/lib/esm/widget/ReportsConfigUiProvider.d.ts.map +1 -1
  226. package/lib/esm/widget/ReportsConfigUiProvider.js +9 -4
  227. package/lib/esm/widget/ReportsConfigUiProvider.js.map +1 -1
  228. package/lib/esm/widget/components/ActionPanel.d.ts.map +1 -1
  229. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  230. package/lib/esm/widget/components/AddMappingsModal.d.ts +1 -1
  231. package/lib/esm/widget/components/AddMappingsModal.d.ts.map +1 -1
  232. package/lib/esm/widget/components/AddMappingsModal.js +7 -7
  233. package/lib/esm/widget/components/AddMappingsModal.js.map +1 -1
  234. package/lib/esm/widget/components/AddMappingsModal.scss +1 -1
  235. package/lib/esm/widget/components/BulkExtractor.d.ts +7 -4
  236. package/lib/esm/widget/components/BulkExtractor.d.ts.map +1 -1
  237. package/lib/esm/widget/components/BulkExtractor.js +53 -36
  238. package/lib/esm/widget/components/BulkExtractor.js.map +1 -1
  239. package/lib/esm/widget/components/Constants.d.ts +1 -0
  240. package/lib/esm/widget/components/Constants.d.ts.map +1 -1
  241. package/lib/esm/widget/components/Constants.js +4 -3
  242. package/lib/esm/widget/components/Constants.js.map +1 -1
  243. package/lib/esm/widget/components/DeleteModal.d.ts +1 -1
  244. package/lib/esm/widget/components/DeleteModal.d.ts.map +1 -1
  245. package/lib/esm/widget/components/DeleteModal.js +6 -6
  246. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  247. package/lib/esm/widget/components/DeleteModal.scss +2 -2
  248. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.d.ts.map +1 -1
  249. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.js +3 -3
  250. package/lib/esm/widget/components/ExtractionStates/FailedExtractionState.js.map +1 -1
  251. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.d.ts.map +1 -1
  252. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.js +3 -3
  253. package/lib/esm/widget/components/ExtractionStates/QueuedExtractionState.js.map +1 -1
  254. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.d.ts.map +1 -1
  255. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js +3 -3
  256. package/lib/esm/widget/components/ExtractionStates/RunningExtractionState.js.map +1 -1
  257. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.d.ts.map +1 -1
  258. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.js +3 -3
  259. package/lib/esm/widget/components/ExtractionStates/StartingExtractionState.js.map +1 -1
  260. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.d.ts.map +1 -1
  261. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js +3 -3
  262. package/lib/esm/widget/components/ExtractionStates/SucceededExtractionState.js.map +1 -1
  263. package/lib/esm/widget/components/ExtractionStatus.d.ts +1 -1
  264. package/lib/esm/widget/components/ExtractionStatus.d.ts.map +1 -1
  265. package/lib/esm/widget/components/ExtractionStatus.js +9 -9
  266. package/lib/esm/widget/components/ExtractionStatus.js.map +1 -1
  267. package/lib/esm/widget/components/ExtractionStatus.scss +1 -1
  268. package/lib/esm/widget/components/ExtractionToast.d.ts.map +1 -1
  269. package/lib/esm/widget/components/ExtractionToast.js +3 -3
  270. package/lib/esm/widget/components/ExtractionToast.js.map +1 -1
  271. package/lib/esm/widget/components/HorizontalTile.d.ts.map +1 -1
  272. package/lib/esm/widget/components/HorizontalTile.js +1 -2
  273. package/lib/esm/widget/components/HorizontalTile.js.map +1 -1
  274. package/lib/esm/widget/components/HorizontalTile.scss +1 -4
  275. package/lib/esm/widget/components/LocalizedTablePaginator.d.ts.map +1 -1
  276. package/lib/esm/widget/components/LocalizedTablePaginator.js +1 -1
  277. package/lib/esm/widget/components/LocalizedTablePaginator.js.map +1 -1
  278. package/lib/esm/widget/components/ReportAction.d.ts +8 -0
  279. package/lib/esm/widget/components/ReportAction.d.ts.map +1 -1
  280. package/lib/esm/widget/components/ReportAction.js +10 -8
  281. package/lib/esm/widget/components/ReportAction.js.map +1 -1
  282. package/lib/esm/widget/components/ReportAction.scss +1 -1
  283. package/lib/esm/widget/components/ReportHorizontalTile.d.ts.map +1 -1
  284. package/lib/esm/widget/components/ReportHorizontalTile.js +6 -6
  285. package/lib/esm/widget/components/ReportHorizontalTile.js.map +1 -1
  286. package/lib/esm/widget/components/ReportMappingHorizontalTile.d.ts.map +1 -1
  287. package/lib/esm/widget/components/ReportMappingHorizontalTile.js +47 -46
  288. package/lib/esm/widget/components/ReportMappingHorizontalTile.js.map +1 -1
  289. package/lib/esm/widget/components/ReportMappings.d.ts +8 -0
  290. package/lib/esm/widget/components/ReportMappings.d.ts.map +1 -1
  291. package/lib/esm/widget/components/ReportMappings.js +28 -14
  292. package/lib/esm/widget/components/ReportMappings.js.map +1 -1
  293. package/lib/esm/widget/components/Reports.d.ts +9 -1
  294. package/lib/esm/widget/components/Reports.d.ts.map +1 -1
  295. package/lib/esm/widget/components/Reports.js +8 -9
  296. package/lib/esm/widget/components/Reports.js.map +1 -1
  297. package/lib/esm/widget/components/Reports.scss +0 -1
  298. package/lib/esm/widget/components/ReportsConfigContext.d.ts +8 -0
  299. package/lib/esm/widget/components/ReportsConfigContext.d.ts.map +1 -1
  300. package/lib/esm/widget/components/ReportsConfigContext.js +17 -8
  301. package/lib/esm/widget/components/ReportsConfigContext.js.map +1 -1
  302. package/lib/esm/widget/components/ReportsContainer.d.ts +1 -1
  303. package/lib/esm/widget/components/ReportsContainer.d.ts.map +1 -1
  304. package/lib/esm/widget/components/ReportsContainer.js +2 -4
  305. package/lib/esm/widget/components/ReportsContainer.js.map +1 -1
  306. package/lib/esm/widget/components/ReportsContainer.scss +1 -1
  307. package/lib/esm/widget/components/ReportsHeader.d.ts +1 -1
  308. package/lib/esm/widget/components/ReportsHeader.d.ts.map +1 -1
  309. package/lib/esm/widget/components/ReportsHeader.js +6 -7
  310. package/lib/esm/widget/components/ReportsHeader.js.map +1 -1
  311. package/lib/esm/widget/components/ReportsRouter.d.ts.map +1 -1
  312. package/lib/esm/widget/components/ReportsRouter.js +3 -3
  313. package/lib/esm/widget/components/ReportsRouter.js.map +1 -1
  314. package/lib/esm/widget/components/SearchBar.d.ts +1 -1
  315. package/lib/esm/widget/components/SearchBar.d.ts.map +1 -1
  316. package/lib/esm/widget/components/SearchBar.js +4 -4
  317. package/lib/esm/widget/components/SearchBar.js.map +1 -1
  318. package/lib/esm/widget/components/SelectIModel.d.ts +1 -1
  319. package/lib/esm/widget/components/SelectIModel.d.ts.map +1 -1
  320. package/lib/esm/widget/components/SelectIModel.js +3 -3
  321. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  322. package/lib/esm/widget/components/SelectIModel.scss +1 -1
  323. package/lib/esm/widget/components/utils.d.ts +1 -1
  324. package/lib/esm/widget/components/utils.d.ts.map +1 -1
  325. package/lib/esm/widget/components/utils.js +6 -6
  326. package/lib/esm/widget/components/utils.js.map +1 -1
  327. package/lib/esm/widget/components/utils.scss +1 -1
  328. package/lib/esm/widget/context/BulkExtractorContext.d.ts.map +1 -1
  329. package/lib/esm/widget/context/BulkExtractorContext.js.map +1 -1
  330. package/lib/esm/widget/context/ReportsConfigApiContext.d.ts.map +1 -1
  331. package/lib/esm/widget/context/ReportsConfigApiContext.js.map +1 -1
  332. package/lib/esm/widget/hooks/useValidator.d.ts +1 -4
  333. package/lib/esm/widget/hooks/useValidator.d.ts.map +1 -1
  334. package/lib/esm/widget/hooks/useValidator.js +3 -3
  335. package/lib/esm/widget/hooks/useValidator.js.map +1 -1
  336. package/package.json +37 -31
  337. package/src/ReportsConfigWidget.ts +9 -9
  338. package/src/reports-config-widget-react.ts +3 -3
  339. package/src/test/AddMappingModal.test.tsx +47 -122
  340. package/src/test/BulkExtractor.test.ts +73 -118
  341. package/src/test/DeleteModal.test.tsx +6 -23
  342. package/src/test/ReportAction.test.tsx +20 -38
  343. package/src/test/ReportMappingHorizontalTile.test.tsx +140 -161
  344. package/src/test/ReportMappings.test.tsx +80 -146
  345. package/src/test/Reports.test.tsx +57 -169
  346. package/src/test/WidgetHeader.test.tsx +3 -3
  347. package/src/test/test-utils.tsx +80 -9
  348. package/src/widget/ReportsConfigUiProvider.tsx +16 -30
  349. package/src/widget/components/ActionPanel.tsx +3 -14
  350. package/src/widget/components/AddMappingsModal.scss +1 -1
  351. package/src/widget/components/AddMappingsModal.tsx +19 -51
  352. package/src/widget/components/BulkExtractor.ts +63 -54
  353. package/src/widget/components/Constants.ts +5 -3
  354. package/src/widget/components/DeleteModal.scss +2 -2
  355. package/src/widget/components/DeleteModal.tsx +11 -41
  356. package/src/widget/components/ExtractionStates/FailedExtractionState.tsx +4 -9
  357. package/src/widget/components/ExtractionStates/QueuedExtractionState.tsx +4 -9
  358. package/src/widget/components/ExtractionStates/RunningExtractionState.tsx +4 -9
  359. package/src/widget/components/ExtractionStates/StartingExtractionState.tsx +4 -11
  360. package/src/widget/components/ExtractionStates/SucceededExtractionState.tsx +4 -9
  361. package/src/widget/components/ExtractionStatus.scss +1 -1
  362. package/src/widget/components/ExtractionStatus.tsx +9 -18
  363. package/src/widget/components/ExtractionToast.tsx +12 -9
  364. package/src/widget/components/HorizontalTile.scss +1 -4
  365. package/src/widget/components/HorizontalTile.tsx +12 -33
  366. package/src/widget/components/LocalizedTablePaginator.tsx +13 -44
  367. package/src/widget/components/ReportAction.scss +1 -1
  368. package/src/widget/components/ReportAction.tsx +26 -39
  369. package/src/widget/components/ReportHorizontalTile.tsx +45 -55
  370. package/src/widget/components/ReportMappingHorizontalTile.tsx +70 -78
  371. package/src/widget/components/ReportMappings.tsx +59 -130
  372. package/src/widget/components/Reports.scss +0 -1
  373. package/src/widget/components/Reports.tsx +28 -82
  374. package/src/widget/components/ReportsConfigContext.tsx +32 -26
  375. package/src/widget/components/ReportsContainer.scss +1 -1
  376. package/src/widget/components/ReportsContainer.tsx +8 -21
  377. package/src/widget/components/ReportsHeader.tsx +6 -19
  378. package/src/widget/components/ReportsRouter.tsx +4 -6
  379. package/src/widget/components/SearchBar.tsx +9 -13
  380. package/src/widget/components/SelectIModel.scss +1 -1
  381. package/src/widget/components/SelectIModel.tsx +10 -25
  382. package/src/widget/components/utils.scss +1 -1
  383. package/src/widget/components/utils.tsx +21 -69
  384. package/src/widget/context/BulkExtractorContext.tsx +4 -6
  385. package/src/widget/context/ReportsConfigApiContext.tsx +4 -6
  386. package/src/widget/hooks/useValidator.ts +10 -24
  387. package/tsconfig.json +11 -11
  388. package/.rush/temp/operation/rebuild/all.log +0 -9
  389. package/.rush/temp/operation/rebuild/state.json +0 -3
  390. package/.rush/temp/package-deps_rebuild.json +0 -68
  391. package/.rush/temp/shrinkwrap-deps.json +0 -898
  392. package/reports-config-widget-react.build.error.log +0 -14
  393. package/reports-config-widget-react.build.log +0 -63
@@ -1,12 +1,12 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import { BulkExtractor } from "../widget/components/BulkExtractor";
6
6
  import { ExtractionStates } from "../widget/components/ExtractionStatus";
7
7
  import { assert } from "chai";
8
8
  import * as moq from "typemoq";
9
- import { ExtractionClient, ExtractorState, ReportsClient } from "@itwin/insights-client";
9
+ import { ExtractionClient, ExtractionState, ReportsClient } from "@itwin/insights-client";
10
10
  jest.mock("../widget/components/Constants.ts", () => ({
11
11
  STATUS_CHECK_INTERVAL: -1,
12
12
  }));
@@ -38,6 +38,16 @@ const mockIModelId1 = "mockIModelId1";
38
38
  const mockReportId = "mockReportId";
39
39
  const mockRunId = "mockRunId";
40
40
  const mockRunId1 = "mockRunId1";
41
+ const mockMappingId = "mockMappingId";
42
+ const mockMappingId1 = "mockMappingId1";
43
+ const mockExtractionRequest = {
44
+ mappings: [{ id: mockMappingId }],
45
+ iModelId: mockIModelId,
46
+ };
47
+ const mockExtractionRequest1 = {
48
+ mappings: [{ id: mockMappingId1 }],
49
+ iModelId: mockIModelId1,
50
+ };
41
51
  describe("BulkExtractor", () => {
42
52
  it("should return status none for unknown iModel", async () => {
43
53
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
@@ -45,28 +55,28 @@ describe("BulkExtractor", () => {
45
55
  assert.strictEqual(result, ExtractionStates.None);
46
56
  });
47
57
  it("should return running status for started extraction", async () => {
48
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
49
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
58
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
59
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
50
60
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
51
- await sut.runIModelExtraction(mockIModelId);
61
+ await sut.runIModelExtraction(mockExtractionRequest);
52
62
  const result = await sut.getIModelState(mockIModelId, "", "");
53
63
  assert.strictEqual(result, ExtractionStates.Running);
54
64
  });
55
65
  it("should return failed status for failed extraction", async () => {
56
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
57
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Failed }));
66
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
67
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Failed }));
58
68
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
59
- await sut.runIModelExtraction(mockIModelId);
69
+ await sut.runIModelExtraction(mockExtractionRequest);
60
70
  const result = await sut.getIModelState(mockIModelId, "", "");
61
71
  assert.strictEqual(result, ExtractionStates.Failed);
62
72
  });
63
73
  it("full status check cycle", async () => {
64
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
65
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Queued }));
66
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
67
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Succeeded }));
74
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
75
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));
76
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
77
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));
68
78
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
69
- await sut.runIModelExtraction(mockIModelId);
79
+ await sut.runIModelExtraction(mockExtractionRequest);
70
80
  let result = await sut.getIModelState(mockIModelId, "", "");
71
81
  assert.strictEqual(result, ExtractionStates.Queued);
72
82
  result = await sut.getIModelState(mockIModelId, "", "");
@@ -75,13 +85,13 @@ describe("BulkExtractor", () => {
75
85
  assert.strictEqual(result, ExtractionStates.Succeeded);
76
86
  });
77
87
  it("two started jobs should return status", async () => {
78
- const mockIModelIds = [mockIModelId, mockIModelId1];
79
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
80
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(async () => ({ id: mockRunId1 }));
81
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Queued }));
82
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractorState.Queued }));
88
+ const mockExtractionRequests = [mockExtractionRequest, mockExtractionRequest1];
89
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
90
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));
91
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));
92
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Queued }));
83
93
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
84
- await sut.runIModelExtractions(mockIModelIds);
94
+ await sut.runIModelExtractions(mockExtractionRequests);
85
95
  const result1 = await sut.getIModelState(mockIModelId, "", "");
86
96
  const result2 = await sut.getIModelState(mockIModelId1, "", "");
87
97
  assert.strictEqual(result1, ExtractionStates.Queued);
@@ -93,20 +103,25 @@ describe("BulkExtractor", () => {
93
103
  assert.strictEqual(result, ExtractionStates.None);
94
104
  });
95
105
  it("should return status running for running report", async () => {
96
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
97
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
98
- mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => ([{ imodelId: mockIModelId }]));
106
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
107
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
108
+ mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => [{ imodelId: mockIModelId, mappingId: mockMappingId }]);
99
109
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
100
110
  await sut.runReportExtractions([mockReportId]);
101
111
  const result = await sut.getReportState(mockReportId);
102
112
  assert.strictEqual(result, ExtractionStates.Running);
103
113
  });
104
114
  it("should return status running for both iModels in report", async () => {
105
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
106
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(async () => ({ id: mockRunId1 }));
107
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
108
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractorState.Running }));
109
- mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }]));
115
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
116
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));
117
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
118
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Running }));
119
+ mockGetReportMappings
120
+ .setup(async (x) => x(moq.It.isAny(), mockReportId))
121
+ .returns(async () => [
122
+ { imodelId: mockIModelId, mappingId: mockMappingId },
123
+ { imodelId: mockIModelId1, mappingId: mockMappingId1 },
124
+ ]);
110
125
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
111
126
  await sut.runReportExtractions([mockReportId]);
112
127
  const result1 = await sut.getIModelState(mockIModelId, "", "");
@@ -115,33 +130,43 @@ describe("BulkExtractor", () => {
115
130
  assert.strictEqual(result2, ExtractionStates.Running);
116
131
  });
117
132
  it("should return lowest progress status for extractions in report", async () => {
118
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
119
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(async () => ({ id: mockRunId1 }));
120
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
121
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractorState.Queued }));
122
- mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => ([{ imodelId: mockIModelId }, { imodelId: mockIModelId1 }]));
133
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
134
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));
135
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
136
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Queued }));
137
+ mockGetReportMappings
138
+ .setup(async (x) => x(moq.It.isAny(), mockReportId))
139
+ .returns(async () => [
140
+ { imodelId: mockIModelId, mappingId: mockMappingId },
141
+ { imodelId: mockIModelId1, mappingId: mockMappingId1 },
142
+ ]);
123
143
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
124
144
  await sut.runReportExtractions([mockReportId]);
125
145
  const result = await sut.getReportState(mockReportId);
126
146
  assert.strictEqual(result, ExtractionStates.Queued);
127
147
  });
128
148
  it("should return status failed if one of the extractions in report failed", async () => {
129
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
130
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId1)).returns(async () => ({ id: mockRunId1 }));
131
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Succeeded }));
132
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractorState.Failed }));
133
- mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => ([{ imodelId: mockIModelId1 }, { imodelId: mockIModelId1 }]));
149
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
150
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));
151
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));
152
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Failed }));
153
+ mockGetReportMappings
154
+ .setup(async (x) => x(moq.It.isAny(), mockReportId))
155
+ .returns(async () => [
156
+ { imodelId: mockIModelId, mappingId: mockMappingId },
157
+ { imodelId: mockIModelId1, mappingId: mockMappingId1 },
158
+ ]);
134
159
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
135
160
  await sut.runReportExtractions([mockReportId]);
136
161
  const result = await sut.getReportState(mockReportId);
137
162
  assert.strictEqual(result, ExtractionStates.Failed);
138
163
  });
139
164
  it("full report extraction status check cycle", async () => {
140
- mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockIModelId)).returns(async () => ({ id: mockRunId }));
141
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Queued }));
142
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Running }));
143
- mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractorState.Succeeded }));
144
- mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => ([{ imodelId: mockIModelId }]));
165
+ mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));
166
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));
167
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));
168
+ mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));
169
+ mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => [{ imodelId: mockIModelId, mappingId: mockMappingId }]);
145
170
  const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);
146
171
  await sut.runReportExtractions([mockReportId]);
147
172
  let result = await sut.getReportState(mockReportId);
@@ -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, ExtractionState, ReportsClient } from \"@itwin/insights-client\";\nimport type { AccessToken } from \"@itwin/core-bentley\";\nimport type { ExtractionRequestDetails } from \"@itwin/insights-client\";\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, extractionRequest: ExtractionRequestDetails) => Promise<{ id: string }>>();\nconst mockGetStatus = moq.Mock.ofType<(accessToken: AccessToken, jobId: string) => Promise<{ state: ExtractionState }>>();\nconst mockGetReportMappings = moq.Mock.ofType<(accessToken: AccessToken, reportId: string) => Promise<{ imodelId: string; mappingId: 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\";\nconst mockMappingId = \"mockMappingId\";\nconst mockMappingId1 = \"mockMappingId1\";\nconst mockExtractionRequest = {\n mappings: [{ id: mockMappingId }],\n iModelId: mockIModelId,\n};\nconst mockExtractionRequest1 = {\n mappings: [{ id: mockMappingId1 }],\n iModelId: mockIModelId1,\n};\n\ndescribe(\"BulkExtractor\", () => {\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockExtractionRequest);\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Failed }));\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockExtractionRequest);\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n await sut.runIModelExtraction(mockExtractionRequest);\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 mockExtractionRequests = [mockExtractionRequest, mockExtractionRequest1];\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Queued }));\n\n const sut = new BulkExtractor(new ReportsClient(), new ExtractionClient(), mockGetAccessToken, mockToastCallback, mockToastCallback);\n\n await sut.runIModelExtractions(mockExtractionRequests);\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => [{ imodelId: mockIModelId, mappingId: mockMappingId }]);\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetReportMappings\n .setup(async (x) => x(moq.It.isAny(), mockReportId))\n .returns(async () => [\n { imodelId: mockIModelId, mappingId: mockMappingId },\n { imodelId: mockIModelId1, mappingId: mockMappingId1 },\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Queued }));\n\n mockGetReportMappings\n .setup(async (x) => x(moq.It.isAny(), mockReportId))\n .returns(async () => [\n { imodelId: mockIModelId, mappingId: mockMappingId },\n { imodelId: mockIModelId1, mappingId: mockMappingId1 },\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockRunExtraction.setup(async (x) => x(moq.It.isAny(), mockExtractionRequest1)).returns(async () => ({ id: mockRunId1 }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId1)).returns(async () => ({ state: ExtractionState.Failed }));\n\n mockGetReportMappings\n .setup(async (x) => x(moq.It.isAny(), mockReportId))\n .returns(async () => [\n { imodelId: mockIModelId, mappingId: mockMappingId },\n { imodelId: mockIModelId1, mappingId: mockMappingId1 },\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(), mockExtractionRequest)).returns(async () => ({ id: mockRunId }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Queued }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Running }));\n\n mockGetStatus.setup(async (x) => x(moq.It.isAny(), mockRunId)).returns(async () => ({ state: ExtractionState.Succeeded }));\n\n mockGetReportMappings.setup(async (x) => x(moq.It.isAny(), mockReportId)).returns(async () => [{ imodelId: mockIModelId, mappingId: mockMappingId }]);\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,10 +1,10 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import React from "react";
6
6
  import "@testing-library/jest-dom";
7
- import { render, screen, } from "./test-utils";
7
+ import { render, screen } from "./test-utils";
8
8
  import DeleteModal from "../widget/components/DeleteModal";
9
9
  import { ReportsConfigWidget } from "../ReportsConfigWidget";
10
10
  import { EmptyLocalization } from "@itwin/core-common";
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteModal.test.js","sourceRoot":"","sources":["../../../src/test/DeleteModal.test.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,2BAA2B,CAAC;AACnC,OAAO,EACL,MAAM,EACN,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC7C,MAAM,mBAAmB,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,MAAM,CAC1B,oBAAC,WAAW,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,MAAM,CACrB,oBAAC,WAAW,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,MAAM,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"]}
1
+ {"version":3,"file":"DeleteModal.test.js","sourceRoot":"","sources":["../../../src/test/DeleteModal.test.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,WAAW,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC7C,MAAM,mBAAmB,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,MAAM,CAAC,oBAAC,WAAW,IAAC,UAAU,EAAC,MAAM,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,GAAI,CAAC,CAAC;QAC7H,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,MAAM,CAAC,oBAAC,WAAW,IAAC,UAAU,EAAC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,GAAI,CAAC,CAAC;QACvH,MAAM,YAAY,GAAG,MAAM,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 { render, screen } 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(<DeleteModal entityName=\"test\" onDelete={jest.fn()} refresh={jest.fn()} onClose={jest.fn()} />);\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(<DeleteModal entityName=\"test\" onDelete={onDelete} refresh={jest.fn()} onClose={jest.fn()} />);\n const deleteButton = screen.getByRole(\"button\", {\n name: /delete/i,\n });\n await user.click(deleteButton);\n expect(onDelete).toHaveBeenCalled();\n });\n});\n"]}
@@ -1,12 +1,12 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import React from "react";
6
6
  import faker from "@faker-js/faker";
7
7
  import "@testing-library/jest-dom";
8
8
  import { ReportsConfigWidget } from "../ReportsConfigWidget";
9
- import { render, screen, waitForElementToBeRemoved, } from "./test-utils";
9
+ import { render, screen, waitForElementToBeRemoved } from "./test-utils";
10
10
  import { ReportAction } from "../widget/components/ReportAction";
11
11
  import userEvent from "@testing-library/user-event";
12
12
  import { EmptyLocalization } from "@itwin/core-common";
@@ -42,7 +42,9 @@ describe("Reports Action", () => {
42
42
  },
43
43
  };
44
44
  const reportsClient = new ReportsClient();
45
- jest.spyOn(reportsClient, "createReport").mockImplementation(async () => new Promise((resolve) => setTimeout(() => { resolve(mockReport); }, 100)));
45
+ jest.spyOn(reportsClient, "createReport").mockImplementation(async () => new Promise((resolve) => setTimeout(() => {
46
+ resolve(mockReport);
47
+ }, 100)));
46
48
  const { user } = render(React.createElement(ReportAction, { onClickCancel: jest.fn(), onSaveSuccess: mockReturnFn }), { reportsClient });
47
49
  const addButton = screen.getByRole("button", {
48
50
  name: /add/i,
@@ -1 +1 @@
1
- {"version":3,"file":"ReportAction.test.js","sourceRoot":"","sources":["../../../src/test/ReportAction.test.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,MAAM,EACN,MAAM,EACN,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC7C,MAAM,mBAAmB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,MAAM,CAAC,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,CAAC,CAAC;QAEhF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9C,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAW;YACzB,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;YACzB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,KAAK;YACd,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,IAAI,EAAE,EAAE;iBACT;aACF;SACF,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CACtE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAC1E,CAAC;QAEF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CACrB,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAE9F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC9C,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YACnD,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAC3D,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE5B,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,CAAC,YAAY,CAAC,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QAEjC,MAAM,yBAAyB,CAAC,GAAG,EAAE,CACnC,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CACxC,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CACrB,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,CACxE,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,CACJ,MAAM,CAAC,SAAS,CAAC,oCAAoC,CAAC,CACvD,CAAC,iBAAiB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CACrB,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,CACxE,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,CACJ,MAAM,CAAC,SAAS,CAAC,+CAA+C,CAAC,CAClE,CAAC,iBAAiB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CACrB,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,CACxE,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,CACJ,MAAM,CAAC,SAAS,CACd,0DAA0D,CAC3D,CACF,CAAC,iBAAiB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CACrB,oBAAC,YAAY,IAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAI,CACxE,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC5C,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACzE,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 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 { render, screen, waitForElementToBeRemoved } 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(\n async () =>\n new Promise((resolve) =>\n setTimeout(() => {\n resolve(mockReport);\n }, 100),\n ),\n );\n\n const { user } = render(<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(() => screen.getByTestId(/loading\\-spinner/i));\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(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\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(screen.getByText(/validators\\.noduplicateunderscore/i)).toBeInTheDocument();\n });\n\n it(\"Only begin with letters or underscores of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\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(screen.getByText(/validators\\.onlybeginswithletterorunderscore/i)).toBeInTheDocument();\n });\n\n it(\"Only letters underscores and digits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\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(screen.getByText(/validators\\.FollowedByLettersUnderscoresSpacesAndDigits/i)).toBeInTheDocument();\n });\n\n it(\"check for character limits of name\", async () => {\n const mockReturnFn = jest.fn();\n\n const { user } = render(<ReportAction onClickCancel={jest.fn()} onSaveSuccess={mockReturnFn} />);\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"]}