@truedat/qx 7.5.9 → 7.5.11

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 (229) 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__/__snapshots__/QxRoutes.spec.js.snap +60 -0
  5. package/src/components/common/ClauseViewer.js +6 -6
  6. package/src/components/common/DescriptionInput.js +0 -1
  7. package/src/components/common/ResourceSelector.js +2 -3
  8. package/src/components/common/TestFormWrapper.js +2 -13
  9. package/src/components/common/TypeSelector.js +0 -1
  10. package/src/components/common/__tests__/DescriptionInput.spec.js +12 -21
  11. package/src/components/common/__tests__/ResourceSelector.spec.js +42 -87
  12. package/src/components/common/__tests__/TypeSelector.spec.js +0 -1
  13. package/src/components/common/__tests__/__snapshots__/ResourceSelector.spec.js.snap +32 -22
  14. package/src/components/common/expressions/Clauses.js +5 -6
  15. package/src/components/common/expressions/Condition.js +8 -9
  16. package/src/components/common/expressions/ConstantSelector.js +2 -2
  17. package/src/components/common/expressions/Expression.js +2 -2
  18. package/src/components/common/expressions/FieldSelector.js +2 -2
  19. package/src/components/common/expressions/FunctionArgs.js +5 -6
  20. package/src/components/common/expressions/FunctionSelector.js +2 -2
  21. package/src/components/common/expressions/ParamSelector.js +2 -2
  22. package/src/components/common/expressions/ShapeSelector.js +7 -16
  23. package/src/components/common/expressions/__tests__/Clauses.spec.js +10 -9
  24. package/src/components/common/expressions/__tests__/Condition.spec.js +6 -26
  25. package/src/components/common/expressions/__tests__/ConstantSelector.spec.js +14 -30
  26. package/src/components/common/expressions/__tests__/Expression.spec.js +44 -51
  27. package/src/components/common/expressions/__tests__/FieldSelector.spec.js +2 -7
  28. package/src/components/common/expressions/__tests__/FunctionArgs.spec.js +18 -44
  29. package/src/components/common/expressions/__tests__/FunctionSelector.spec.js +19 -27
  30. package/src/components/common/expressions/__tests__/ParamSelector.spec.js +28 -58
  31. package/src/components/common/expressions/__tests__/ShapeSelector.spec.js +42 -43
  32. package/src/components/common/expressions/__tests__/__snapshots__/Condition.spec.js.snap +6 -6
  33. package/src/components/common/expressions/__tests__/__snapshots__/ConstantSelector.spec.js.snap +6 -7
  34. package/src/components/common/expressions/__tests__/__snapshots__/Expression.spec.js.snap +20 -20
  35. package/src/components/common/expressions/__tests__/__snapshots__/FunctionArgs.spec.js.snap +8 -9
  36. package/src/components/common/expressions/__tests__/__snapshots__/FunctionSelector.spec.js.snap +670 -8
  37. package/src/components/common/expressions/__tests__/__snapshots__/ParamSelector.spec.js.snap +5 -5
  38. package/src/components/common/expressions/__tests__/__snapshots__/ShapeSelector.spec.js.snap +9 -9
  39. package/src/components/common/expressions/__tests__/useWatchParams.spec.js +1 -4
  40. package/src/components/common/expressions/constantInputs/AnySelector.js +5 -6
  41. package/src/components/common/expressions/constantInputs/BooleanSelector.js +2 -2
  42. package/src/components/common/expressions/constantInputs/DefaultSelector.js +2 -2
  43. package/src/components/common/expressions/constantInputs/__tests__/AnySelector.spec.js +16 -37
  44. package/src/components/common/expressions/constantInputs/__tests__/BooleanSelector.spec.js +14 -17
  45. package/src/components/common/expressions/constantInputs/__tests__/DefaultSelector.spec.js +12 -27
  46. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/AnySelector.spec.js.snap +11 -11
  47. package/src/components/common/expressions/constantInputs/__tests__/__snapshots__/DefaultSelector.spec.js.snap +0 -1
  48. package/src/components/common/resourceSelectors/DataStructureSelector.js +2 -2
  49. package/src/components/common/resourceSelectors/DataViewSelector.js +2 -2
  50. package/src/components/common/resourceSelectors/ReferenceDatasetSelector.js +2 -2
  51. package/src/components/common/resourceSelectors/__tests__/DataStructureSelector.spec.js +5 -29
  52. package/src/components/common/resourceSelectors/__tests__/DataViewSelector.spec.js +23 -25
  53. package/src/components/common/resourceSelectors/__tests__/ReferenceDatasetSelector.spec.js +21 -32
  54. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataStructureSelector.spec.js.snap +3 -4
  55. package/src/components/common/resourceSelectors/__tests__/__snapshots__/DataViewSelector.spec.js.snap +1 -1
  56. package/src/components/common/resourceSelectors/__tests__/__snapshots__/ReferenceDatasetSelector.spec.js.snap +1 -1
  57. package/src/components/dataViews/DataViewEditor.js +5 -6
  58. package/src/components/dataViews/DataViewSelect.js +4 -5
  59. package/src/components/dataViews/DataViews.js +1 -2
  60. package/src/components/dataViews/Queryable.js +4 -4
  61. package/src/components/dataViews/Queryables.js +0 -1
  62. package/src/components/dataViews/__tests__/DataViewEditor.spec.js +36 -111
  63. package/src/components/dataViews/__tests__/DataViewSelect.spec.js +0 -1
  64. package/src/components/dataViews/__tests__/DataViews.spec.js +15 -16
  65. package/src/components/dataViews/__tests__/Queryable.spec.js +0 -1
  66. package/src/components/dataViews/__tests__/Queryables.spec.js +35 -74
  67. package/src/components/dataViews/__tests__/__snapshots__/DataViewEditor.spec.js.snap +61 -55
  68. package/src/components/dataViews/__tests__/__snapshots__/DataViews.spec.js.snap +5 -5
  69. package/src/components/dataViews/__tests__/__snapshots__/Queryables.spec.js.snap +59 -59
  70. package/src/components/dataViews/queryableProperties/From.js +4 -4
  71. package/src/components/dataViews/queryableProperties/GroupBy.js +6 -6
  72. package/src/components/dataViews/queryableProperties/Join.js +6 -6
  73. package/src/components/dataViews/queryableProperties/JoinTypeIcon.js +8 -9
  74. package/src/components/dataViews/queryableProperties/Select.js +4 -5
  75. package/src/components/dataViews/queryableProperties/SelectField.js +4 -4
  76. package/src/components/dataViews/queryableProperties/Where.js +4 -4
  77. package/src/components/dataViews/queryableProperties/__tests__/From.spec.js +0 -1
  78. package/src/components/dataViews/queryableProperties/__tests__/GroupBy.spec.js +16 -42
  79. package/src/components/dataViews/queryableProperties/__tests__/Join.spec.js +6 -29
  80. package/src/components/dataViews/queryableProperties/__tests__/JoinTypeIcon.spec.js +0 -1
  81. package/src/components/dataViews/queryableProperties/__tests__/Select.spec.js +26 -50
  82. package/src/components/dataViews/queryableProperties/__tests__/SelectField.spec.js +22 -42
  83. package/src/components/dataViews/queryableProperties/__tests__/Where.spec.js +6 -17
  84. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/GroupBy.spec.js.snap +309 -9
  85. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Join.spec.js.snap +12 -12
  86. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Select.spec.js.snap +192 -18
  87. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/SelectField.spec.js.snap +6 -8
  88. package/src/components/dataViews/queryableProperties/__tests__/__snapshots__/Where.spec.js.snap +2 -2
  89. package/src/components/functions/FunctionEditor.js +3 -5
  90. package/src/components/functions/FunctionParams.js +2 -3
  91. package/src/components/functions/Functions.js +3 -4
  92. package/src/components/functions/__tests__/FunctionEditor.spec.js +61 -57
  93. package/src/components/functions/__tests__/FunctionParams.spec.js +50 -47
  94. package/src/components/functions/__tests__/Functions.spec.js +5 -12
  95. package/src/components/functions/__tests__/__snapshots__/FunctionParams.spec.js.snap +11 -11
  96. package/src/components/functions/__tests__/__snapshots__/Functions.spec.js.snap +4 -5
  97. package/src/components/qualityControls/ControlProperties.js +4 -4
  98. package/src/components/qualityControls/ControlPropertiesView.js +0 -1
  99. package/src/components/qualityControls/EditQualityControl.js +5 -5
  100. package/src/components/qualityControls/IconPopup.js +0 -1
  101. package/src/components/qualityControls/NewDraftQualityControl.js +8 -6
  102. package/src/components/qualityControls/NewQualityControl.js +5 -6
  103. package/src/components/qualityControls/QualityBadge.js +29 -30
  104. package/src/components/qualityControls/QualityControl.js +4 -7
  105. package/src/components/qualityControls/QualityControlActions.js +7 -7
  106. package/src/components/qualityControls/QualityControlCrumbs.js +1 -3
  107. package/src/components/qualityControls/QualityControlEditor.js +5 -11
  108. package/src/components/qualityControls/QualityControlHeader.js +4 -6
  109. package/src/components/qualityControls/QualityControlHistory.js +3 -3
  110. package/src/components/qualityControls/QualityControlManageDomain.js +2 -2
  111. package/src/components/qualityControls/QualityControlQueryModal.js +1 -1
  112. package/src/components/qualityControls/QualityControlRoutes.js +27 -54
  113. package/src/components/qualityControls/QualityControlRow.js +0 -2
  114. package/src/components/qualityControls/QualityControlScores.js +7 -5
  115. package/src/components/qualityControls/QualityControlTabs.js +2 -2
  116. package/src/components/qualityControls/QualityControls.js +10 -8
  117. package/src/components/qualityControls/QualityControlsLabelResults.js +0 -2
  118. package/src/components/qualityControls/QualityControlsPagination.js +0 -1
  119. package/src/components/qualityControls/QualityControlsTable.js +1 -2
  120. package/src/components/qualityControls/ScoreCriteria.js +4 -4
  121. package/src/components/qualityControls/ScoreCriteriaView.js +0 -1
  122. package/src/components/qualityControls/__tests__/ControlProperties.spec.js +10 -15
  123. package/src/components/qualityControls/__tests__/ControlPropertiesView.spec.js +0 -1
  124. package/src/components/qualityControls/__tests__/EditQualityControl.spec.js +28 -70
  125. package/src/components/qualityControls/__tests__/IconPopup.spec.js +10 -11
  126. package/src/components/qualityControls/__tests__/NewDraftQualityControl.spec.js +33 -70
  127. package/src/components/qualityControls/__tests__/NewQualityControl.spec.js +81 -113
  128. package/src/components/qualityControls/__tests__/QualityBadge.spec.js +50 -58
  129. package/src/components/qualityControls/__tests__/QualityControl.spec.js +19 -31
  130. package/src/components/qualityControls/__tests__/QualityControlActions.spec.js +49 -46
  131. package/src/components/qualityControls/__tests__/QualityControlCrumbs.spec.js +0 -1
  132. package/src/components/qualityControls/__tests__/QualityControlEditor.spec.js +68 -107
  133. package/src/components/qualityControls/__tests__/QualityControlHeader.spec.js +22 -25
  134. package/src/components/qualityControls/__tests__/QualityControlHistory.spec.js +6 -6
  135. package/src/components/qualityControls/__tests__/QualityControlManageDomain.spec.js +0 -1
  136. package/src/components/qualityControls/__tests__/QualityControlQueryModal.spec.js +12 -11
  137. package/src/components/qualityControls/__tests__/QualityControlRow.spec.js +4 -8
  138. package/src/components/qualityControls/__tests__/QualityControlScores.spec.js +23 -19
  139. package/src/components/qualityControls/__tests__/QualityControlTabs.spec.js +2 -3
  140. package/src/components/qualityControls/__tests__/QualityControls.spec.js +69 -53
  141. package/src/components/qualityControls/__tests__/QualityControlsLabelResults.spec.js +0 -1
  142. package/src/components/qualityControls/__tests__/QualityControlsPagination.spec.js +0 -1
  143. package/src/components/qualityControls/__tests__/QualityControlsTable.spec.js +2 -3
  144. package/src/components/qualityControls/__tests__/ScoreCriteria.spec.js +0 -1
  145. package/src/components/qualityControls/__tests__/ScoreCriteriaView.spec.js +0 -1
  146. package/src/components/qualityControls/__tests__/__fixtures__/qualityControlHelper.js +1 -1
  147. package/src/components/qualityControls/__tests__/__snapshots__/EditQualityControl.spec.js.snap +32 -34
  148. package/src/components/qualityControls/__tests__/__snapshots__/NewDraftQualityControl.spec.js.snap +31 -33
  149. package/src/components/qualityControls/__tests__/__snapshots__/NewQualityControl.spec.js.snap +17 -19
  150. package/src/components/qualityControls/__tests__/__snapshots__/QualityControl.spec.js.snap +9 -15
  151. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlActions.spec.js.snap +5 -4
  152. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlCrumbs.spec.js.snap +1 -0
  153. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlEditor.spec.js.snap +0 -3
  154. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHeader.spec.js.snap +16 -11
  155. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlHistory.spec.js.snap +2 -0
  156. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlRow.spec.js.snap +2 -1
  157. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlScores.spec.js.snap +3 -0
  158. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlTabs.spec.js.snap +3 -0
  159. package/src/components/qualityControls/__tests__/__snapshots__/QualityControls.spec.js.snap +11 -21
  160. package/src/components/qualityControls/__tests__/__snapshots__/QualityControlsTable.spec.js.snap +2 -0
  161. package/src/components/qualityControls/controlProperties/Count.js +5 -5
  162. package/src/components/qualityControls/controlProperties/Ratio.js +6 -8
  163. package/src/components/qualityControls/controlProperties/__tests__/Count.spec.js +6 -11
  164. package/src/components/qualityControls/controlProperties/__tests__/Ratio.spec.js +9 -27
  165. package/src/components/qualityControls/controlProperties/__tests__/__snapshots__/Ratio.spec.js.snap +10 -10
  166. package/src/components/qualityControls/qualityByControlMode.js +14 -14
  167. package/src/components/qualityControls/qualityControlScoresColumns.js +1 -2
  168. package/src/components/qualityControls/scoreCriterias/Deviation.js +2 -2
  169. package/src/components/qualityControls/scoreCriterias/ErrorCount.js +3 -4
  170. package/src/components/qualityControls/scoreCriterias/Percentage.js +2 -2
  171. package/src/components/qualityControls/scoreCriterias/__tests__/Deviation.spec.js +0 -1
  172. package/src/components/qualityControls/scoreCriterias/__tests__/ErrorCount.spec.js +39 -43
  173. package/src/components/qualityControls/scoreCriterias/__tests__/Percentage.spec.js +23 -19
  174. package/src/components/qualityControls/scoreCriterias/__tests__/__snapshots__/ErrorCount.spec.js.snap +4 -7
  175. package/src/components/scores/MyScoreGroups.js +0 -1
  176. package/src/components/scores/QualityBar.js +24 -22
  177. package/src/components/scores/Score.js +4 -5
  178. package/src/components/scores/ScoreCrumbs.js +3 -5
  179. package/src/components/scores/ScoreDetails.js +2 -2
  180. package/src/components/scores/ScoreEvents.js +2 -2
  181. package/src/components/scores/ScoreGroup.js +5 -4
  182. package/src/components/scores/ScoreGroupBreadcrumbs.js +1 -2
  183. package/src/components/scores/ScoreGroupForm.js +2 -4
  184. package/src/components/scores/ScoreGroupLink.js +1 -2
  185. package/src/components/scores/ScoreGroupMessage.js +0 -1
  186. package/src/components/scores/ScoreGroupPopup.js +1 -1
  187. package/src/components/scores/ScoreGroupsRoutes.js +19 -0
  188. package/src/components/scores/ScoreGroupsTable.js +15 -48
  189. package/src/components/scores/ScoreRoutes.js +9 -24
  190. package/src/components/scores/ScoreStatusDecorator.js +1 -2
  191. package/src/components/scores/ScoreTabs.js +2 -2
  192. package/src/components/scores/__tests__/MyScoreGroups.spec.js +0 -1
  193. package/src/components/scores/__tests__/QualityBar.spec.js +19 -26
  194. package/src/components/scores/__tests__/Score.spec.js +2 -3
  195. package/src/components/scores/__tests__/ScoreCrumbs.spec.js +4 -5
  196. package/src/components/scores/__tests__/ScoreDetails.spec.js +4 -5
  197. package/src/components/scores/__tests__/ScoreEvents.spec.js +2 -3
  198. package/src/components/scores/__tests__/ScoreGroup.spec.js +15 -14
  199. package/src/components/scores/__tests__/ScoreGroupBreadcrumbs.spec.js +0 -1
  200. package/src/components/scores/__tests__/ScoreGroupForm.spec.js +18 -34
  201. package/src/components/scores/__tests__/ScoreGroupLink.spec.js +0 -1
  202. package/src/components/scores/__tests__/ScoreGroupMessage.spec.js +0 -1
  203. package/src/components/scores/__tests__/ScoreGroupPopup.spec.js +0 -2
  204. package/src/components/scores/__tests__/ScoreGroupsRoutes.spec.js +32 -0
  205. package/src/components/scores/__tests__/ScoreGroupsTable.spec.js +0 -1
  206. package/src/components/scores/__tests__/ScoreStatusDecorator.spec.js +0 -1
  207. package/src/components/scores/__tests__/ScoreTabs.spec.js +3 -4
  208. package/src/components/scores/__tests__/__snapshots__/MyScoreGroups.spec.js.snap +2 -0
  209. package/src/components/scores/__tests__/__snapshots__/Score.spec.js.snap +4 -0
  210. package/src/components/scores/__tests__/__snapshots__/ScoreCrumbs.spec.js.snap +2 -0
  211. package/src/components/scores/__tests__/__snapshots__/ScoreDetails.spec.js.snap +1 -0
  212. package/src/components/scores/__tests__/__snapshots__/ScoreGroup.spec.js.snap +39 -10
  213. package/src/components/scores/__tests__/__snapshots__/ScoreGroupBreadcrumbs.spec.js.snap +1 -0
  214. package/src/components/scores/__tests__/__snapshots__/ScoreGroupForm.spec.js.snap +10 -10
  215. package/src/components/scores/__tests__/__snapshots__/ScoreGroupLink.spec.js.snap +1 -0
  216. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsRoutes.spec.js.snap +19 -0
  217. package/src/components/scores/__tests__/__snapshots__/ScoreGroupsTable.spec.js.snap +2 -0
  218. package/src/components/scores/__tests__/__snapshots__/ScoreStatusDecorator.spec.js.snap +5 -0
  219. package/src/components/scores/__tests__/__snapshots__/ScoreTabs.spec.js.snap +4 -0
  220. package/src/hooks/__tests__/useDataViews.spec.js +1 -1
  221. package/src/hooks/__tests__/useFunctions.spec.js +5 -5
  222. package/src/hooks/useDataViews.js +2 -2
  223. package/src/hooks/useExecutionGroups.js +1 -1
  224. package/src/hooks/useFunctions.js +4 -4
  225. package/src/hooks/useQualityControls.js +13 -7
  226. package/src/hooks/useScoreGroups.js +1 -1
  227. package/src/hooks/useScores.js +2 -2
  228. package/src/styles/scores.less +21 -21
  229. package/src/types.js +1 -4
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { FormattedMessage } from "react-intl";
5
4
  import { Table, Header, Icon, Label } from "semantic-ui-react";
