@truedat/qx 7.5.7 → 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 (240) hide show
  1. package/package.json +45 -64
  2. package/src/components/QxRoutes.js +38 -19
  3. package/src/components/__tests__/QxRoutes.spec.js +73 -0
  4. package/src/components/__tests__/__fixtures__/helper.js +6 -7
  5. package/src/components/__tests__/__snapshots__/QxRoutes.spec.js.snap +60 -0
  6. package/src/components/common/ClauseViewer.js +6 -6
  7. package/src/components/common/DescriptionInput.js +0 -1
  8. package/src/components/common/ResourceSelector.js +2 -3
  9. package/src/components/common/TestFormWrapper.js +2 -13
  10. package/src/components/common/TypeSelector.js +0 -1
  11. package/src/components/common/__tests__/DescriptionInput.spec.js +12 -21
  12. package/src/components/common/__tests__/ResourceSelector.spec.js +42 -87
  13. package/src/components/common/__tests__/TypeSelector.spec.js +0 -1
  14. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +32 -22
  15. package/src/components/common/expressions/Clauses.js +5 -6
  16. package/src/components/common/expressions/Condition.js +8 -9
  17. package/src/components/common/expressions/ConstantSelector.js +2 -2
  18. package/src/components/common/expressions/Expression.js +2 -2
  19. package/src/components/common/expressions/FieldSelector.js +2 -2
  20. package/src/components/common/expressions/FunctionArgs.js +5 -6
  21. package/src/components/common/expressions/FunctionSelector.js +2 -2
  22. package/src/components/common/expressions/ParamSelector.js +2 -2
  23. package/src/components/common/expressions/ShapeSelector.js +7 -16
  24. package/src/components/common/expressions/__tests__/Clauses.spec.js +10 -9
  25. package/src/components/common/expressions/__tests__/Condition.spec.js +6 -26
  26. package/src/components/common/expressions/__tests__/ConstantSelector.spec.js +14 -30
  27. package/src/components/common/expressions/__tests__/Expression.spec.js +36 -62
  28. package/src/components/common/expressions/__tests__/FieldSelector.spec.js +2 -7
  29. package/src/components/common/expressions/__tests__/FunctionArgs.spec.js +18 -44
  30. package/src/components/common/expressions/__tests__/FunctionSelector.spec.js +19 -27
  31. package/src/components/common/expressions/__tests__/ParamSelector.spec.js +28 -58
  32. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +34 -47
  33. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +6 -6
  34. package/src/components/common/expressions/__tests__/__snapshots__/ConstantSelector.spec.js.snap +6 -7
  35. package/src/components/common/expressions/__tests__/__snapshots__/Expression.spec.js.snap +20 -20
  36. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +8 -9
  37. package/src/components/common/expressions/__tests__/__snapshots__/FunctionSelector.spec.js.snap +670 -8
  38. package/src/components/common/expressions/__tests__/__snapshots__/ParamSelector.spec.js.snap +5 -5
  39. package/src/components/common/expressions/__tests__/__snapshots__/ShapeSelector.spec.js.snap +9 -9
  40. package/src/components/common/expressions/__tests__/useWatchParams.spec.js +1 -4
  41. package/src/components/common/expressions/constantInputs/AnySelector.js +5 -6
  42. package/src/components/common/expressions/constantInputs/BooleanSelector.js +2 -2
  43. package/src/components/common/expressions/constantInputs/DefaultSelector.js +2 -2
  44. package/src/components/common/expressions/constantInputs/__tests__/AnySelector.spec.js +16 -37
  45. package/src/components/common/expressions/constantInputs/__tests__/BooleanSelector.spec.js +14 -17
  46. package/src/components/common/expressions/constantInputs/__tests__/DefaultSelector.spec.js +12 -27
  47. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/AnySelector.spec.js.snap +11 -11
  48. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/DefaultSelector.spec.js.snap +0 -1
  49. package/src/components/common/resourceSelectors/DataStructureSelector.js +2 -2
  50. package/src/components/common/resourceSelectors/DataViewSelector.js +2 -2
  51. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +2 -2
  52. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +5 -29
  53. package/src/components/common/resourceSelectors/__tests__/DataViewSelector.spec.js +23 -25
  54. package/src/components/common/resourceSelectors/__tests__/ReferenceDatasetSelector.spec.js +21 -32
  55. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +3 -4
  56. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataViewSelector.spec.js.snap +1 -1
  57. package/src/components/common/resourceSelectors/__tests__/__snapshots__/ReferenceDatasetSelector.spec.js.snap +1 -1
  58. package/src/components/dataViews/DataViewEditor.js +5 -6
  59. package/src/components/dataViews/DataViewSelect.js +4 -5
  60. package/src/components/dataViews/DataViews.js +1 -2
  61. package/src/components/dataViews/Queryable.js +4 -4
  62. package/src/components/dataViews/Queryables.js +0 -1
  63. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +36 -111
  64. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +0 -1
  65. package/src/components/dataViews/__tests__/DataViews.spec.js +15 -16
  66. package/src/components/dataViews/__tests__/Queryable.spec.js +0 -1
  67. package/src/components/dataViews/__tests__/Queryables.spec.js +35 -74
  68. package/src/components/dataViews/__tests__/__snapshots__/DataViewEditor.spec.js.snap +61 -55
  69. package/src/components/dataViews/__tests__/__snapshots__/DataViews.spec.js.snap +5 -5
  70. package/src/components/dataViews/__tests__/__snapshots__/Queryables.spec.js.snap +59 -59
  71. package/src/components/dataViews/queryableProperties/From.js +4 -4
  72. package/src/components/dataViews/queryableProperties/GroupBy.js +6 -6
  73. package/src/components/dataViews/queryableProperties/Join.js +6 -6
  74. package/src/components/dataViews/queryableProperties/JoinTypeIcon.js +8 -9
  75. package/src/components/dataViews/queryableProperties/Select.js +4 -5
  76. package/src/components/dataViews/queryableProperties/SelectField.js +4 -4
  77. package/src/components/dataViews/queryableProperties/Where.js +4 -4
  78. package/src/components/dataViews/queryableProperties/__tests__/From.spec.js +0 -1
  79. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +16 -42
  80. package/src/components/dataViews/queryableProperties/__tests__/Join.spec.js +6 -29
  81. package/src/components/dataViews/queryableProperties/__tests__/JoinTypeIcon.spec.js +0 -1
  82. package/src/components/dataViews/queryableProperties/__tests__/Select.spec.js +26 -50
  83. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +19 -44
  84. package/src/components/dataViews/queryableProperties/__tests__/Where.spec.js +6 -17
  85. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +309 -9
  86. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Join.spec.js.snap +12 -12
  87. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Select.spec.js.snap +192 -18
  88. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/SelectField.spec.js.snap +6 -8
  89. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Where.spec.js.snap +2 -2
  90. package/src/components/functions/FunctionEditor.js +3 -5
  91. package/src/components/functions/FunctionParams.js +2 -3
  92. package/src/components/functions/Functions.js +3 -4
  93. package/src/components/functions/__tests__/FunctionEditor.spec.js +61 -57
  94. package/src/components/functions/__tests__/FunctionParams.spec.js +50 -47
  95. package/src/components/functions/__tests__/Functions.spec.js +5 -12
  96. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +11 -11
  97. package/src/components/functions/__tests__/__snapshots__/Functions.spec.js.snap +4 -5
  98. package/src/components/qualityControls/ControlProperties.js +8 -7
  99. package/src/components/qualityControls/ControlPropertiesView.js +5 -5
  100. package/src/components/qualityControls/EditQualityControl.js +5 -5
  101. package/src/components/qualityControls/IconPopup.js +0 -1
  102. package/src/components/qualityControls/NewDraftQualityControl.js +8 -6
  103. package/src/components/qualityControls/NewQualityControl.js +5 -6
  104. package/src/components/qualityControls/QualityBadge.js +29 -21
  105. package/src/components/qualityControls/QualityControl.js +4 -7
  106. package/src/components/qualityControls/QualityControlActions.js +7 -7
  107. package/src/components/qualityControls/QualityControlCrumbs.js +1 -3
  108. package/src/components/qualityControls/QualityControlEditor.js +6 -12
  109. package/src/components/qualityControls/QualityControlHeader.js +4 -6
  110. package/src/components/qualityControls/QualityControlHistory.js +3 -3
  111. package/src/components/qualityControls/QualityControlManageDomain.js +2 -2
  112. package/src/components/qualityControls/QualityControlQueryModal.js +1 -1
  113. package/src/components/qualityControls/QualityControlRoutes.js +27 -54
  114. package/src/components/qualityControls/QualityControlRow.js +0 -2
  115. package/src/components/qualityControls/QualityControlScores.js +7 -5
  116. package/src/components/qualityControls/QualityControlTabs.js +2 -2
  117. package/src/components/qualityControls/QualityControls.js +10 -8
  118. package/src/components/qualityControls/QualityControlsLabelResults.js +0 -2
  119. package/src/components/qualityControls/QualityControlsPagination.js +0 -1
  120. package/src/components/qualityControls/QualityControlsTable.js +1 -2
  121. package/src/components/qualityControls/ScoreCriteria.js +8 -4
  122. package/src/components/qualityControls/ScoreCriteriaView.js +34 -54
  123. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +16 -21
  124. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +5 -6
  125. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +28 -70
  126. package/src/components/qualityControls/__tests__/IconPopup.spec.js +10 -11
  127. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +33 -70
  128. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +88 -107
  129. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +55 -63
  130. package/src/components/qualityControls/__tests__/QualityControl.spec.js +19 -31
  131. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +49 -46
  132. package/src/components/qualityControls/__tests__/QualityControlCrumbs.spec.js +0 -1
  133. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +68 -107
  134. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +22 -25
  135. package/src/components/qualityControls/__tests__/QualityControlHistory.spec.js +6 -6
  136. package/src/components/qualityControls/__tests__/QualityControlManageDomain.spec.js +0 -1
  137. package/src/components/qualityControls/__tests__/QualityControlQueryModal.spec.js +13 -12
  138. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +4 -8
  139. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +23 -19
  140. package/src/components/qualityControls/__tests__/QualityControlTabs.spec.js +2 -3
  141. package/src/components/qualityControls/__tests__/QualityControls.spec.js +69 -53
  142. package/src/components/qualityControls/__tests__/QualityControlsLabelResults.spec.js +0 -1
  143. package/src/components/qualityControls/__tests__/QualityControlsPagination.spec.js +0 -1
  144. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +2 -3
  145. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +3 -4
  146. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +18 -3
  147. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +2 -2
  148. package/src/components/qualityControls/__tests__/__snapshots__/ControlProperties.spec.js.snap +1 -1
  149. package/src/components/qualityControls/__tests__/__snapshots__/ControlPropertiesView.spec.js.snap +53 -53
  150. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +45 -34
  151. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +44 -33
  152. package/src/components/qualityControls/__tests__/__snapshots__/NewQualityControl.spec.js.snap +30 -19
  153. package/src/components/qualityControls/__tests__/__snapshots__/QualityBadge.spec.js.snap +1 -1
  154. package/src/components/qualityControls/__tests__/__snapshots__/QualityControl.spec.js.snap +11 -19
  155. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlActions.spec.js.snap +5 -4
  156. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlCrumbs.spec.js.snap +1 -0
  157. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +28 -5
  158. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHeader.spec.js.snap +16 -11
  159. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHistory.spec.js.snap +2 -0
  160. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlRow.spec.js.snap +2 -1
  161. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlScores.spec.js.snap +3 -0
  162. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlTabs.spec.js.snap +3 -0
  163. package/src/components/qualityControls/__tests__/__snapshots__/QualityControls.spec.js.snap +11 -21
  164. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsTable.spec.js.snap +2 -0
  165. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteria.spec.js.snap +1 -1
  166. package/src/components/qualityControls/__tests__/__snapshots__/ScoreCriteriaView.spec.js.snap +2 -4
  167. package/src/components/qualityControls/__tests__/qualityByControlMode.spec.js +16 -16
  168. package/src/components/qualityControls/controlProperties/{ErrorCount.js → Count.js} +7 -7
  169. package/src/components/qualityControls/controlProperties/Ratio.js +6 -8
  170. package/src/components/qualityControls/controlProperties/__tests__/{ErrorCount.spec.js → Count.spec.js} +9 -25
  171. package/src/components/qualityControls/controlProperties/__tests__/Ratio.spec.js +9 -27
  172. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/{ErrorCount.spec.js.snap → Count.spec.js.snap} +5 -5
  173. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +10 -10
  174. package/src/components/qualityControls/qualityByControlMode.js +39 -16
  175. package/src/components/qualityControls/qualityControlScoresColumns.js +1 -2
  176. package/src/components/qualityControls/scoreCriterias/Count.js +88 -0
  177. package/src/components/qualityControls/scoreCriterias/Deviation.js +2 -2
  178. package/src/components/qualityControls/scoreCriterias/ErrorCount.js +4 -4
  179. package/src/components/qualityControls/scoreCriterias/Percentage.js +2 -2
  180. package/src/components/qualityControls/scoreCriterias/__tests__/Count.spec.js +62 -0
  181. package/src/components/qualityControls/scoreCriterias/__tests__/Deviation.spec.js +0 -1
  182. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +39 -31
  183. package/src/components/qualityControls/scoreCriterias/__tests__/Percentage.spec.js +23 -19
  184. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/Count.spec.js.snap +58 -0
  185. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/ErrorCount.spec.js.snap +4 -7
  186. package/src/components/scores/MyScoreGroups.js +0 -1
  187. package/src/components/scores/QualityBar.js +24 -22
  188. package/src/components/scores/Score.js +4 -5
  189. package/src/components/scores/ScoreCrumbs.js +3 -5
  190. package/src/components/scores/ScoreDetails.js +2 -2
  191. package/src/components/scores/ScoreEvents.js +2 -2
  192. package/src/components/scores/ScoreGroup.js +5 -4
  193. package/src/components/scores/ScoreGroupBreadcrumbs.js +1 -2
  194. package/src/components/scores/ScoreGroupForm.js +2 -4
  195. package/src/components/scores/ScoreGroupLink.js +1 -2
  196. package/src/components/scores/ScoreGroupMessage.js +0 -1
  197. package/src/components/scores/ScoreGroupPopup.js +1 -1
  198. package/src/components/scores/ScoreGroupsRoutes.js +19 -0
  199. package/src/components/scores/ScoreGroupsTable.js +15 -48
  200. package/src/components/scores/ScoreRoutes.js +9 -24
  201. package/src/components/scores/ScoreStatusDecorator.js +1 -2
  202. package/src/components/scores/ScoreTabs.js +2 -2
  203. package/src/components/scores/__tests__/MyScoreGroups.spec.js +2 -3
  204. package/src/components/scores/__tests__/QualityBar.spec.js +19 -26
  205. package/src/components/scores/__tests__/Score.spec.js +2 -3
  206. package/src/components/scores/__tests__/ScoreCrumbs.spec.js +4 -5
  207. package/src/components/scores/__tests__/ScoreDetails.spec.js +4 -5
  208. package/src/components/scores/__tests__/ScoreEvents.spec.js +2 -3
  209. package/src/components/scores/__tests__/ScoreGroup.spec.js +15 -14
  210. package/src/components/scores/__tests__/ScoreGroupBreadcrumbs.spec.js +0 -1
  211. package/src/components/scores/__tests__/ScoreGroupForm.spec.js +18 -34
  212. package/src/components/scores/__tests__/ScoreGroupLink.spec.js +0 -1
  213. package/src/components/scores/__tests__/ScoreGroupMessage.spec.js +0 -1
  214. package/src/components/scores/__tests__/ScoreGroupPopup.spec.js +0 -2
  215. package/src/components/scores/__tests__/ScoreGroupsRoutes.spec.js +32 -0
  216. package/src/components/scores/__tests__/ScoreGroupsTable.spec.js +0 -1
  217. package/src/components/scores/__tests__/ScoreStatusDecorator.spec.js +0 -1
  218. package/src/components/scores/__tests__/ScoreTabs.spec.js +3 -4
  219. package/src/components/scores/__tests__/__snapshots__/MyScoreGroups.spec.js.snap +2 -0
  220. package/src/components/scores/__tests__/__snapshots__/Score.spec.js.snap +4 -0
  221. package/src/components/scores/__tests__/__snapshots__/ScoreCrumbs.spec.js.snap +2 -0
  222. package/src/components/scores/__tests__/__snapshots__/ScoreDetails.spec.js.snap +1 -0
  223. package/src/components/scores/__tests__/__snapshots__/ScoreGroup.spec.js.snap +39 -10
  224. package/src/components/scores/__tests__/__snapshots__/ScoreGroupBreadcrumbs.spec.js.snap +1 -0
  225. package/src/components/scores/__tests__/__snapshots__/ScoreGroupForm.spec.js.snap +10 -10
  226. package/src/components/scores/__tests__/__snapshots__/ScoreGroupLink.spec.js.snap +1 -0
  227. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsRoutes.spec.js.snap +19 -0
  228. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsTable.spec.js.snap +2 -0
  229. package/src/components/scores/__tests__/__snapshots__/ScoreStatusDecorator.spec.js.snap +5 -0
  230. package/src/components/scores/__tests__/__snapshots__/ScoreTabs.spec.js.snap +4 -0
  231. package/src/hooks/__tests__/useDataViews.spec.js +1 -1
  232. package/src/hooks/__tests__/useFunctions.spec.js +5 -5
  233. package/src/hooks/useDataViews.js +2 -2
  234. package/src/hooks/useExecutionGroups.js +1 -1
  235. package/src/hooks/useFunctions.js +4 -4
  236. package/src/hooks/useQualityControls.js +13 -7
  237. package/src/hooks/useScoreGroups.js +1 -1
  238. package/src/hooks/useScores.js +2 -2
  239. package/src/styles/scores.less +21 -21
  240. package/src/types.js +1 -4
