@truedat/dq 7.5.9 → 7.5.10

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 (350) hide show
  1. package/package.json +41 -71
  2. package/src/components/ConceptRules.js +1 -2
  3. package/src/components/ConditionCell.js +17 -16
  4. package/src/components/ConditionSummary.js +1 -1
  5. package/src/components/EditRule.js +0 -1
  6. package/src/components/ExecutionForm.js +2 -4
  7. package/src/components/ExecutionGroup.js +0 -1
  8. package/src/components/ExecutionGroupBreadcrumbs.js +1 -2
  9. package/src/components/ExecutionGroupContent.js +3 -3
  10. package/src/components/ExecutionGroupLink.js +1 -2
  11. package/src/components/ExecutionGroupLoader.js +1 -1
  12. package/src/components/ExecutionGroupMessage.js +0 -1
  13. package/src/components/ExecutionGroups.js +1 -2
  14. package/src/components/ExecutionGroupsTable.js +0 -1
  15. package/src/components/ExecutionPopup.js +1 -1
  16. package/src/components/FieldSummary.js +1 -2
  17. package/src/components/ImplementationActions.js +1 -2
  18. package/src/components/ImplementationCrumbs.js +2 -3
  19. package/src/components/ImplementationExecutionFilters.js +2 -2
  20. package/src/components/ImplementationExecutions.js +2 -2
  21. package/src/components/ImplementationResultBar.js +14 -15
  22. package/src/components/ImplementationSearchResults.js +6 -4
  23. package/src/components/ImplementationStructureDelete.js +0 -1
  24. package/src/components/ImplementationStructureLink.js +1 -2
  25. package/src/components/ImplementationStructureLinksActions.js +1 -2
  26. package/src/components/ImplementationStructures.js +2 -2
  27. package/src/components/ImplementationStructuresNew.js +3 -4
  28. package/src/components/ImplementationSummary.js +3 -7
  29. package/src/components/Implementations.js +3 -3
  30. package/src/components/ImplementationsHeader.js +4 -5
  31. package/src/components/ImplementationsRoutes.js +379 -322
  32. package/src/components/ImplementationsUploadButton.js +0 -1
  33. package/src/components/InformationSummary.js +0 -1
  34. package/src/components/JoinTypeIcon.js +8 -9
  35. package/src/components/MoveImplementation.js +0 -1
  36. package/src/components/NewBasicRuleImplementation.js +4 -4
  37. package/src/components/NewRemediation.js +1 -1
  38. package/src/components/NewRule.js +1 -2
  39. package/src/components/NewRuleImplementation.js +4 -4
  40. package/src/components/QualityEventError.js +4 -9
  41. package/src/components/QualityRoutes.js +52 -26
  42. package/src/components/RawContent.js +0 -1
  43. package/src/components/RemediationCrumbs.js +2 -2
  44. package/src/components/RemediationForm.js +4 -4
  45. package/src/components/RemediationPlan.js +4 -5
  46. package/src/components/Rule.js +0 -1
  47. package/src/components/RuleActions.js +2 -3
  48. package/src/components/RuleCrumbs.js +2 -3
  49. package/src/components/RuleEventDecorator.js +0 -1
  50. package/src/components/RuleEventRow.js +0 -1
  51. package/src/components/RuleEvents.js +0 -1
  52. package/src/components/RuleForm.js +11 -21
  53. package/src/components/RuleFormImplementations.js +0 -1
  54. package/src/components/RuleImplementation.js +0 -1
  55. package/src/components/RuleImplementationActions.js +2 -2
  56. package/src/components/RuleImplementationEventRow.js +0 -1
  57. package/src/components/RuleImplementationEvents.js +0 -1
  58. package/src/components/RuleImplementationHistory.js +1 -2
  59. package/src/components/RuleImplementationHistoryRow.js +1 -2
  60. package/src/components/RuleImplementationLink.js +1 -2
  61. package/src/components/RuleImplementationLoader.js +2 -2
  62. package/src/components/RuleImplementationProperties.js +3 -4
  63. package/src/components/RuleImplementationResultTabs.js +7 -11
  64. package/src/components/RuleImplementationResults.js +2 -3
  65. package/src/components/RuleImplementationResultsLink.js +1 -2
  66. package/src/components/RuleImplementationRow.js +0 -1
  67. package/src/components/RuleImplementationTabs.js +24 -21
  68. package/src/components/RuleImplementationsActions.js +1 -2
  69. package/src/components/RuleImplementationsDownload.js +0 -1
  70. package/src/components/RuleImplementationsFromRuleLoader.js +2 -2
  71. package/src/components/RuleImplementationsLabelResults.js +5 -6
  72. package/src/components/RuleImplementationsOptions.js +1 -2
  73. package/src/components/RuleImplementationsSearch.js +0 -1
  74. package/src/components/RuleImplementationsTable.js +1 -1
  75. package/src/components/RuleLink.js +1 -2
  76. package/src/components/RuleLoader.js +2 -2
  77. package/src/components/RuleProperties.js +4 -6
  78. package/src/components/RuleResult.js +0 -1
  79. package/src/components/RuleResultDecorator.js +5 -6
  80. package/src/components/RuleResultDetails.js +0 -4
  81. package/src/components/RuleResultRemediationLoader.js +1 -1
  82. package/src/components/RuleResultRemediations.js +0 -1
  83. package/src/components/RuleResultRow.js +1 -2
  84. package/src/components/RuleResultSegmentRow.js +0 -1
  85. package/src/components/RuleResultSegments.js +0 -1
  86. package/src/components/RuleResultSegmentsLoader.js +1 -1
  87. package/src/components/RuleResultsRoutes.js +41 -41
  88. package/src/components/RuleResultsTable.js +0 -1
  89. package/src/components/RuleResultsUpload.js +0 -1
  90. package/src/components/RuleRoutes.js +72 -67
  91. package/src/components/RuleRow.js +1 -2
  92. package/src/components/RuleSelectionForm.js +0 -1
  93. package/src/components/RuleSelector.js +0 -1
  94. package/src/components/RuleSubscriptionLoader.js +1 -1
  95. package/src/components/RuleSummary.js +1 -1
  96. package/src/components/RuleTabs.js +8 -7
  97. package/src/components/Rules.js +2 -2
  98. package/src/components/RulesActions.js +1 -2
  99. package/src/components/RulesLabelResults.js +2 -3
  100. package/src/components/RulesRoutes.js +32 -21
  101. package/src/components/RulesSearch.js +0 -1
  102. package/src/components/RulesUploadButton.js +0 -1
  103. package/src/components/Subscription.js +3 -3
  104. package/src/components/TaxonomySummary.js +0 -1
  105. package/src/components/__tests__/ConceptRules.spec.js +0 -1
  106. package/src/components/__tests__/ConceptRulesLoader.spec.js +19 -22
  107. package/src/components/__tests__/ConditionSummary.spec.js +0 -1
  108. package/src/components/__tests__/EditRule.spec.js +10 -7
  109. package/src/components/__tests__/ExecutionForm.spec.js +5 -14
  110. package/src/components/__tests__/ExecutionGroup.spec.js +18 -11
  111. package/src/components/__tests__/ExecutionGroupBreadcrumbs.spec.js +0 -1
  112. package/src/components/__tests__/ExecutionGroupContent.spec.js +0 -2
  113. package/src/components/__tests__/ExecutionGroupLink.spec.js +0 -1
  114. package/src/components/__tests__/ExecutionGroupLoader.spec.js +18 -18
  115. package/src/components/__tests__/ExecutionGroupMessage.spec.js +9 -13
  116. package/src/components/__tests__/ExecutionGroups.spec.js +0 -1
  117. package/src/components/__tests__/ExecutionGroupsTable.spec.js +0 -1
  118. package/src/components/__tests__/ExecutionPopup.spec.js +0 -1
  119. package/src/components/__tests__/ImplementationActions.spec.js +0 -1
  120. package/src/components/__tests__/ImplementationExecutionFilters.spec.js +2 -3
  121. package/src/components/__tests__/ImplementationExecutions.spec.js +2 -3
  122. package/src/components/__tests__/ImplementationResultBar.spec.js +44 -27
  123. package/src/components/__tests__/ImplementationSearchResults.spec.js +13 -22
  124. package/src/components/__tests__/ImplementationStructureDelete.spec.js +0 -1
  125. package/src/components/__tests__/ImplementationStructureLink.spec.js +0 -1
  126. package/src/components/__tests__/ImplementationStructures.spec.js +1 -2
  127. package/src/components/__tests__/ImplementationStructuresNew.spec.js +43 -23
  128. package/src/components/__tests__/ImplementationSummary.spec.js +65 -37
  129. package/src/components/__tests__/Implementations.spec.js +4 -10
  130. package/src/components/__tests__/ImplementationsRoutes.spec.js +133 -0
  131. package/src/components/__tests__/ImplementationsUploadButton.spec.js +51 -32
  132. package/src/components/__tests__/InformationSummary.spec.js +0 -1
  133. package/src/components/__tests__/MoveImplementation.spec.js +0 -1
  134. package/src/components/__tests__/NewBasicRuleImplementation.spec.js +19 -23
  135. package/src/components/__tests__/NewRule.spec.js +23 -14
  136. package/src/components/__tests__/NewRuleImplementation.spec.js +101 -101
  137. package/src/components/__tests__/QualityEventError.spec.js +4 -4
  138. package/src/components/__tests__/QualityRoutes.spec.js +86 -0
  139. package/src/components/__tests__/RawContent.spec.js +0 -1
  140. package/src/components/__tests__/RemediationForm.spec.js +0 -2
  141. package/src/components/__tests__/RemediationPlan.spec.js +23 -29
  142. package/src/components/__tests__/Rule.spec.js +19 -5
  143. package/src/components/__tests__/RuleActions.spec.js +11 -8
  144. package/src/components/__tests__/RuleCrumbs.spec.js +12 -11
  145. package/src/components/__tests__/RuleEventDecorator.spec.js +0 -1
  146. package/src/components/__tests__/RuleEventRow.spec.js +0 -1
  147. package/src/components/__tests__/RuleEvents.spec.js +0 -1
  148. package/src/components/__tests__/RuleForm.spec.js +30 -73
  149. package/src/components/__tests__/RuleFormImplementations.spec.js +15 -16
  150. package/src/components/__tests__/RuleImplementation.spec.js +23 -30
  151. package/src/components/__tests__/RuleImplementationEvents.spec.js +0 -1
  152. package/src/components/__tests__/RuleImplementationHistory.spec.js +7 -22
  153. package/src/components/__tests__/RuleImplementationLoader.spec.js +2 -3
  154. package/src/components/__tests__/RuleImplementationProperties.spec.js +56 -82
  155. package/src/components/__tests__/RuleImplementationResultTabs.spec.js +5 -17
  156. package/src/components/__tests__/RuleImplementationResults.spec.js +2 -3
  157. package/src/components/__tests__/RuleImplementationResultsLink.spec.js +5 -5
  158. package/src/components/__tests__/RuleImplementationTabs.spec.js +0 -1
  159. package/src/components/__tests__/RuleImplementationsActions.spec.js +58 -35
  160. package/src/components/__tests__/RuleImplementationsFromRuleLoader.spec.js +34 -24
  161. package/src/components/__tests__/RuleImplementationsLoader.spec.js +22 -14
  162. package/src/components/__tests__/RuleImplementationsOptions.spec.js +0 -1
  163. package/src/components/__tests__/RuleImplementationsSearch.spec.js +14 -23
  164. package/src/components/__tests__/RuleImplementationsTable.spec.js +30 -56
  165. package/src/components/__tests__/RuleProperties.spec.js +4 -10
  166. package/src/components/__tests__/RuleResult.spec.js +10 -22
  167. package/src/components/__tests__/RuleResultDecorator.spec.js +36 -26
  168. package/src/components/__tests__/RuleResultDetails.spec.js +24 -57
  169. package/src/components/__tests__/RuleResultRemediationLoader.spec.js +15 -14
  170. package/src/components/__tests__/RuleResultRemediations.spec.js +2 -3
  171. package/src/components/__tests__/RuleResultRoutes.spec.js +83 -59
  172. package/src/components/__tests__/RuleResultRow.spec.js +0 -1
  173. package/src/components/__tests__/RuleResultSegmentRow.spec.js +46 -83
  174. package/src/components/__tests__/RuleResultSegments.spec.js +5 -10
  175. package/src/components/__tests__/RuleResultSegmentsLoader.spec.js +15 -14
  176. package/src/components/__tests__/RuleResultsUpload.spec.js +0 -1
  177. package/src/components/__tests__/RuleRoutes.spec.js +90 -14
  178. package/src/components/__tests__/RuleRow.spec.js +0 -2
  179. package/src/components/__tests__/RuleSearch.spec.js +10 -15
  180. package/src/components/__tests__/RuleSelectionForm.spec.js +0 -1
  181. package/src/components/__tests__/RuleSubscriptionLoader.spec.js +19 -18
  182. package/src/components/__tests__/RuleSummary.spec.js +0 -1
  183. package/src/components/__tests__/Rules.spec.js +58 -24
  184. package/src/components/__tests__/RulesActions.spec.js +17 -13
  185. package/src/components/__tests__/RulesLoader.spec.js +9 -9
  186. package/src/components/__tests__/RulesRoutes.spec.js +51 -0
  187. package/src/components/__tests__/RulesUploadButton.spec.js +0 -1
  188. package/src/components/__tests__/Subscription.spec.js +18 -19
  189. package/src/components/__tests__/TaxonomySummary.spec.js +0 -1
  190. package/src/components/__tests__/__snapshots__/ConceptRules.spec.js.snap +3 -0
  191. package/src/components/__tests__/__snapshots__/ConditionSummary.spec.js.snap +1 -0
  192. package/src/components/__tests__/__snapshots__/EditRule.spec.js.snap +120 -80
  193. package/src/components/__tests__/__snapshots__/ExecutionForm.spec.js.snap +6 -6
  194. package/src/components/__tests__/__snapshots__/ExecutionGroup.spec.js.snap +12 -10
  195. package/src/components/__tests__/__snapshots__/ExecutionGroupBreadcrumbs.spec.js.snap +2 -1
  196. package/src/components/__tests__/__snapshots__/ExecutionGroupLink.spec.js.snap +1 -0
  197. package/src/components/__tests__/__snapshots__/ExecutionGroupMessage.spec.js.snap +36 -9
  198. package/src/components/__tests__/__snapshots__/ExecutionGroups.spec.js.snap +9 -6
  199. package/src/components/__tests__/__snapshots__/ExecutionGroupsTable.spec.js.snap +6 -5
  200. package/src/components/__tests__/__snapshots__/ImplementationActions.spec.js.snap +6 -5
  201. package/src/components/__tests__/__snapshots__/ImplementationExecutionFilters.spec.js.snap +4 -0
  202. package/src/components/__tests__/__snapshots__/ImplementationExecutions.spec.js.snap +10 -5
  203. package/src/components/__tests__/__snapshots__/ImplementationResultBar.spec.js.snap +10 -20
  204. package/src/components/__tests__/__snapshots__/ImplementationSearchResults.spec.js.snap +249 -71
  205. package/src/components/__tests__/__snapshots__/ImplementationStructureLink.spec.js.snap +1 -0
  206. package/src/components/__tests__/__snapshots__/ImplementationStructures.spec.js.snap +3 -1
  207. package/src/components/__tests__/__snapshots__/ImplementationStructuresNew.spec.js.snap +220 -9
  208. package/src/components/__tests__/__snapshots__/ImplementationSummary.spec.js.snap +312 -166
  209. package/src/components/__tests__/__snapshots__/Implementations.spec.js.snap +9 -21
  210. package/src/components/__tests__/__snapshots__/ImplementationsRoutes.spec.js.snap +37 -0
  211. package/src/components/__tests__/__snapshots__/InformationSummary.spec.js.snap +10 -10
  212. package/src/components/__tests__/__snapshots__/MoveImplementation.spec.js.snap +1 -0
  213. package/src/components/__tests__/__snapshots__/NewBasicRuleImplementation.spec.js.snap +76 -20
  214. package/src/components/__tests__/__snapshots__/NewRule.spec.js.snap +125 -54
  215. package/src/components/__tests__/__snapshots__/NewRuleImplementation.spec.js.snap +157 -79
  216. package/src/components/__tests__/__snapshots__/QualityEventError.spec.js.snap +31 -10
  217. package/src/components/__tests__/__snapshots__/QualityRoutes.spec.js.snap +51 -0
  218. package/src/components/__tests__/__snapshots__/RawContent.spec.js.snap +26 -26
  219. package/src/components/__tests__/__snapshots__/RemediationForm.spec.js.snap +4 -5
  220. package/src/components/__tests__/__snapshots__/RemediationPlan.spec.js.snap +2 -4
  221. package/src/components/__tests__/__snapshots__/Rule.spec.js.snap +42 -41
  222. package/src/components/__tests__/__snapshots__/RuleActions.spec.js.snap +41 -43
  223. package/src/components/__tests__/__snapshots__/RuleCrumbs.spec.js.snap +40 -60
  224. package/src/components/__tests__/__snapshots__/RuleForm.spec.js.snap +194 -45
  225. package/src/components/__tests__/__snapshots__/RuleFormImplementations.spec.js.snap +20 -8
  226. package/src/components/__tests__/__snapshots__/RuleImplementation.spec.js.snap +23 -14
  227. package/src/components/__tests__/__snapshots__/RuleImplementationEvents.spec.js.snap +3 -3
  228. package/src/components/__tests__/__snapshots__/RuleImplementationHistory.spec.js.snap +7 -4
  229. package/src/components/__tests__/__snapshots__/RuleImplementationProperties.spec.js.snap +123 -98
  230. package/src/components/__tests__/__snapshots__/RuleImplementationResultTabs.spec.js.snap +2 -1
  231. package/src/components/__tests__/__snapshots__/RuleImplementationResults.spec.js.snap +12 -6
  232. package/src/components/__tests__/__snapshots__/RuleImplementationResultsLink.spec.js.snap +8 -5
  233. package/src/components/__tests__/__snapshots__/RuleImplementationTabs.spec.js.snap +14 -7
  234. package/src/components/__tests__/__snapshots__/RuleImplementationsActions.spec.js.snap +105 -68
  235. package/src/components/__tests__/__snapshots__/RuleImplementationsFromRuleLoader.spec.js.snap +1 -35
  236. package/src/components/__tests__/__snapshots__/RuleImplementationsLoader.spec.js.snap +1 -31
  237. package/src/components/__tests__/__snapshots__/RuleImplementationsOptions.spec.js.snap +4 -4
  238. package/src/components/__tests__/__snapshots__/RuleImplementationsSearch.spec.js.snap +46 -15
  239. package/src/components/__tests__/__snapshots__/RuleImplementationsTable.spec.js.snap +54 -107
  240. package/src/components/__tests__/__snapshots__/RuleProperties.spec.js.snap +3 -3
  241. package/src/components/__tests__/__snapshots__/RuleResult.spec.js.snap +17 -1
  242. package/src/components/__tests__/__snapshots__/RuleResultDecorator.spec.js.snap +4 -4
  243. package/src/components/__tests__/__snapshots__/RuleResultDetails.spec.js.snap +17 -17
  244. package/src/components/__tests__/__snapshots__/RuleResultRoutes.spec.js.snap +4 -321
  245. package/src/components/__tests__/__snapshots__/RuleResultSegments.spec.js.snap +1 -1
  246. package/src/components/__tests__/__snapshots__/RuleResultsUpload.spec.js.snap +1 -1
  247. package/src/components/__tests__/__snapshots__/RuleRoutes.spec.js.snap +32 -1
  248. package/src/components/__tests__/__snapshots__/RuleRow.spec.js.snap +4 -6
  249. package/src/components/__tests__/__snapshots__/RuleSearch.spec.js.snap +46 -15
  250. package/src/components/__tests__/__snapshots__/RuleSelectionForm.spec.js.snap +1 -0
  251. package/src/components/__tests__/__snapshots__/RuleSubscriptionLoader.spec.js.snap +1 -1
  252. package/src/components/__tests__/__snapshots__/Rules.spec.js.snap +128 -173
  253. package/src/components/__tests__/__snapshots__/RulesActions.spec.js.snap +5 -7
  254. package/src/components/__tests__/__snapshots__/RulesRoutes.spec.js.snap +60 -0
  255. package/src/components/__tests__/__snapshots__/Subscription.spec.js.snap +127 -184
  256. package/src/components/ruleImplementationForm/DatasetForm.js +8 -7
  257. package/src/components/ruleImplementationForm/DateField.js +0 -1
  258. package/src/components/ruleImplementationForm/DateTimeField.js +0 -1
  259. package/src/components/ruleImplementationForm/FieldModifier.js +3 -3
  260. package/src/components/ruleImplementationForm/FieldsGrid.js +1 -1
  261. package/src/components/ruleImplementationForm/FieldsGroup.js +3 -3
  262. package/src/components/ruleImplementationForm/FiltersField.js +5 -5
  263. package/src/components/ruleImplementationForm/FiltersFormGroup.js +5 -6
  264. package/src/components/ruleImplementationForm/FiltersGrid.js +1 -1
  265. package/src/components/ruleImplementationForm/FiltersGroup.js +6 -1
  266. package/src/components/ruleImplementationForm/FixedListField.js +6 -7
  267. package/src/components/ruleImplementationForm/InformationForm.js +3 -4
  268. package/src/components/ruleImplementationForm/LimitsForm.js +0 -1
  269. package/src/components/ruleImplementationForm/NumberField.js +0 -1
  270. package/src/components/ruleImplementationForm/PopulationForm.js +0 -1
  271. package/src/components/ruleImplementationForm/RuleImplementationBasicForm.js +6 -7
  272. package/src/components/ruleImplementationForm/RuleImplementationForm.js +8 -8
  273. package/src/components/ruleImplementationForm/RuleImplementationRawForm.js +10 -9
  274. package/src/components/ruleImplementationForm/SegmentsForm.js +0 -1
  275. package/src/components/ruleImplementationForm/StringField.js +2 -3
  276. package/src/components/ruleImplementationForm/StringListField.js +2 -3
  277. package/src/components/ruleImplementationForm/ValidationsForm.js +0 -1
  278. package/src/components/ruleImplementationForm/ValueConditions.js +3 -3
  279. package/src/components/ruleImplementationForm/__tests__/DataSetForm.spec.js +5 -18
  280. package/src/components/ruleImplementationForm/__tests__/FiltersField.spec.js +5 -10
  281. package/src/components/ruleImplementationForm/__tests__/FiltersFormGroup.spec.js +7 -21
  282. package/src/components/ruleImplementationForm/__tests__/FiltersGroup.spec.js +12 -21
  283. package/src/components/ruleImplementationForm/__tests__/InformationForm.spec.js +9 -3
  284. package/src/components/ruleImplementationForm/__tests__/LimitsForm.spec.js +74 -57
  285. package/src/components/ruleImplementationForm/__tests__/RuleImplementationBasicForm.spec.js +41 -27
  286. package/src/components/ruleImplementationForm/__tests__/RuleImplementationForm.spec.js +0 -2
  287. package/src/components/ruleImplementationForm/__tests__/RuleImplementationRawForm.spec.js +81 -52
  288. package/src/components/ruleImplementationForm/__tests__/ValueConditions.spec.js +11 -21
  289. package/src/components/ruleImplementationForm/__tests__/__snapshots__/DataSetForm.spec.js.snap +6 -6
  290. package/src/components/ruleImplementationForm/__tests__/__snapshots__/FiltersField.spec.js.snap +24 -48
  291. package/src/components/ruleImplementationForm/__tests__/__snapshots__/FiltersFormGroup.spec.js.snap +102 -6
  292. package/src/components/ruleImplementationForm/__tests__/__snapshots__/FiltersGroup.spec.js.snap +69 -6
  293. package/src/components/ruleImplementationForm/__tests__/__snapshots__/InformationForm.spec.js.snap +88 -18
  294. package/src/components/ruleImplementationForm/__tests__/__snapshots__/LimitsForm.spec.js.snap +68 -68
  295. package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationBasicForm.spec.js.snap +78 -17
  296. package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationForm.spec.js.snap +23 -24
  297. package/src/components/ruleImplementationForm/__tests__/__snapshots__/RuleImplementationRawForm.spec.js.snap +87 -30
  298. package/src/components/ruleImplementationForm/__tests__/__snapshots__/ValueConditions.spec.js.snap +69 -6
  299. package/src/components/ruleImplementationForm/limitsValidation.js +11 -10
  300. package/src/hooks/useConcept.js +4 -1
  301. package/src/sagas/__tests__/createImplementationStructure.spec.js +2 -2
  302. package/src/sagas/__tests__/createRemediation.spec.js +3 -3
  303. package/src/sagas/__tests__/deleteImplementation.spec.js +1 -1
  304. package/src/sagas/__tests__/deleteImplementationStructure.spec.js +2 -2
  305. package/src/sagas/__tests__/deleteRemediation.spec.js +3 -3
  306. package/src/sagas/__tests__/deleteRule.spec.js +1 -1
  307. package/src/sagas/__tests__/deleteRuleResult.spec.js +2 -2
  308. package/src/sagas/__tests__/fetchRemediation.spec.js +2 -2
  309. package/src/sagas/__tests__/fetchRule.spec.js +2 -2
  310. package/src/sagas/__tests__/fetchRuleImplementation.spec.js +3 -3
  311. package/src/sagas/__tests__/fetchRuleImplementations.spec.js +3 -3
  312. package/src/sagas/__tests__/fetchSegmentResults.spec.js +3 -3
  313. package/src/sagas/__tests__/updateRemediation.spec.js +3 -3
  314. package/src/sagas/__tests__/updateRule.spec.js +1 -1
  315. package/src/sagas/__tests__/updateRuleImplementation.spec.js +5 -5
  316. package/src/sagas/createImplementationStructure.js +3 -1
  317. package/src/sagas/createRemediation.js +3 -1
  318. package/src/sagas/deleteImplementation.js +1 -1
  319. package/src/sagas/deleteImplementationStructure.js +1 -1
  320. package/src/sagas/deleteRemediation.js +3 -1
  321. package/src/sagas/deleteRule.js +2 -2
  322. package/src/sagas/deleteRuleResult.js +1 -1
  323. package/src/sagas/fetchConceptRules.js +1 -1
  324. package/src/sagas/fetchExecutionGroup.js +1 -1
  325. package/src/sagas/fetchRemediation.js +1 -1
  326. package/src/sagas/fetchRuleImplementations.js +1 -1
  327. package/src/sagas/fetchSegmentResults.js +1 -1
  328. package/src/sagas/updateRemediation.js +3 -1
  329. package/src/sagas/updateRule.js +1 -1
  330. package/src/sagas/updateRuleImplementation.js +1 -1
  331. package/src/selectors/__tests__/getPreviousRuleImplementationQuery.spec.js +2 -2
  332. package/src/selectors/__tests__/getRuleImplementationColumns.spec.js +1 -1
  333. package/src/selectors/__tests__/getRuleImplementationForm.spec.js +16 -16
  334. package/src/selectors/__tests__/getRuleImplementationSelectedFilterActiveValues.spec.js +2 -2
  335. package/src/selectors/getImplementationStructureLinksColumns.js +0 -1
  336. package/src/selectors/getImplementationsExecution.js +2 -2
  337. package/src/selectors/getLinkedImplementationsToRulesColumns.js +0 -1
  338. package/src/selectors/getPreviousRuleImplementationQuery.js +1 -1
  339. package/src/selectors/getRuleImplementationColumns.js +0 -1
  340. package/src/selectors/getRuleImplementationForm.js +5 -5
  341. package/src/selectors/getRuleImplementationSelectedFilters.js +1 -1
  342. package/src/selectors/ruleColumnsSelector.js +0 -1
  343. package/src/styles/ruleSummary.less +21 -21
  344. package/src/components/RuleRangeNumber.js +0 -46
  345. package/src/components/RuleRangePercentage.js +0 -116
  346. package/src/components/__tests__/RuleRangeNumber.spec.js +0 -20
  347. package/src/components/__tests__/RuleRangePercentage.spec.js +0 -34
  348. package/src/components/__tests__/UploadModal.spec.js +0 -158
  349. package/src/components/__tests__/__snapshots__/RuleRangeNumber.spec.js.snap +0 -50
  350. package/src/components/__tests__/__snapshots__/RuleRangePercentage.spec.js.snap +0 -303