@@ -11,13 +10,9 @@ import Pagination from "@truedat/core/search/Pagination";
11
10
  import ScoreGroupLink from "./ScoreGroupLink";
12
11
 
13
12
  export const HeaderRow = ({ columns }) => (
14
- <Table.Row>
15
- {columns.map(({ name: id, textAlign }, i) => (
16
- <Table.HeaderCell key={i} textAlign={textAlign}>
17
- <FormattedMessage id={id} defaultMessage={id} />
18
- </Table.HeaderCell>
19
- ))}
20
- </Table.Row>
13
+ <Table.Row>{columns.map(({ name: id, textAlign }, i) => (
14
+ <Table.HeaderCell key={i} textAlign={textAlign}><FormattedMessage id={id} defaultMessage={id} /></Table.HeaderCell>
15
+ ))}</Table.Row>
21
16
  );
22
17
 
23
18
  HeaderRow.propTypes = {
@@ -25,15 +20,13 @@ HeaderRow.propTypes = {
25
20
  };
26
21
 
27
22
  export const ScoreGroupRow = ({ columns, ...props }) => (
28
- <Table.Row>
29
- {columns.map((col, i) => (
23
+ <Table.Row>{columns.map((col, i) => (
30
24
  <Table.Cell
31
25
  key={i}
32
26
  textAlign={col.textAlign}
33
27
  content={columnDecorator(col)(props)}
34
28
  />
35
- ))}
36
- </Table.Row>
29
+ ))}</Table.Row>
37
30
  );
38
31
 
39
32
  ScoreGroupRow.propTypes = {
@@ -58,9 +51,7 @@ export default function ScoreGroupsTable() {
58
51
  TIMEOUT: "red",
59
52
  }[color]
60
53
  }
61
- >
62
- {field}
63
- </Label>
54
+ >{field}</Label>
64
55
  ) : null;