@@ -1,22 +1,18 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
4
3
  import { columns } from "../QualityControlsTable";
5
4
  import QualityControlRow from "../QualityControlRow";
6
5
  import { qualityControlData } from "./__fixtures__/qualityControlHelper";
7
6
 
8
- const mockHistory = {
9
- push: jest.fn(),
10
- };
7
+ const mockNavigate = jest.fn();
11
8
 
12
- jest.mock("react-router-dom", () => ({
13
- ...jest.requireActual("react-router-dom"),
14
- useHistory: () => mockHistory,
9
+ jest.mock("react-router", () => ({
10
+ ...jest.requireActual("react-router"),
11
+ useNavigate: () => mockNavigate,
15
12
  }));
16
13
 
17
14
  const renderOpts = {
18
15
  messages,
19
- fallback: "lazy",
20
16
  };
21
17
 
22
18
  const props = {
@@ -1,8 +1,6 @@
1
- import _ from "lodash/fp";
2
- import React from "react";
3
- import { render } from "@truedat/test/render";
4
1
  import { waitFor } from "@testing-library/react";
5
2
  import userEvent from "@testing-library/user-event";
3
+ import { render, waitForLoad } from "@truedat/test/render";
6
4
  import TestFormWrapper from "@truedat/qx/components/common/TestFormWrapper";
7
5
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
8
6
  import {
@@ -12,8 +10,8 @@ import {
12
10
  import QualityControlScores from "../QualityControlScores";
13
11
  import { qualityControlData } from "./__fixtures__/qualityControlHelper";
14
12
 
15
- jest.mock("react-router-dom", () => ({
16
- ...jest.requireActual("react-router-dom"),
13
+ jest.mock("react-router", () => ({
14
+ ...jest.requireActual("react-router"),
17
15
  useParams: () => ({ id: "8", version: "1" }),
18
16
  }));
19
17
 
@@ -51,18 +49,18 @@ const context = {
51
49
  };
52
50
 
53
51
  describe("<QualityControlScores />", () => {
54
- it("matches the latest snapshot", () => {
55
- const { container } = render(
52
+ it("matches the latest snapshot", async () => {
53
+ const rendered = render(
56
54
  <TestFormWrapper context={context}>
57
55
  <QualityControlScores />
58
56
  </TestFormWrapper>,
59
57
  renderOpts
60
58
  );
61
-
62
- expect(container).toMatchSnapshot();
59
+ await waitForLoad(rendered);
60
+ expect(rendered.container).toMatchSnapshot();
63
61
  });
64
62
 
65
- it("shows a message when there are no scores", () => {
63
+ it("shows a message when there are no scores", async () => {
66
64
  useQualityControlScores.mockReturnValueOnce({
67
65
  data: { data: [] },
68
66
  loading: false,
@@ -76,17 +74,18 @@ describe("<QualityControlScores />", () => {
76
74
  mutate,
77
75
  };
78
76
 
79
- const { getByText } = render(
77
+ const rendered = render(
80
78
  <TestFormWrapper context={context}>
81
79
  <QualityControlScores />
82
80
  </TestFormWrapper>,
83
81
  renderOpts
84
82
  );
83
+ await waitForLoad(rendered);
85
84
 
86
- expect(getByText("No scores found")).toBeInTheDocument();
85
+ expect(rendered.getByText(/no scores found/i)).toBeInTheDocument();
87
86
  });
88
87
 
89
- it("does not show delete button when user does not have delete_score action", () => {
88
+ it("does not show delete button when user does not have delete_score action", async () => {
90
89
  const context = {
91
90
  qualityControl: qualityControlData(),
92
91
  loading: false,
@@ -94,14 +93,15 @@ describe("<QualityControlScores />", () => {
94
93
  mutate,
95
94
  };
96
95
 
97
- const { container } = render(
96
+ const rendered = render(
98
97
  <TestFormWrapper context={context}>
99
98
  <QualityControlScores />
100
99
  </TestFormWrapper>,
101
100
  renderOpts
102
101
  );
102
+ await waitForLoad(rendered);
103
103
 
104
- const deleteButtons = container.querySelectorAll(
104
+ const deleteButtons = rendered.container.querySelectorAll(
105
105
  ".ui.red.basic.icon.button"
106
106
  );
107
107
 
@@ -119,19 +119,23 @@ describe("<QualityControlScores />", () => {
119
119
  trigger,
120
120
  }));
121
121
 
122
- const { container, getByText } = render(
122
+ const user = userEvent.setup({ delay: null });
123
+
124
+ const rendered = render(
123
125
  <TestFormWrapper context={context}>
124
126
  <QualityControlScores />
125
127
  </TestFormWrapper>,
126
128
  renderOpts
127
129
  );
130
+ await waitForLoad(rendered);
128
131
 
129
- const deleteButtons = container.querySelectorAll(
132
+ const deleteButtons = rendered.container.querySelectorAll(
130
133
  ".ui.red.basic.icon.button"
131
134
  );
132
135
 
133
- userEvent.click(deleteButtons[0]);
134
- userEvent.click(getByText(/confirm_yes/));
136
+ await user.click(deleteButtons[0]);
137
+ await user.click(rendered.getByText(/confirm_yes/i));
138
+
135
139
  await waitFor(() => {
136
140
  expect(trigger).toHaveBeenCalled();
137
141
  });
@@ -1,10 +1,9 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
4
3
  import QualityControlTabs from "../QualityControlTabs";
5
4
 
6
- jest.mock("react-router-dom", () => ({
7
- ...jest.requireActual("react-router-dom"),
5
+ jest.mock("react-router", () => ({
6
+ ...jest.requireActual("react-router"),
8
7
  useParams: () => ({ id: "8", version: "1" }),
9
8
  useLocation: () => ({ pathname: "/qualityControls/8/version/1" }),
10
9
  }));
@@ -1,14 +1,12 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
3
- import { waitFor } from "@testing-library/react";
4
- import { within } from "@testing-library/dom";
5
1
  import userEvent from "@testing-library/user-event";
2
+ import { within } from "@testing-library/dom";
3
+ import { render, waitForLoad } from "@truedat/test/render";
4
+ import { act } from "@testing-library/react";
6
5
  import { singleTemplateMock } from "@truedat/test/mocks";
7
6
  import SearchContext from "@truedat/core/search/SearchContext";
8
7
  import { useScoreGroupCreate } from "@truedat/qx/hooks/useScoreGroups";
9
- import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
10
- import QualityControls from "../QualityControls";
11
8
  import { qualityControlData } from "./__fixtures__/qualityControlHelper";
9
+ import QualityControls from "../QualityControls";
12
10
 
13
11
  jest.mock("@truedat/core/hooks/useAuthorizedAction", () => ({
14
12
  ...jest.requireActual("@truedat/core/hooks/useAuthorizedAction"),
@@ -24,8 +22,6 @@ jest.mock("@truedat/qx/hooks/useScoreGroups", () => ({
24
22
 
25
23
  const renderOpts = {
26
24
  mocks: [singleTemplateMock({ scope: "qxe", domainIds: undefined })],
27
- messages,
28
- fallback: "loading",
29
25
  };
30
26
 
31
27
  const searchProps = {
@@ -43,18 +39,19 @@ const searchProps = {
43
39
  };
44
40
 
45
41
  describe("<QualityControls />", () => {
46
- it("matches the latest snapshot", () => {
47
- const { container } = render(
48
- <SearchContext.Provider value={searchProps}>
42
+ it("matches the latest snapshot", async () => {
43
+ const rendered = render(
44
+ <SearchContext value={searchProps}>
49
45
  <QualityControls />
50
- </SearchContext.Provider>,
46
+ </SearchContext>,
51
47
  renderOpts
52
48
  );
53
-
54
- expect(container).toMatchSnapshot();
49
+ await waitForLoad(rendered);
50
+ expect(rendered.container).toMatchSnapshot();
55
51
  });
56
52
 
57
53
  it("activate/desactivate execution", async () => {
54
+ const user = userEvent.setup({ delay: null });
58
55
  const toggleHiddenFilterValue = jest.fn();
59
56
  const removeHiddenFilter = jest.fn();
60
57
 
@@ -63,53 +60,57 @@ describe("<QualityControls />", () => {
63
60
  toggleHiddenFilterValue,
64
61
  removeHiddenFilter,
65
62
  };
66
- const { container, getByRole } = render(
67
- <SearchContext.Provider value={thisSearchProps}>
63
+ const rendered = render(
64
+ <SearchContext value={thisSearchProps}>
68
65
  <QualityControls />
69
- </SearchContext.Provider>,
66
+ </SearchContext>,
70
67
  renderOpts
71
68
  );
69
+ await waitForLoad(rendered);
72
70
 
73
71
  expect(
74
- getByRole("button", { name: /Execute quality control/i })
72
+ rendered.getByRole("button", { name: /actions.do_execution/i })
75
73
  ).toBeDisabled();
76
74
 
77
- userEvent.click(container.querySelector("#execute_checkbox"));
75
+ await user.click(rendered.container.querySelector("#execute_checkbox"));
78
76
 
79
77
  expect(toggleHiddenFilterValue).toHaveBeenCalledWith({
80
78
  filter: "for_execution",
81
79
  value: true,
82
80
  });
83
81
  expect(
84
- getByRole("button", { name: /Execute quality control/i })
82
+ rendered.getByRole("button", { name: /actions.do_execution/i })
85
83
  ).toBeEnabled();
86
84
 
87
85
  expect(
88
- container.querySelector("#row-checkbox-1").parentElement
86
+ rendered.container.querySelector("#row-checkbox-1").parentElement
89
87
  ).not.toHaveClass("checked");
90
88
 
91
- userEvent.click(container.querySelector("#selectQualityControl"));
89
+ await user.click(rendered.container.querySelector("#selectQualityControl"));
92
90
 
93
91
  expect(
94
- container.querySelector("#row-checkbox-1").parentElement
92
+ rendered.container.querySelector("#row-checkbox-1").parentElement
95
93
  ).toHaveClass("checked");
96
94
 
97
- userEvent.click(container.querySelector("#row-checkbox-1"));
95
+ await user.click(rendered.container.querySelector("#row-checkbox-1"));
98
96
 
99
97
  expect(
100
- container.querySelector("#row-checkbox-1").parentElement
98
+ rendered.container.querySelector("#row-checkbox-1").parentElement
101
99
  ).not.toHaveClass("checked");
102
100
 
103
- userEvent.click(container.querySelector("#execute_checkbox"));
101
+ await user.click(rendered.container.querySelector("#execute_checkbox"));
104
102
 
105
103
  expect(removeHiddenFilter).toHaveBeenCalledWith({
106
104
  filter: "for_execution",
107
105
  });
108
106
 
109
- expect(container.querySelector("#row-checkbox-1")).not.toBeInTheDocument();
107
+ expect(
108
+ rendered.container.querySelector("#row-checkbox-1")
109
+ ).not.toBeInTheDocument();
110
110
  });
111
111
 
112
112
  it("submit execution with search", async () => {
113
+ const user = userEvent.setup({ delay: null });
113
114
  const trigger = jest.fn(() =>
114
115
  Promise.resolve({ data: { data: { id: "9" } } })
115
116
  );
@@ -118,28 +119,32 @@ describe("<QualityControls />", () => {
118
119
  loading: false,
119
120
  }));
120
121
 
121
- const { container, getByRole, queryByText } = render(
122
- <SearchContext.Provider value={searchProps}>
122
+ const rendered = render(
123
+ <SearchContext value={searchProps}>
123
124
  <QualityControls />
124
- </SearchContext.Provider>,
125
+ </SearchContext>,
125
126
  renderOpts
126
127
  );
128
+ await waitForLoad(rendered);
127
129
 
128
- userEvent.click(container.querySelector("#execute_checkbox"));
130
+ await user.click(rendered.container.querySelector("#execute_checkbox"));
129
131
 
130
132
  expect(
131
- getByRole("button", { name: /Execute quality control/i })
133
+ rendered.getByRole("button", { name: /actions.do_execution/i })
132
134
  ).toBeEnabled();
133
135
 
134
- userEvent.click(getByRole("button", { name: /Execute quality control/i }));
136
+ await act(async () => {
137
+ await user.click(
138
+ rendered.getByRole("button", { name: /actions.do_execution/i })
139
+ );
140
+ });
135
141
 
136
- await waitFor(() =>
137
- expect(queryByText(/loading/i)).not.toBeInTheDocument()
138
- );
139
- await waitFor(() => expect(queryByText(/loader/i)).not.toBeInTheDocument());
142
+ await waitForLoad(rendered);
140
143
 
141
- const modal = queryByText(/Quality controls execution/i).parentElement;
142
- userEvent.click(within(modal).getByRole("button", { name: /Create/i }));
144
+ const modal = rendered.getByText(
145
+ /execution.confirmation.header/i
146
+ ).parentElement;
147
+ await user.click(within(modal).getByRole("button", { name: /create/i }));
143
148
 
144
149
  expect(trigger).toHaveBeenCalledWith({
145
150
  score_group: {
@@ -153,6 +158,8 @@ describe("<QualityControls />", () => {
153
158
  });
154
159
 
155
160
  it("submit execution with select", async () => {
161
+ const user = userEvent.setup({ delay: null });
162
+
156
163
  const trigger = jest.fn(() =>
157
164
  Promise.resolve({ data: { data: { id: "9" } } })
158
165
  );
@@ -161,34 +168,43 @@ describe("<QualityControls />", () => {
161
168
  loading: false,
162
169
  }));
163
170
 
164
- const { container, getByRole, queryByText } = render(
165
- <SearchContext.Provider value={searchProps}>
171
+ const rendered = render(
172
+ <SearchContext value={searchProps}>
166
173
  <QualityControls />
167
- </SearchContext.Provider>,
174
+ </SearchContext>,
168
175
  renderOpts
169
176
  );
177
+ await waitForLoad(rendered);
170
178
 
171
- userEvent.click(container.querySelector("#execute_checkbox"));
179
+ await user.click(rendered.container.querySelector("#execute_checkbox"));
172
180
 
173
181
  expect(
174
- getByRole("button", { name: /Execute quality control/i })
182
+ rendered.getByRole("button", { name: /actions.do_execution/i })
175
183
  ).toBeEnabled();
176
184
 
177
- userEvent.click(container.querySelector("#selectQualityControl"));
185
+ await user.click(rendered.container.querySelector("#selectQualityControl"));
178
186
 
179
187
  expect(
180
- container.querySelector("#row-checkbox-1").parentElement
188
+ rendered.container.querySelector("#row-checkbox-1").parentElement
181
189
  ).toHaveClass("checked");
182
190
 
183
- userEvent.click(getByRole("button", { name: /Execute quality control/i }));
191
+ await act(async () => {
192
+ await user.click(
193
+ rendered.getByRole("button", { name: /actions.do_execution/i })
194
+ );
195
+ });
196
+
197
+ await waitForLoad(rendered);
184
198
 
185
- await waitFor(() =>
186
- expect(queryByText(/loading/i)).not.toBeInTheDocument()
187
- );
188
- await waitFor(() => expect(queryByText(/loader/i)).not.toBeInTheDocument());
199
+ const modal = rendered.getByText(
200
+ /execution.confirmation.header/i
201
+ ).parentElement;
189
202
 
190
- const modal = queryByText(/Quality controls execution/i).parentElement;
191
- userEvent.click(within(modal).getByRole("button", { name: /Create/i }));
203
+ await user.click(
204
+ within(modal).getByRole("button", {
205
+ name: "actions.create",
206
+ })
207
+ );
192
208
 
193
209
  expect(trigger).toHaveBeenCalledWith({
194
210
  score_group: {
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { SearchContextProvider } from "@truedat/core/search/SearchContext";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { SearchContextProvider } from "@truedat/core/search/SearchContext";
4
3
  import QualityControlsPagination from "../QualityControlsPagination";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
4
3
  import SearchContext from "@truedat/core/search/SearchContext";
@@ -30,9 +29,9 @@ const props = {
30
29
  describe("<QualityControlsTable />", () => {
31
30
  it("matches the latest snapshot", () => {
32
31
  const { container } = render(
33
- <SearchContext.Provider value={searchProps}>
32
+ <SearchContext value={searchProps}>
34
33
  <QualityControlsTable {...props} />
35
- </SearchContext.Provider>,
34
+ </SearchContext>,
36
35
  renderOpts
37
36
  );
38
37
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import TestFormWrapper from "@truedat/qx/components/common/TestFormWrapper";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -21,9 +20,9 @@ describe("<ScoreCriteria />", () => {
21
20
  expect(container).toMatchSnapshot();
22
21
  });
23
22
 
24
- it("matches the latest snapshot for error_count", () => {
23
+ it("matches the latest snapshot for count", () => {
25
24
  const defaultValues = {
26
- control_mode: "error_count",
25
+ control_mode: "count",
27
26
  };
28
27
  const { container } = render(
29
28
  <TestFormWrapper defaultValues={defaultValues}>
@@ -63,7 +62,7 @@ describe("<ScoreCriteria />", () => {
63
62
  [
64
63
  { controlMode: "deviation", expectedValue: { goal: null, maximum: null } },
65
64
  {
66
- controlMode: "error_count",
65
+ controlMode: "count",
67
66
  expectedValue: { goal: null, maximum: null },
68
67
  },
69
68
  { controlMode: "percentage", expectedValue: { goal: null, minimum: null } },
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
4
3
  import ScoreCriteriaView from "../ScoreCriteriaView";
@@ -32,9 +31,25 @@ describe("<ScoreCriteriaView />", () => {
32
31
  expect(queryByText(/5/i)).toBeInTheDocument();
33
32
  });
34
33
 
35
- it("view for error count", () => {
34
+ it("view for error_count", () => {
36
35
  const qc = qualityControlData({
37
36
  control_mode: "error_count",
37
+ score_criteria: {
38
+ goal: 5,
39
+ maximum: 30,
40
+ },
41
+ });
42
+ const { queryByText } = render(
43
+ <ScoreCriteriaView qualityControl={qc} />,
44
+ renderOpts
45
+ );
46
+
47
+ expect(queryByText(/5/i)).toBeInTheDocument();
48
+ });
49
+
50
+ it("view for count", () => {
51
+ const qc = qualityControlData({
52
+ control_mode: "count",
38
53
  score_criteria: {
39
54
  goal: 15,
40
55
  maximum: 40,
@@ -49,7 +64,7 @@ describe("<ScoreCriteriaView />", () => {
49
64
 
50
65
  it("view for empty score_criteria", () => {
51
66
  const qc = qualityControlData({
52
- control_mode: "error_count",
67
+ control_mode: "count",
53
68
  score_criteria: undefined,
54
69
  });
55
70
  const { queryByText } = render(
@@ -20,7 +20,7 @@ export const domains = [
20
20
 
21
21
  const qualityControl = {
22
22
  active: true,
23
- id: 8,
23
+ id: "8",
24
24
  name: "test",
25
25
  updated_at: "2024-11-28T12:14:57.004822Z",
26
26
  status: "draft",
@@ -156,7 +156,7 @@ const qualityControl = {
156
156
  type: "data_structure",
157
157
  },
158
158
  },
159
- control_mode: "error_count",
159
+ control_mode: "count",
160
160
  dynamic_content: {
161
161
  control_de_calidad: {
162
162
  origin: "user",
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<ControlProperties /> matches the latest snapshot with error count 1`] = `
3
+ exports[`<ControlProperties /> matches the latest snapshot with count 1`] = `
4
4
  <div>
5
5
  <div
6
6
  class="ui segment"
@@ -1,6 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<ControlPropertiesView /> matches the latest snapshot for empty control properties 1`] = `
3
+ exports[`<ControlPropertiesView /> matches the latest snapshot for count 1`] = `
4
4
  <div>
5
5
  <h3
6
6
  class="ui header"
@@ -18,12 +18,42 @@ exports[`<ControlPropertiesView /> matches the latest snapshot for empty control
18
18
  <div
19
19
  class="ui segment"
20
20
  >
21
- Empty control properties
21
+ <div
22
+ class="ui list"
23
+ role="list"
24
+ >
25
+ <div
26
+ class="item"
27
+ role="listitem"
28
+ >
29
+ <div
30
+ class="header"
31
+ >
32
+ Dataset
33
+ </div>
34
+ <div
35
+ class="content"
36
+ >
37
+ <div
38
+ class="description"
39
+ >
40
+ <div
41
+ class="ui horizontal label"
42
+ >
43
+ Data Structure
44
+ </div>
45
+ <div
46
+ class="ui blue label"
47
+ />
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </div>
22
52
  </div>
23
53
  </div>
24
54
  `;
25
55
 
26
- exports[`<ControlPropertiesView /> matches the latest snapshot for empty errors_resource 1`] = `
56
+ exports[`<ControlPropertiesView /> matches the latest snapshot for empty control properties 1`] = `
27
57
  <div>
28
58
  <h3
29
59
  class="ui header"
@@ -41,31 +71,12 @@ exports[`<ControlPropertiesView /> matches the latest snapshot for empty errors_
41
71
  <div
42
72
  class="ui segment"
43
73
  >
44
- <div
45
- class="ui list"
46
- role="list"
47
- >
48
- <div
49
- class="item"
50
- role="listitem"
51
- >
52
- <div
53
- class="header"
54
- >
55
- Dataset
56
- </div>
57
- <div
58
- class="content"
59
- >
60
- Empty Dataset
61
- </div>
62
- </div>
63
- </div>
74
+ Empty control properties
64
75
  </div>
65
76
  </div>
66
77
  `;
67
78
 
68
- exports[`<ControlPropertiesView /> matches the latest snapshot for empty ratio validation and resource 1`] = `
79
+ exports[`<ControlPropertiesView /> matches the latest snapshot for empty errors_resource 1`] = `
69
80
  <div>
70
81
  <h3
71
82
  class="ui header"
@@ -99,22 +110,7 @@ exports[`<ControlPropertiesView /> matches the latest snapshot for empty ratio v
99
110
  <div
100
111
  class="content"
101
112
  >
102
- Empty resource
103
- </div>
104
- </div>
105
- <div
106
- class="item"
107
- role="listitem"
108
- >
109
- <div
110
- class="header"
111
- >
112
- Validation
113
- </div>
114
- <div
115
- class="content"
116
- >
117
- Empty validation
113
+ Empty Dataset
118
114
  </div>
119
115
  </div>
120
116
  </div>
@@ -122,7 +118,7 @@ exports[`<ControlPropertiesView /> matches the latest snapshot for empty ratio v
122
118
  </div>
123
119
  `;
124
120
 
125
- exports[`<ControlPropertiesView /> matches the latest snapshot for error count 1`] = `
121
+ exports[`<ControlPropertiesView /> matches the latest snapshot for empty ratio validation and resource 1`] = `
126
122
  <div>
127
123
  <h3
128
124
  class="ui header"
@@ -156,18 +152,22 @@ exports[`<ControlPropertiesView /> matches the latest snapshot for error count 1
156
152
  <div
157
153
  class="content"
158
154
  >
159
- <div
160
- class="description"
161
- >
162
- <div
163
- class="ui horizontal label"
164
- >
165
- Data Structure
166
- </div>
167
- <div
168
- class="ui blue label"
169
- />
170
- </div>
155
+ Empty resource
156
+ </div>
157
+ </div>
158
+ <div
159
+ class="item"
160
+ role="listitem"
161
+ >
162
+ <div
163
+ class="header"
164
+ >
165
+ Validation
166
+ </div>
167
+ <div
168
+ class="content"
169
+ >
170
+ Empty validation
171
171
  </div>
172
172
  </div>
173
173
  </div>