@@ -1,10 +1,10 @@
1
- import _ from "lodash/fp";
2
- import React from "react";
1
+ import _ from "lodash";
2
+ import userEvent from "@testing-library/user-event";
3
3
  import { waitFor, within } from "@testing-library/react";
4
- import { render } from "@truedat/test/render";
4
+ import { render, waitForLoad } from "@truedat/test/render";
5
5
  import { DOMAIN_QUERY, DOMAINS_QUERY } from "@truedat/core/api/queries";
6
+ import { REFERENCE_DATASETS_HEADERS_QUERY } from "@truedat/dd/api/queries";
6
7
  import { functionsMock, multipleTemplatesMock } from "@truedat/test/mocks";
7
- import userEvent from "@testing-library/user-event";
8
8
  import NewRuleImplementation, {
9
9
  NewRuleImplementation as NewRuleImplementationComponent,
10
10
  } from "../NewRuleImplementation";
@@ -40,6 +40,11 @@ const domainMock = {
40
40
  result: { data: { domain: { id: "2", actions: domainActions } } },
41
41
  };
42
42
 
43
+ const referenceDatasetsMock = {
44
+ request: { query: REFERENCE_DATASETS_HEADERS_QUERY },
45
+ result: { data: { referenceDatasets: [] } },
46
+ };
47
+
43
48
  describe("<NewRuleImplementation />", () => {
44
49
  const createRuleImplementation = jest.fn();
45
50
  const updateRuleImplementation = jest.fn();
@@ -56,6 +61,7 @@ describe("<NewRuleImplementation />", () => {
56
61
  createRuleImplementation,
57
62
  updateRuleImplementation,
58
63
  };
64
+
59
65
  const renderOpts = {
60
66
  mocks: [
61
67
  functionsMock,
@@ -63,44 +69,38 @@ describe("<NewRuleImplementation />", () => {
63
69
  scope: "ri",
64
70
  domainIds: null,
65
71
  }),
72
+ multipleTemplatesMock({
73
+ scope: "ri",
74
+ domainIds: [2],
75
+ }),
66
76
  domainsMock,
67
77
  domainMock,
78
+ referenceDatasetsMock,
68
79
  ],
69
80
  state: { ruleImplementationCreating: false },
70
- fallback: "lazy",
71
81
  };
72
82
 
73
83
  it("matches the latest snapshot", async () => {
74
- const { container, queryByText } = render(
75
- <NewRuleImplementation {...props} />,
76
- renderOpts
77
- );
78
-
79
- await waitFor(() => {
80
- expect(queryByText(/lazy/i)).not.toBeInTheDocument();
81
- expect(container.querySelector(".loader")).not.toBeInTheDocument();
82
- expect(queryByText("Template")).toBeInTheDocument();
83
- });
84
- expect(container).toMatchSnapshot();
84
+ const rendered = render(<NewRuleImplementation {...props} />, renderOpts);
85
+ await waitForLoad(rendered);
86
+ await rendered.findByText(/template.selector.label/i);
87
+ expect(rendered.container).toMatchSnapshot();
85
88
  });
86
89
 
87
90
  it("calculate aliases when not informed", async () => {
88
- const { container, queryByText } = render(
91
+ const rendered = render(
89
92
  <NewRuleImplementationComponent {...newRuleImplementationProps} />,
90
93
  renderOpts
91
94
  );
92
- await waitFor(() => {
93
- expect(queryByText(/lazy/i)).not.toBeInTheDocument();
94
- expect(container.querySelector(".loader")).not.toBeInTheDocument();
95
- });
96
- expect(container).toMatchSnapshot();
95
+ await waitForLoad(rendered);
96
+ expect(rendered.container).toMatchSnapshot();
97
97
  });
98
98
  });
99
99
 
100
100
  describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
101
101
  const dispatch = jest.fn();
102
102
 
103
- const renderOptsImplementationEdit = {
103
+ const renderOpts = {
104
104
  mocks: [
105
105
  functionsMock,
106
106
  multipleTemplatesMock({
@@ -109,9 +109,9 @@ describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
109
109
  }),
110
110
  domainsMock,
111
111
  domainMock,
112
+ referenceDatasetsMock,
112
113
  ],
113
114
  state: ruleImplementationLoaderGlobalState,
114
- fallback: "lazy",
115
115
  dispatch,
116
116
  };
117
117
 
@@ -169,75 +169,72 @@ describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
169
169
  ],
170
170
  };
171
171
 
172
- const { queryByText, getByRole, findByRole, findByTestId } = render(
173
- <NewRuleImplementation {...props} />,
174
- renderOptsImplementationEdit
175
- );
176
-
177
- // Information Form
172
+ const rendered = render(<NewRuleImplementation {...props} />, renderOpts);
173
+ await waitForLoad(rendered);
174
+ await rendered.findByText(/template.selector.label/i);
178
175
 
179
- await waitFor(() => {
180
- expect(queryByText(/Template/)).toBeTruthy();
181
- });
176
+ const user = userEvent.setup({ delay: null });
182
177
 
183
- userEvent.click(await findByRole("option", { name: "template1" }));
178
+ await user.click(
179
+ await rendered.findByRole("option", { name: /template1/i })
180
+ );
184
181
 
185
182
  await waitFor(() => {
186
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
183
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
187
184
  });
188
- userEvent.click(await getByRole("button", { name: "Next" }));
189
-
190
- // Dataset Form
185
+ await user.click(rendered.getByRole("button", { name: /next/i }));
191
186
 
192
187
  await waitFor(() => {
193
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
188
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
194
189
  });
195
- userEvent.click(await getByRole("button", { name: "Next" }));
196
-
197
- // Population Form
190
+ await user.click(rendered.getByRole("button", { name: /next/i }));
198
191
 
199
192
  await waitFor(() => {
200
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
193
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
201
194
  });
202
- userEvent.click(await getByRole("button", { name: "Next" }));
195
+ await user.click(rendered.getByRole("button", { name: /next/i }));
203
196
 
204
- // Validations Form
205
-
206
- userEvent.click(await findByRole("button", { name: "add-condition-row" }));
197
+ await user.click(
198
+ await rendered.findByRole("button", { name: /add-condition-row/i })
199
+ );
200
+ await waitForLoad(rendered);
207
201
 
208
- const row = await findByTestId("row-0");
202
+ const row = await rendered.findByTestId("row-0");
209
203
 
210
- const field = row.querySelector('div[label="Field"]');
211
- const operator = row.querySelector('div[label="Operator"]');
204
+ const field = row.querySelector('div[label="filtersGrid.field.label"]');
205
+ const operator = row.querySelector(
206
+ 'div[label="filtersGrid.field.operator"]'
207
+ );
212
208
 
213
- userEvent.click(field);
209
+ await user.click(field);
214
210
  const fieldOptions = await within(field).findByRole("listbox");
215
211
  const emailFieldOption = within(fieldOptions).getByText("EMAIL");
216
- userEvent.click(emailFieldOption);
212
+ await user.click(emailFieldOption);
217
213
  const selectedField = fieldOptions.querySelector(".selected>span");
218
214
  expect(within(selectedField).queryByText(/EMAIL/)).toBeInTheDocument();
219
215
 
220
- userEvent.click(operator);
216
+ await user.click(operator);
221
217
  const operatorOptions = await within(operator).findByRole("listbox");
222
- const emptyOperatorOption = within(operatorOptions).getByText("is empty");
223
- userEvent.click(emptyOperatorOption);
218
+ const emptyOperatorOption =
219
+ within(operatorOptions).getByText(/operator.empty/);
220
+ await user.click(emptyOperatorOption);
224
221
  const selectedOperator = operatorOptions.querySelector(".selected>span");
225
222
  expect(
226
- within(selectedOperator).queryByText(/is empty/)
223
+ within(selectedOperator).queryByText(/operator.empty/)
227
224
  ).toBeInTheDocument();
228
225
 
229
226
  // Segments
230
227
 
231
228
  await waitFor(() => {
232
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
229
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
233
230
  });
234
- userEvent.click(await getByRole("button", { name: "Next" }));
231
+ await user.click(await rendered.getByRole("button", { name: /next/i }));
235
232
 
236
233
  await waitFor(() => {
237
- expect(getByRole("button", { name: "Save" })).toBeEnabled();
234
+ expect(rendered.getByRole("button", { name: /save/i })).toBeEnabled();
238
235
  });
239
236
 
240
- userEvent.click(await getByRole("button", { name: "Save" }));
237
+ await user.click(await rendered.getByRole("button", { name: /save/i }));
241
238
 
242
239
  expect(dispatch).toHaveBeenCalledWith({
243
240
  ...ruleImplementationLoaderActions.updateRuleImplementation(),
@@ -311,75 +308,78 @@ describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
311
308
  ],
312
309
  };
313
310
 
314
- const { queryByText, getByRole, findByRole, findByTestId } = render(
315
- <NewRuleImplementation {...props} />,
316
- renderOptsImplementationEdit
317
- );
318
-
319
- // Information Form
311
+ const rendered = render(<NewRuleImplementation {...props} />, renderOpts);
312
+ await waitForLoad(rendered);
313
+ await rendered.findByText(/template.selector.label/i);
320
314
 
321
- await waitFor(() => {
322
- expect(queryByText(/Template/)).toBeTruthy();
323
- });
315
+ const user = userEvent.setup({ delay: null });
324
316
 
325
- userEvent.click(await findByRole("option", { name: "template1" }));
317
+ await user.click(
318
+ await rendered.findByRole("option", { name: /template1/i })
319
+ );
326
320
 
327
321
  await waitFor(() => {
328
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
322
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
329
323
  });
330
- userEvent.click(await getByRole("button", { name: "Next" }));
331
-
332
- // Dataset Form
324
+ await user.click(rendered.getByRole("button", { name: /next/i }));
333
325
 
334
326
  await waitFor(() => {
335
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
327
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
336
328
  });
337
- userEvent.click(await getByRole("button", { name: "Next" }));
338
-
339
- // Population Form
329
+ await user.click(rendered.getByRole("button", { name: /next/i }));
340
330
 
341
331
  await waitFor(() => {
342
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
332
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
343
333
  });
344
- userEvent.click(await getByRole("button", { name: "Next" }));
334
+ await user.click(rendered.getByRole("button", { name: /next/i }));
345
335
 
346
- // Validations Form
347
-
348
- userEvent.click(await findByRole("button", { name: "add-condition-row" }));
336
+ await user.click(
337
+ await rendered.findByRole("button", { name: /add-condition-row/i })
338
+ );
349
339
 
350
- const row = await findByTestId("row-0");
340
+ await waitForLoad(rendered);
351
341
 
352
- const field = row.querySelector('div[label="Field"]');
353
- const operator = row.querySelector('div[label="Operator"]');
342
+ const field = rendered.container.querySelector(
343
+ 'div[label="filtersGrid.field.label"]'
344
+ );
345
+ const operator = rendered.container.querySelector(
346
+ 'div[label="filtersGrid.field.operator"]'
347
+ );
354
348
 
355
- userEvent.click(field);
349
+ await user.click(field);
356
350
  const fieldOptions = await within(field).findByRole("listbox");
357
351
  const emailFieldOption = within(fieldOptions).getByText("EMAIL");
358
- userEvent.click(emailFieldOption);
352
+ await user.click(emailFieldOption);
359
353
  const selectedField = fieldOptions.querySelector(".selected>span");
360
354
  expect(within(selectedField).queryByText(/EMAIL/)).toBeInTheDocument();
361
355
 
362
- userEvent.click(operator);
356
+ await user.click(operator);
363
357
  const operatorOptions = await within(operator).findByRole("listbox");
364
358
  const uniqueAcrossFieldsOperatorOption = within(operatorOptions).getByText(
365
- "unique across fields"
359
+ /operator.unique.field_list/
366
360
  );
367
- userEvent.click(uniqueAcrossFieldsOperatorOption);
361
+ await user.click(uniqueAcrossFieldsOperatorOption);
362
+ await waitForLoad(rendered);
368
363
  const selectedOperator = operatorOptions.querySelector(".selected>span");
364
+
369
365
  expect(
370
- within(selectedOperator).queryByText(/unique across fields/)
366
+ within(selectedOperator).queryByText(/operator.unique.field_list/)
371
367
  ).toBeInTheDocument();
372
368
 
373
- const updatedRow = await findByTestId("row-0");
374
- const value = updatedRow.querySelector('div[label="Value"]');
375
- userEvent.click(value);
369
+ await waitForLoad(rendered);
370
+
371
+ const updatedRow = await rendered.findByTestId("row-0");
372
+ const value = updatedRow.querySelector(
373
+ 'div[label="filtersGrid.field.value"]'
374
+ );
375
+ await user.click(value);
376
376
  const valueOptions = await within(value).findByRole("listbox");
377
377
  const valueEmailFieldOption = within(valueOptions).getByText("EMAIL");
378
378
  const valuePhoneNumberFieldOption =
379
379
  within(valueOptions).getByText("PHONE_NUMBER");
380
380
 
381
- userEvent.click(valueEmailFieldOption);
382
- userEvent.click(valuePhoneNumberFieldOption);
381
+ await user.click(valueEmailFieldOption);
382
+ await user.click(valuePhoneNumberFieldOption);
383
383
 
384
384
  const selectedFieldValues = updatedRow.querySelectorAll(".label");
385
385
 
@@ -394,14 +394,14 @@ describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
394
394
  // Segments
395
395
 
396
396
  await waitFor(() => {
397
- expect(getByRole("button", { name: "Next" })).toBeEnabled();
397
+ expect(rendered.getByRole("button", { name: /next/i })).toBeEnabled();
398
398
  });
399
- userEvent.click(await getByRole("button", { name: "Next" }));
399
+ await user.click(await rendered.getByRole("button", { name: /next/i }));
400
400
 
401
401
  await waitFor(() => {
402
- expect(getByRole("button", { name: "Save" })).toBeEnabled();
402
+ expect(rendered.getByRole("button", { name: /save/i })).toBeEnabled();
403
403
  });
404
- userEvent.click(await getByRole("button", { name: "Save" }));
404
+ await user.click(rendered.getByRole("button", { name: /save/i }));
405
405
 
406
406
  expect(dispatch).toHaveBeenCalledWith({
407
407
  ...ruleImplementationLoaderActions.updateRuleImplementation(),
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { QualityEventError } from "../QualityEventError";
4
3
 
5
4
  describe("<QualityEventError />", () => {
@@ -9,7 +8,8 @@ describe("<QualityEventError />", () => {
9
8
  message: "foo",
10
9
  type: "FAILED",
11
10
  };
12
- const wrapper = shallow(<QualityEventError {...props} />);
13
- expect(wrapper).toMatchSnapshot();
11
+ const rendered = render(<QualityEventError {...props} />);
12
+ await waitForLoad(rendered);
13
+ expect(rendered.container).toMatchSnapshot();
14
14
  });
15
15
  });
@@ -0,0 +1,86 @@
1
+ import React from "react";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
+ import QualityRoutes from "../QualityRoutes";
4
+ import { useAuthorized } from "@truedat/core/hooks/useAuthorized";
5
+ import {
6
+ EXECUTION_GROUPS,
7
+ RULES,
8
+ IMPLEMENTATIONS,
9
+ IMPLEMENTATIONS_PENDING,
10
+ IMPLEMENTATIONS_DEPRECATED,
11
+ } from "@truedat/core/routes";
12
+
13
+ jest.mock("@truedat/core/hooks/useAuthorized", () => ({
14
+ useAuthorized: jest.fn(() => true),
15
+ }));
16
+
17
+ // Mock all child components
18
+ jest.mock("../ExecutionGroup", () => () => <div>ExecutionGroup</div>);
19
+ jest.mock("../ExecutionGroupLoader", () => () => (
20
+ <div>ExecutionGroupLoader</div>
21
+ ));
22
+ jest.mock("../ExecutionGroups", () => () => <div>ExecutionGroups</div>);
23
+ jest.mock("../ImplementationsRoutes", () => () => (
24
+ <div>ImplementationsRoutes</div>
25
+ ));
26
+ jest.mock("../RulesRoutes", () => () => <div>RulesRoutes</div>);
27
+ jest.mock("@truedat/core/router/Unauthorized", () => () => (
28
+ <div>Unauthorized</div>
29
+ ));
30
+
31
+ describe("<QualityRoutes />", () => {
32
+ it("renders correctly with default route", async () => {
33
+ const rendered = render(<QualityRoutes />);
34
+ await waitForLoad(rendered);
35
+ expect(rendered.container).toMatchSnapshot();
36
+ });
37
+
38
+ it("renders correctly with execution groups route", async () => {
39
+ const rendered = render(<QualityRoutes />, {
40
+ routes: [EXECUTION_GROUPS],
41
+ });
42
+ await waitForLoad(rendered);
43
+ expect(rendered.container).toMatchSnapshot();
44
+ });
45
+
46
+ it("renders correctly with rules route", async () => {
47
+ const rendered = render(<QualityRoutes />, {
48
+ routes: [RULES],
49
+ });
50
+ await waitForLoad(rendered);
51
+ expect(rendered.container).toMatchSnapshot();
52
+ });
53
+
54
+ it("renders correctly with implementations route", async () => {
55
+ const rendered = render(<QualityRoutes />, {
56
+ routes: [IMPLEMENTATIONS],
57
+ });
58
+ await waitForLoad(rendered);
59
+ expect(rendered.container).toMatchSnapshot();
60
+ });
61
+
62
+ it("renders correctly with pending implementations route", async () => {
63
+ const rendered = render(<QualityRoutes />, {
64
+ routes: [IMPLEMENTATIONS_PENDING],
65
+ });
66
+ await waitForLoad(rendered);
67
+ expect(rendered.container).toMatchSnapshot();
68
+ });
69
+
70
+ it("renders correctly with deprecated implementations route", async () => {
71
+ const rendered = render(<QualityRoutes />, {
72
+ routes: [IMPLEMENTATIONS_DEPRECATED],
73
+ });
74
+ await waitForLoad(rendered);
75
+ expect(rendered.container).toMatchSnapshot();
76
+ });
77
+
78
+ it("renders unauthorized component when not authorized", async () => {
79
+ useAuthorized.mockReturnValueOnce(false);
80
+ const rendered = render(<QualityRoutes />, {
81
+ routes: [EXECUTION_GROUPS],
82
+ });
83
+ await waitForLoad(rendered);
84
+ expect(rendered.container).toMatchSnapshot();
85
+ });
86
+ });
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { RawContent } from "../RawContent";
4
3
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { waitFor } from "@testing-library/react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { multipleTemplatesMock } from "@truedat/test/mocks";
@@ -7,7 +6,6 @@ import RemediationForm from "../RemediationForm";
7
6
  const renderOpts = {
8
7
  mocks: [multipleTemplatesMock({ scope: "remediation", domainIds: [1] })],
9
8
  state: { remediation: {}, ruleImplementation: { domain_id: 1 } },
10
- fallback: "lazy",
11
9
  };
12
10
 
13
11
  describe("<RemediationForm />", () => {
@@ -1,12 +1,11 @@
1
- import React from "react";
2
1
  import { waitFor } from "@testing-library/react";
3
2
  import userEvent from "@testing-library/user-event";
4
- import { render } from "@truedat/test/render";
3
+ import { render, waitForLoad } from "@truedat/test/render";
5
4
  import { multipleTemplatesMock } from "@truedat/test/mocks";
6
5
  import RemediationPlan from "../RemediationPlan";
7
6
 
8
- jest.mock("react-router-dom", () => ({
9
- ...jest.requireActual("react-router-dom"),
7
+ jest.mock("react-router", () => ({
8
+ ...jest.requireActual("react-router"),
10
9
  useParams: () => ({
11
10
  id: 777,
12
11
  implementation_id: 862,
@@ -31,18 +30,14 @@ const state = {
31
30
  const renderOpts = {
32
31
  state,
33
32
  routes: ["/rules/777/implementations/862/results/66322"],
34
- fallback: "lazy",
35
- mocks: [multipleTemplatesMock({ scope: "remediation", domainIds: [1] })],
33
+ mocks: [multipleTemplatesMock({ scope: "remediation", domainIds: null })],
36
34
  };
37
35
 
38
36
  describe("<RemediationPlan />", () => {
39
37
  it("matches the latest snapshot", async () => {
40
- const { container, queryByText } = render(<RemediationPlan />, renderOpts);
41
- await waitFor(() => expect(queryByText(/lazy/i)).not.toBeInTheDocument());
42
- await waitFor(() =>
43
- expect(queryByText(/loading/i)).not.toBeInTheDocument()
44
- );
45
- expect(container).toMatchSnapshot();
38
+ const rendered = render(<RemediationPlan />, renderOpts);
39
+ await waitForLoad(rendered);
40
+ expect(rendered.container).toMatchSnapshot();
46
41
  });
47
42
 
48
43
  it("New remediation component is shown if there is no existing remediation", async () => {
@@ -50,33 +45,32 @@ describe("<RemediationPlan />", () => {
50
45
  remediationActions: { create: true },
51
46
  templates: [{ id: 1 }],
52
47
  };
53
- const { queryByText } = render(<RemediationPlan />, {
48
+ const rendered = render(<RemediationPlan />, {
54
49
  ...renderOpts,
55
50
  state,
56
51
  });
57
- await waitFor(() =>
58
- expect(queryByText(/Create Remediation Plan/)).toBeInTheDocument()
59
- );
52
+ await waitForLoad(rendered);
53
+ expect(
54
+ rendered.getByText(/remediation.actions.create/i)
55
+ ).toBeInTheDocument();
60
56
  });
61
57
 
62
58
  it("Remediation view is shown if there is an existing remediation", async () => {
63
- const { queryByText } = render(<RemediationPlan />, renderOpts);
64
-
65
- await waitFor(() => expect(queryByText(/Edit/)).toBeInTheDocument());
59
+ const rendered = render(<RemediationPlan />, renderOpts);
60
+ await waitForLoad(rendered);
61
+ expect(rendered.getByText(/edit/i)).toBeInTheDocument();
66
62
  });
67
63
 
68
64
  it("Remediation form is shown if edit button is clicked", async () => {
69
- const { queryByText, queryByRole } = render(
70
- <RemediationPlan />,
71
- renderOpts
72
- );
65
+ const rendered = render(<RemediationPlan />, renderOpts);
66
+ await waitForLoad(rendered);
67
+
68
+ userEvent.click(rendered.getByText(/edit/i));
73
69
 
74
- await waitFor(() => expect(queryByText("loading")).not.toBeInTheDocument());
75
- userEvent.click(await queryByText(/Edit/));
76
- await waitFor(() =>
70
+ await waitFor(() => {
77
71
  expect(
78
- queryByRole("form", { name: "remediation-form" })
79
- ).toBeInTheDocument()
80
- );
72
+ rendered.getByRole("form", { name: "remediation-form" })
73
+ ).toBeInTheDocument();
74
+ });
81
75
  });
82
76
  });
@@ -1,7 +1,20 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { Rule } from "../Rule";
4
3
 
4
+ // Mock the imported components
5
+ jest.mock("../RuleTabs", () => () => (
6
+ <div data-testid="rule-tabs">RuleTabs</div>
7
+ ));
8
+ jest.mock("../RuleActions", () => () => (
9
+ <div data-testid="rule-actions">RuleActions</div>
10
+ ));
11
+ jest.mock("../Subscription", () => () => (
12
+ <div data-testid="subscription">Subscription</div>
13
+ ));
14
+ jest.mock("../RuleSummary", () => () => (
15
+ <div data-testid="rule-summary">RuleSummary</div>
16
+ ));
17
+
5
18
  describe("<Rule />", () => {
6
19
  const props = {
7
20
  rule: { id: 1, name: "foo" },
@@ -13,8 +26,9 @@ describe("<Rule />", () => {
13
26
  implementations: [{ id: 100, implementation_key: "bar" }],
14
27
  };
15
28
 
16
- it("matches the latest snapshot", () => {
17
- const wrapper = shallow(<Rule {...props} />);
18
- expect(wrapper).toMatchSnapshot();
29
+ it("matches the latest snapshot", async () => {
30
+ const rendered = render(<Rule {...props} />);
31
+ await waitForLoad(rendered);
32
+ expect(rendered.container).toMatchSnapshot();
19
33
  });
20
34
  });
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { RuleActions } from "../RuleActions";
4
3
 
5
4
  describe("<RuleActions />", () => {
@@ -8,13 +7,17 @@ describe("<RuleActions />", () => {
8
7
  const manageRule = true;
9
8
  const props = { rule, deleteRule, manageRule };
10
9
 
11
- it("matches the latest snapshot", () => {
12
- const wrapper = shallow(<RuleActions {...props} />);
13
- expect(wrapper).toMatchSnapshot();
10
+ it("matches the latest snapshot", async () => {
11
+ const rendered = render(<RuleActions {...props} />);
12
+ await waitForLoad(rendered);
13
+ expect(rendered.container).toMatchSnapshot();
14
14
  });
15
15
 
16
- it("contains a <GroupActions />", () => {
17
- const wrapper = shallow(<RuleActions {...props} />);
18
- expect(wrapper.find("GroupActions")).toHaveLength(1);
16
+ it("contains a GroupActions component", async () => {
17
+ const rendered = render(<RuleActions {...props} />);
18
+ await waitForLoad(rendered);
19
+ expect(
20
+ rendered.container.querySelector(".group-actions")
21
+ ).toBeInTheDocument();
19
22
  });
20
23
  });