65
56
  };
66
57
 
@@ -82,37 +73,13 @@ export default function ScoreGroupsTable() {
82
73
  ...statusColumns,
83
74
  ];
84
75
 
85
- return (
86
- <>
87
- {loading ? <Loading /> : null}
88
-
89
- <>
90
- {!_.isEmpty(scoreGroups) ? (
91
- <>
92
- <Table collapsing striped celled>
93
- <Table.Header>
94
- <HeaderRow columns={columns} />
95
- </Table.Header>
96
- <Table.Body>
97
- {scoreGroups
98
- ? scoreGroups.map((props, key) => (
99
- <ScoreGroupRow key={key} columns={columns} {...props} />
100
- ))
101
- : null}
102
- </Table.Body>
103
- </Table>
104
- <Pagination />
105
- </>
106
- ) : null}
107
- {_.isEmpty(scoreGroups) ? (
108
- <Header as="h4">
109
- <Icon name="search" />
110
- <Header.Content>
111
- <FormattedMessage id="score_groups.search.results.empty" />
112
- </Header.Content>
113
- </Header>
114
- ) : null}
115
- </>
116
- </>
117
- );
76
+ return (<>{loading ? <Loading /> : null}<>{!_.isEmpty(scoreGroups) ? (
77
+ <><Table collapsing striped celled><Table.Header><HeaderRow columns={columns} /></Table.Header><Table.Body>{scoreGroups
78
+ ? scoreGroups.map((props, key) => (
79
+ <ScoreGroupRow key={key} columns={columns} {...props} />
80
+ ))
81
+ : null}</Table.Body></Table><Pagination /></>
82
+ ) : null}{_.isEmpty(scoreGroups) ? (
83
+ <Header as="h4"><Icon name="search" /><Header.Content><FormattedMessage id="score_groups.search.results.empty" /></Header.Content></Header>
84
+ ) : null}</></>);
118
85
  }
@@ -1,31 +1,16 @@
1
- import React from "react";
2
- import { Route, Switch } from "react-router-dom";
3
- import {
4
- MY_SCORE_GROUPS,
5
- SCORE_GROUP,
6
- SCORE,
7
- SCORE_EVENTS,
8
- } from "@truedat/core/routes";
1
+ import { Route, Routes } from "react-router";
2
+ import { SCORE, SCORE_EVENTS } from "@truedat/core/routes";
9
3
 
10
- import { MyScoreGroups, ScoreGroup, Score, ScoreDetails, ScoreEvents } from ".";
4
+ import { Score, ScoreDetails, ScoreEvents } from ".";
11
5
  import "../../styles/scores.less";
12
6
 
13
7
  export default function ScoreRoutes() {
14
8
  return (
15
- <Switch>
16
- <Route exact path={MY_SCORE_GROUPS} render={() => <MyScoreGroups />} />
17
- <Route exact path={SCORE_GROUP} render={() => <ScoreGroup />} />
18
- <Route
19
- path={SCORE}
20
- render={() => (
21
- <Score>
22
- <Switch>
23
- <Route exact path={SCORE} render={() => <ScoreDetails />} />
24
- <Route exact path={SCORE_EVENTS} render={() => <ScoreEvents />} />
25
- </Switch>
26
- </Score>
27
- )}
28
- />
29
- </Switch>
9
+ <Routes>
10
+ <Route path=":id" element={<Score />}>
11
+ <Route index element={<ScoreDetails />} />
12
+ <Route path="events" element={<ScoreEvents />} />
13
+ </Route>
14
+ </Routes>
30
15
  );
31
16
  }
@@ -1,8 +1,7 @@
1
1
  import _ from "lodash/fp";
2
2
  import { FormattedMessage } from "react-intl";
3
- import React from "react";
4
3
  import PropTypes from "prop-types";
5
- import { Link } from "react-router-dom";
4
+ import { Link } from "react-router";
6
5
  import { Icon } from "semantic-ui-react";
7
6
  import { linkTo } from "@truedat/core/routes";
8
7
 
@@ -1,7 +1,7 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { Menu } from "semantic-ui-react";
4
- import { Link, useLocation, useParams } from "react-router-dom";
3
+ import { Link, useLocation } from "react-router";
4
+ import { useParams } from "react-router";
5
5
  import { FormattedMessage } from "react-intl";
6
6
  import { linkTo } from "@truedat/core/routes";
7
7
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { waitFor } from "@testing-library/react";
4
3
  import { useAuthorized } from "@truedat/core/hooks";
@@ -1,55 +1,48 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
3
- import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
1
+ import { render, waitForLoad } from "@truedat/test/render";
4
2
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
5
3
  import ScoreContext from "../ScoreContext";
6
4
  import QualityBar from "../QualityBar";
7
5
 
8
- const renderOpts = { messages };
9
-
10
6
  describe("<QualityBar />", () => {
11
- it("matches the latest snapshot", () => {
7
+ it("matches the latest snapshot", async () => {
12
8
  const context = {
13
9
  score: scoreData(),
14
10
  };
15
11
 
16
- const { container } = render(
17
- <ScoreContext.Provider value={context}>
12
+ const rendered = render(
13
+ <ScoreContext value={context}>
18
14
  <QualityBar />
19
- </ScoreContext.Provider>,
20
- renderOpts
15
+ </ScoreContext>
21
16
  );
22
-
23
- expect(container).toMatchSnapshot();
17
+ await waitForLoad(rendered);
18
+ expect(rendered.container).toMatchSnapshot();
24
19
  });
25
20
 
26
- it("when score is failed", () => {
21
+ it("when score is failed", async () => {
27
22
  const context = {
28
23
  score: scoreData({ status: "FAILED" }),
29
24
  };
30
25
 
31
- const { queryByText } = render(
32
- <ScoreContext.Provider value={context}>
26
+ const rendered = render(
27
+ <ScoreContext value={context}>
33
28
  <QualityBar />
34
- </ScoreContext.Provider>,
35
- renderOpts
29
+ </ScoreContext>
36
30
  );
37
-
38
- expect(queryByText(/Failed/i)).toBeInTheDocument();
31
+ await waitForLoad(rendered);
32
+ expect(rendered.queryByText(/failed/i)).toBeInTheDocument();
39
33
  });
40
34
 
41
- it("when score is empty", () => {
35
+ it("when score is empty", async () => {
42
36
  const context = {
43
37
  score: scoreData({ score_content: undefined }),
44
38
  };
45
39
 
46
- const { queryByText } = render(
47
- <ScoreContext.Provider value={context}>
40
+ const rendered = render(
41
+ <ScoreContext value={context}>
48
42
  <QualityBar />
49
- </ScoreContext.Provider>,
50
- renderOpts
43
+ </ScoreContext>
51
44
  );
52
-
53
- expect(queryByText(/quality.result.no.data/i)).toBeInTheDocument();
45
+ await waitForLoad(rendered);
46
+ expect(rendered.queryByText(/quality.result.no.data/i)).toBeInTheDocument();
54
47
  });
55
48
  });
@@ -1,12 +1,11 @@
1
1
  import _ from "lodash/fp";
2
- import React, { version } from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
5
4
  import { useScoreShow } from "@truedat/qx/hooks/useScores";
6
5
  import Score from "../Score";
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: () => ({ id: "8", version: "1" }),
11
10
  }));
12
11
 
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
5
4
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -14,9 +13,9 @@ describe("<ScoreCrumbs />", () => {
14
13
  score: scoreData(),
15
14
  };
16
15
  const { container } = render(
17
- <ScoreContext.Provider value={context}>
16
+ <ScoreContext value={context}>
18
17
  <ScoreCrumbs />
19
- </ScoreContext.Provider>,
18
+ </ScoreContext>,
20
19
  renderOpts
21
20
  );
22
21
 
@@ -28,9 +27,9 @@ describe("<ScoreCrumbs />", () => {
28
27
  score: scoreData({ execution_timestamp: undefined }),
29
28
  };
30
29
  const { queryByText } = render(
31
- <ScoreContext.Provider value={context}>
30
+ <ScoreContext value={context}>
32
31
  <ScoreCrumbs />
33
- </ScoreContext.Provider>,
32
+ </ScoreContext>,
34
33
  renderOpts
35
34
  );
36
35
 
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import { render } from "@truedat/test/render";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
5
4
  import ScoreContext from "../ScoreContext";
@@ -14,9 +13,9 @@ describe("<ScoreDetails />", () => {
14
13
  score: scoreData(),
15
14
  };
16
15
  const { container } = render(
17
- <ScoreContext.Provider value={context}>
16
+ <ScoreContext value={context}>
18
17
  <ScoreDetails />
19
- </ScoreContext.Provider>,
18
+ </ScoreContext>,
20
19
  renderOpts
21
20
  );
22
21
 
@@ -28,9 +27,9 @@ describe("<ScoreDetails />", () => {
28
27
  score: scoreData({ details: undefined }),
29
28
  };
30
29
  const { queryByText } = render(
31
- <ScoreContext.Provider value={context}>
30
+ <ScoreContext value={context}>
32
31
  <ScoreDetails />
33
- </ScoreContext.Provider>,
32
+ </ScoreContext>,
34
33
  renderOpts
35
34
  );
36
35
  expect(queryByText(/Details/i)).not.toBeInTheDocument();
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { scoreData } from "@truedat/qx/components/scores/__tests__/__fixtures__/scoreHelper";
4
3
  import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
@@ -13,9 +12,9 @@ describe("<ScoreEvents />", () => {
13
12
  score: scoreData(),
14
13
  };
15
14
  const { container } = render(
16
- <ScoreContext.Provider value={context}>
15
+ <ScoreContext value={context}>
17
16
  <ScoreEvents />
18
- </ScoreContext.Provider>,
17
+ </ScoreContext>,
19
18
  renderOpts
20
19
  );
21
20
 
@@ -1,11 +1,10 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
3
- import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
1
+ import { render, waitForLoad } from "@truedat/test/render";
2
+ import { templateByNameMock } from "@truedat/test/mocks";
4
3
  import { useScoreGroupShow } from "@truedat/qx/hooks/useScoreGroups";
5
4
  import ScoreGroup from "../ScoreGroup";
6
5
 
7
- jest.mock("react-router-dom", () => ({
8
- ...jest.requireActual("react-router-dom"),
6
+ jest.mock("react-router", () => ({
7
+ ...jest.requireActual("react-router"),
9
8
  useParams: () => ({ id: "8", version: "1" }),
10
9
  }));
11
10
 
@@ -22,22 +21,24 @@ jest.mock("@truedat/qx/hooks/useScoreGroups", () => {
22
21
  };
23
22
  });
24
23
 
25
- const renderOpts = { messages, fallback: "lazy" };
24
+ const renderOpts = {
25
+ mocks: [templateByNameMock({ name: "Quality Execution" })],
26
+ };
26
27
 
27
28
  describe("<ScoreGroup />", () => {
28
- it("matches the latest snapshot", () => {
29
- const { container } = render(<ScoreGroup />, renderOpts);
30
-
31
- expect(container).toMatchSnapshot();
29
+ it("matches the latest snapshot", async () => {
30
+ const rendered = render(<ScoreGroup />, renderOpts);
31
+ await waitForLoad(rendered);
32
+ expect(rendered.container).toMatchSnapshot();
32
33
  });
33
34
 
34
- it("matches the latest snapshot when scoreGroup is empty", () => {
35
+ it("matches the latest snapshot when scoreGroup is empty", async () => {
35
36
  useScoreGroupShow.mockImplementation(() => ({
36
37
  data: { data: [] },
37
38
  loading: false,
38
39
  }));
39
- const { container } = render(<ScoreGroup />, renderOpts);
40
-
41
- expect(container).toMatchSnapshot();
40
+ const rendered = render(<ScoreGroup />, renderOpts);
41
+ await waitForLoad(rendered);
42
+ expect(rendered.container).toMatchSnapshot();
42
43
  });
43
44
  });
@@ -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 ScoreGroupBreadcrumbs from "../ScoreGroupBreadcrumbs";
@@ -1,9 +1,7 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
3
- import { waitFor } from "@testing-library/react";
4
1
  import userEvent from "@testing-library/user-event";
2
+ import { waitFor } from "@testing-library/react";
3
+ import { render, waitForLoad } from "@truedat/test/render";
5
4
  import { singleTemplateMock } from "@truedat/test/mocks";
6
- import { messages } from "@truedat/qx/components/__tests__/__fixtures__/helper";
7
5
  import ScoreGroupForm from "../ScoreGroupForm";
8
6
 
9
7
  const renderOpts = {
@@ -13,8 +11,6 @@ const renderOpts = {
13
11
  domainIds: undefined,
14
12
  }),
15
13
  ],
16
- messages,
17
- fallback: "lazy",
18
14
  };
19
15
 
20
16
  const props = {
@@ -22,46 +18,34 @@ const props = {
22
18
  onSubmit: jest.fn(),
23
19
  onCancel: jest.fn(),
24
20
  };
21
+
25
22
  describe("<ScoreGroupForm />", () => {
26
23
  it("matches the latest snapshot", async () => {
27
- const { container, queryByText } = render(
28
- <ScoreGroupForm {...props} />,
29
- renderOpts
30
- );
31
-
32
- await waitFor(() => {
33
- expect(queryByText(/lazy/i)).not.toBeInTheDocument();
34
- expect(container.querySelector(".loading")).not.toBeInTheDocument();
35
- });
36
-
37
- expect(container).toMatchSnapshot();
24
+ const rendered = render(<ScoreGroupForm {...props} />, renderOpts);
25
+ await waitForLoad(rendered);
26
+ expect(rendered.container).toMatchSnapshot();
38
27
  });
28
+
39
29
  it("matches the latest snapshot for count 1", async () => {
40
- const { container, queryByText } = render(
30
+ const rendered = render(
41
31
  <ScoreGroupForm {...props} count={1} />,
42
32
  renderOpts
43
33
  );
44
-
45
- await waitFor(() => {
46
- expect(queryByText(/lazy/i)).not.toBeInTheDocument();
47
- expect(container.querySelector(".loading")).not.toBeInTheDocument();
48
- });
49
-
50
- expect(container).toMatchSnapshot();
34
+ await waitForLoad(rendered);
35
+ expect(rendered.container).toMatchSnapshot();
51
36
  });
52
37
 
53
38
  it("writes to form, submit and confirm", async () => {
39
+ const user = userEvent.setup({ delay: null });
54
40
  const onSubmit = jest.fn();
55
- const { container, queryByText, findByText, findByPlaceholderText } =
56
- render(<ScoreGroupForm {...props} onSubmit={onSubmit} />, renderOpts);
57
-
58
- await waitFor(() => {
59
- expect(queryByText(/lazy/i)).not.toBeInTheDocument();
60
- expect(container.querySelector(".loading")).not.toBeInTheDocument();
61
- });
41
+ const rendered = render(
42
+ <ScoreGroupForm {...props} onSubmit={onSubmit} />,
43
+ renderOpts
44
+ );
45
+ await waitForLoad(rendered);
62
46
 
63
- userEvent.type(await findByPlaceholderText("field1"), "foo");
64
- userEvent.click(await findByText(/Create/i));
47
+ await user.type(await rendered.findByPlaceholderText(/field1/i), "foo");
48
+ await user.click(await rendered.findByText(/create/i));
65
49
 
66
50
  await waitFor(() =>
67
51
  expect(onSubmit).toHaveBeenCalledWith({
@@ -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 ScoreGroupLink from "../ScoreGroupLink";
@@ -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 ScoreGroupMessage from "../ScoreGroupMessage";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { waitFor } from "@testing-library/react";
4
3
  import userEvent from "@testing-library/user-event";
@@ -9,7 +8,6 @@ import ScoreGroupPopup from "../ScoreGroupPopup";
9
8
  const renderOpts = {
10
9
  mocks: [singleTemplateMock({ scope: "qxe" })],
11
10
  messages,
12
- fallback: "lazy",
13
11
  };
14
12
 
15
13
  describe("<ScoreGroupPopup />", () => {
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
+ import ScoreGroupsRoutes from "../ScoreGroupsRoutes";
4
+ import { MY_SCORE_GROUPS, SCORE_GROUP } from "@truedat/core/routes";
5
+
6
+ // Mock child components
7
+ jest.mock("../MyScoreGroups", () => () => <div>MyScoreGroups</div>);
8
+ jest.mock("../ScoreGroup", () => () => <div>ScoreGroup</div>);
9
+
10
+ describe("<ScoreGroupsRoutes />", () => {
11
+ it("renders correctly with default route", async () => {
12
+ const rendered = render(<ScoreGroupsRoutes />);
13
+ await waitForLoad(rendered);
14
+ expect(rendered.container).toMatchSnapshot();
15
+ });
16
+
17
+ it("renders correctly with my score groups route", async () => {
18
+ const rendered = render(<ScoreGroupsRoutes />, {
19
+ routes: [MY_SCORE_GROUPS],
20
+ });
21
+ await waitForLoad(rendered);
22
+ expect(rendered.container).toMatchSnapshot();
23
+ });
24
+
25
+ it("renders correctly with score group detail route", async () => {
26
+ const rendered = render(<ScoreGroupsRoutes />, {
27
+ routes: [SCORE_GROUP.replace(":id", "123")],
28
+ });
29
+ await waitForLoad(rendered);
30
+ expect(rendered.container).toMatchSnapshot();
31
+ });
32
+ });
@@ -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 SearchContextWrapper from "@truedat/core/components/common/SearchContextWrapper";
@@ -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
 
@@ -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 ScoreTabs from "../ScoreTabs";
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: "15" }),
9
8
  useLocation: () => ({ pathname: "/scores/15" }),
10
9
  }));
@@ -18,7 +17,7 @@ describe("<ScoreTabs />", () => {
18
17
  });
19
18
 
20
19
  it("matches the latest snapshot for events", () => {
21
- jest.spyOn(require("react-router-dom"), "useLocation").mockReturnValue({
20
+ jest.spyOn(require("react-router"), "useLocation").mockReturnValue({
22
21
  pathname: "/scores/15/events",
23
22
  });
24
23
  const { container } = render(<ScoreTabs />, renderOpts);
@@ -134,6 +134,7 @@ exports[`<MyScoreGroups /> matches the latest snapshot 1`] = `
134
134
  class=""
135
135
  >
136
136
  <a
137
+ data-discover="true"
137
138
  href="/scoreGroups/36"
138
139
  >
139
140
  <time
@@ -181,6 +182,7 @@ exports[`<MyScoreGroups /> matches the latest snapshot 1`] = `
181
182
  class=""
182
183
  >
183
184
  <a
185
+ data-discover="true"
184
186
  href="/scoreGroups/36"
185
187
  >
186
188
  <time
@@ -7,6 +7,7 @@ exports[`<Score /> matches the latest snapshot 1`] = `
7
7
  >
8
8
  <a
9
9
  class="section"
10
+ data-discover="true"
10
11
  href="/qualityControls"
11
12
  >
12
13
  Quality Controls
@@ -17,6 +18,7 @@ exports[`<Score /> matches the latest snapshot 1`] = `
17
18
  />
18
19
  <a
19
20
  class="section"
21
+ data-discover="true"
20
22
  href="/qualityControls/8/version/1/scores"
21
23
  >
22
24
  test
@@ -74,12 +76,14 @@ exports[`<Score /> matches the latest snapshot 1`] = `
74
76
  >
75
77
  <a
76
78
  class="item"
79
+ data-discover="true"
77
80
  href="/scores/8"
78
81
  >
79
82
  Details
80
83
  </a>
81
84
  <a
82
85
  class="item"
86
+ data-discover="true"
83
87
  href="/scores/8/events"
84
88
  >
85
89
  Events
@@ -7,6 +7,7 @@ exports[`<ScoreCrumbs /> matches the latest snapshot 1`] = `
7
7
  >
8
8
  <a
9
9
  class="section"
10
+ data-discover="true"
10
11
  href="/qualityControls"
11
12
  >
12
13
  Quality Controls
@@ -17,6 +18,7 @@ exports[`<ScoreCrumbs /> matches the latest snapshot 1`] = `
17
18
  />
18
19
  <a
19
20
  class="section"
21
+ data-discover="true"
20
22
  href="/qualityControls/8/version/1/scores"
21
23
  >
22
24
  test
@@ -35,6 +35,7 @@ exports[`<ScoreDetails /> matches the latest snapshot 1`] = `
35
35
  class="description"
36
36
  >
37
37
  <a
38
+ data-discover="true"
38
39
  href="/scores/15"
39
40
  >
40
41
  <time