@truedat/core 8.7.0 → 8.7.2
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.
- package/package.json +3 -3
- package/src/components/AddMemberForm.js +3 -3
- package/src/components/Alert.js +3 -3
- package/src/components/AlertExporter.js +4 -4
- package/src/components/AvailableFilters.js +5 -5
- package/src/components/CSVFileModal.js +1 -1
- package/src/components/CardGroupsAccordion.js +4 -4
- package/src/components/CatalogMenu.js +2 -2
- package/src/components/CommentsForm.js +1 -1
- package/src/components/DomainSearchFilter.js +9 -9
- package/src/components/DomainSelector.js +1 -1
- package/src/components/FilterDropdown.js +5 -5
- package/src/components/FilterMultilevelDropdown.js +9 -9
- package/src/components/GlossaryMenu.js +10 -7
- package/src/components/Graph.js +199 -127
- package/src/components/GroupActions.js +2 -2
- package/src/components/Hierarchy.js +1 -1
- package/src/components/HierarchyFilterDropdown.js +7 -7
- package/src/components/HierarchySelector.js +1 -1
- package/src/components/LanguagesTabs.js +2 -2
- package/src/components/OptionGroup.js +8 -9
- package/src/components/QualityMenu.js +6 -8
- package/src/components/ResourceMembers.js +3 -3
- package/src/components/SearchFilterDropdown.js +3 -3
- package/src/components/SidebarToggle.js +1 -1
- package/src/components/Submenu.js +46 -27
- package/src/components/SystemsLoader.js +1 -1
- package/src/components/TemplatesLoader.js +1 -1
- package/src/components/TreeSelector.js +2 -2
- package/src/components/UploadJob.js +3 -3
- package/src/components/UploadJobBreadcrumbs.js +4 -1
- package/src/components/UploadJobParser.js +4 -3
- package/src/components/UploadModal.js +1 -1
- package/src/components/UserFilter.js +1 -1
- package/src/components/UserFilters.js +2 -2
- package/src/components/__tests__/ArrayDecorator.spec.js +2 -2
- package/src/components/__tests__/CardGroupsAccordion.spec.js +6 -6
- package/src/components/__tests__/CatalogMenu.spec.js +1 -1
- package/src/components/__tests__/DateTime.spec.js +1 -1
- package/src/components/__tests__/DomainSearchFilter.spec.js +2 -2
- package/src/components/__tests__/DomainSearchFilterItem.spec.js +7 -7
- package/src/components/__tests__/DomainSelector.spec.js +3 -3
- package/src/components/__tests__/DropdownMenuItem.spec.js +3 -3
- package/src/components/__tests__/FilterDropdown.spec.js +11 -11
- package/src/components/__tests__/FilterMultilevelDropdown.spec.js +2 -2
- package/src/components/__tests__/GlossaryMenu.spec.js +2 -2
- package/src/components/__tests__/Graph.spec.js +12 -4
- package/src/components/__tests__/GroupActions.spec.js +4 -4
- package/src/components/__tests__/Hierarchy.spec.js +1 -1
- package/src/components/__tests__/HierarchyFilterDropdown.spec.js +5 -5
- package/src/components/__tests__/HierarchyNodeFinder.spec.js +4 -4
- package/src/components/__tests__/HierarchySelector.spec.js +7 -5
- package/src/components/__tests__/Markdown.spec.js +22 -8
- package/src/components/__tests__/ModalSaveFilter.spec.js +1 -1
- package/src/components/__tests__/Pagination.spec.js +2 -2
- package/src/components/__tests__/ResourceMembers.spec.js +4 -4
- package/src/components/__tests__/SearchDateFilter.spec.js +10 -5
- package/src/components/__tests__/SearchFilterDropdown.spec.js +1 -1
- package/src/components/__tests__/SelectedFilters.spec.js +7 -7
- package/src/components/__tests__/SideMenu.spec.js +1 -1
- package/src/components/__tests__/Submenu.spec.js +1 -1
- package/src/components/__tests__/TemplateSelector.spec.js +5 -5
- package/src/components/__tests__/TreeSelector.spec.js +23 -24
- package/src/components/__tests__/UploadJob.spec.js +1 -3
- package/src/components/__tests__/UploadJobBreadcrumbs.spec.js +4 -4
- package/src/components/__tests__/UploadJobParser.spec.js +42 -38
- package/src/components/__tests__/UploadModal.spec.js +9 -9
- package/src/components/__tests__/UserFilters.spec.js +1 -1
- package/src/components/graph/ColoredEdge.js +29 -23
- package/src/components/graph/edgeLayout.js +4 -1
- package/src/hooks/__tests__/useActiveRoutes.spec.js +32 -18
- package/src/hooks/useAclEntries.js +2 -2
- package/src/hooks/useActiveRoutes.js +14 -6
- package/src/hooks/useAuthorized.js +3 -3
- package/src/hooks/useHierarchies.js +8 -8
- package/src/hooks/useLocales.js +3 -3
- package/src/hooks/useMessages.js +1 -1
- package/src/hooks/useOnScreen.js +1 -1
- package/src/hooks/useUploadJobs.js +2 -8
- package/src/hooks/useUserFilters.js +1 -1
- package/src/i18n/components/LangProvider.js +6 -6
- package/src/i18n/components/Languages.js +4 -4
- package/src/i18n/components/MessageForm.js +24 -13
- package/src/i18n/components/Messages.js +5 -5
- package/src/i18n/components/__tests__/I18nRoutes.spec.js +1 -1
- package/src/messages/index.js +1 -1
- package/src/reducers/comments.js +3 -3
- package/src/router/__tests__/ProtectedRoute.spec.js +1 -1
- package/src/routes.js +1 -1
- package/src/routesTree.js +6 -1
- package/src/routines.js +2 -2
- package/src/search/FilterDropdown.js +1 -1
- package/src/search/FilterMultilevelDropdown.js +10 -10
- package/src/search/FilterQueryDropdown.js +4 -4
- package/src/search/HierarchyFilterDropdown.js +7 -7
- package/src/search/SearchContext.js +19 -19
- package/src/search/SearchDateFilter.js +12 -2
- package/src/search/SearchFilters.js +1 -1
- package/src/search/SearchSelectedFilters.js +1 -1
- package/src/search/SearchWidget.js +6 -2
- package/src/search/UserFilter.js +1 -1
- package/src/search/UserFilters.js +4 -4
- package/src/search/__tests__/FilterDropdown.spec.js +3 -3
- package/src/search/__tests__/FilterQueryDropdown.spec.js +20 -18
- package/src/search/__tests__/ModalSaveFilter.spec.js +2 -2
- package/src/search/__tests__/SearchContext.spec.js +42 -42
- package/src/search/__tests__/SearchSelectedFilters.spec.js +21 -17
- package/src/search/__tests__/SearchWidget.spec.js +4 -4
- package/src/selectors/__tests__/getRiSubscopes.spec.js +1 -1
- package/src/selectors/__tests__/makeSearchQuerySelector.spec.js +2 -2
- package/src/selectors/getConceptSubscope.js +1 -1
- package/src/selectors/getDashboardConfig.js +3 -3
- package/src/selectors/getMessage.js +3 -3
- package/src/selectors/getRecipients.js +3 -3
- package/src/selectors/getRiSubscopes.js +2 -2
- package/src/selectors/getSidemenuGlossarySubscopes.js +1 -1
- package/src/selectors/makeActiveFiltersSelector.js +2 -2
- package/src/selectors/makeDateFiltersSelector.js +1 -1
- package/src/selectors/makeSearchQuerySelector.js +10 -10
- package/src/selectors/makeTagOptionsSelector.js +1 -4
- package/src/selectors/subscopedTemplates.js +2 -2
- package/src/services/columnPredicate.js +1 -1
- package/src/services/dateFilterFormatter.js +1 -1
- package/src/services/fieldType.js +1 -1
- package/src/services/formRules.js +16 -13
- package/src/services/getHierarchyOptions.js +2 -2
- package/src/services/message.js +7 -8
- package/src/services/operators.js +5 -5
- package/src/services/sort.js +2 -2
- package/src/services/swr.js +1 -1
- package/src/services/tree.js +2 -2
|
@@ -55,23 +55,23 @@ export const QualityMenu = ({ dashboardConfig, riSubscopes }) => {
|
|
|
55
55
|
const authorized = useAuthorized(
|
|
56
56
|
"quality",
|
|
57
57
|
"quality_implementation_workflow_management",
|
|
58
|
-
"quality_implementation_additional_actions"
|
|
58
|
+
"quality_implementation_additional_actions",
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
if (!authorized) return null;
|
|
62
62
|
|
|
63
63
|
const filteredBaseItems = _.filter(
|
|
64
|
-
({ name }) => name != "quality_dashboard" || !_.isEmpty(dashboardConfig)
|
|
64
|
+
({ name }) => name != "quality_dashboard" || !_.isEmpty(dashboardConfig),
|
|
65
65
|
)(BASE_ITEMS);
|
|
66
66
|
|
|
67
67
|
const extendedItems = filteredBaseItems.reduce((acc, item) => {
|
|
68
68
|
acc.push(item);
|
|
69
69
|
|
|
70
70
|
if (item.name === "implementations") {
|
|
71
|
-
riSubscopes.forEach(subscope => {
|
|
71
|
+
riSubscopes.forEach((subscope) => {
|
|
72
72
|
acc.push({
|
|
73
73
|
name: subscope,
|
|
74
|
-
routes: [IMPLEMENTATIONS_BY_SUBSCOPE.replace(
|
|
74
|
+
routes: [IMPLEMENTATIONS_BY_SUBSCOPE.replace(":subscope", subscope)],
|
|
75
75
|
groups: ["quality"],
|
|
76
76
|
});
|
|
77
77
|
});
|
|
@@ -80,9 +80,7 @@ export const QualityMenu = ({ dashboardConfig, riSubscopes }) => {
|
|
|
80
80
|
return acc;
|
|
81
81
|
}, []);
|
|
82
82
|
|
|
83
|
-
return
|
|
84
|
-
<Submenu items={extendedItems} icon={iconQuality} name="quality" />
|
|
85
|
-
);
|
|
83
|
+
return <Submenu items={extendedItems} icon={iconQuality} name="quality" />;
|
|
86
84
|
};
|
|
87
85
|
|
|
88
86
|
QualityMenu.propTypes = {
|
|
@@ -99,4 +97,4 @@ export const mapStateToProps = (state) => ({
|
|
|
99
97
|
riSubscopes: getRiSubscopes(state),
|
|
100
98
|
});
|
|
101
99
|
|
|
102
|
-
export default connect(mapStateToProps)(QualityMenu);
|
|
100
|
+
export default connect(mapStateToProps)(QualityMenu);
|
|
@@ -21,7 +21,7 @@ const matchesFilter = (filter) =>
|
|
|
21
21
|
"principal.name",
|
|
22
22
|
]),
|
|
23
23
|
_.map(toSearchable),
|
|
24
|
-
_.some(_.includes(toSearchable(filter)))
|
|
24
|
+
_.some(_.includes(toSearchable(filter))),
|
|
25
25
|
);
|
|
26
26
|
|
|
27
27
|
const filterData = (filter, data) => {
|
|
@@ -43,7 +43,7 @@ export const ResourceMembers = ({ type, id }) => {
|
|
|
43
43
|
const groupedResourceMembers = _.flow(
|
|
44
44
|
_.sortBy(accentInsensitivePathOrder("role_name")),
|
|
45
45
|
_.groupBy("role_name"),
|
|
46
|
-
_.toPairs
|
|
46
|
+
_.toPairs,
|
|
47
47
|
)(filteredResourceMembers);
|
|
48
48
|
|
|
49
49
|
const handleFilterUsers = (_e, { value }) => {
|
|
@@ -86,7 +86,7 @@ export const ResourceMembers = ({ type, id }) => {
|
|
|
86
86
|
onUpdate={() => refreshAclEntries()}
|
|
87
87
|
{...m}
|
|
88
88
|
/>
|
|
89
|
-
)
|
|
89
|
+
),
|
|
90
90
|
)}
|
|
91
91
|
</Card.Group>
|
|
92
92
|
</Fragment>
|
|
@@ -40,7 +40,7 @@ export const SearchFilterDropdown = ({
|
|
|
40
40
|
|
|
41
41
|
const toogleSelectedOption = (selectedOption) => {
|
|
42
42
|
const newSelectedOptions = selectedOptions.find(
|
|
43
|
-
(s) => s.id === selectedOption.id
|
|
43
|
+
(s) => s.id === selectedOption.id,
|
|
44
44
|
)
|
|
45
45
|
? selectedOptions.filter((s) => s.id !== selectedOption.id)
|
|
46
46
|
: [...selectedOptions, selectedOption];
|
|
@@ -106,7 +106,7 @@ export const SearchFilterDropdown = ({
|
|
|
106
106
|
toggleFilterValue={toogleSelectedOption}
|
|
107
107
|
active={_.includes(_.prop("id")(option))(activeValues)}
|
|
108
108
|
/>
|
|
109
|
-
))
|
|
109
|
+
)),
|
|
110
110
|
)(selectedOptions)}
|
|
111
111
|
<Dropdown.Divider />
|
|
112
112
|
{options &&
|
|
@@ -121,7 +121,7 @@ export const SearchFilterDropdown = ({
|
|
|
121
121
|
toggleFilterValue={toogleSelectedOption}
|
|
122
122
|
active={_.includes(_.prop("id")(option))(activeValues)}
|
|
123
123
|
/>
|
|
124
|
-
))
|
|
124
|
+
)),
|
|
125
125
|
)(options)}
|
|
126
126
|
{loading && (
|
|
127
127
|
<Dimmer active inverted>
|
|
@@ -88,31 +88,44 @@ export const Submenu = ({
|
|
|
88
88
|
const decodedPathname = decodeURIComponent(pathname);
|
|
89
89
|
const routes = _.flatMap("routes")(filteredItems);
|
|
90
90
|
|
|
91
|
-
const pathParts = pathname.split(
|
|
92
|
-
const hasSubscopeInPath = pathname.includes(
|
|
91
|
+
const pathParts = pathname.split("/").filter((part) => part !== "");
|
|
92
|
+
const hasSubscopeInPath = pathname.includes("/subscope/");
|
|
93
|
+
// eslint-disable-next-line fp/no-let
|
|
93
94
|
let subscopeName = null;
|
|
94
|
-
if (
|
|
95
|
-
|
|
95
|
+
if (
|
|
96
|
+
hasSubscopeInPath &&
|
|
97
|
+
pathParts.length >= 3 &&
|
|
98
|
+
pathParts[1] === "subscope"
|
|
99
|
+
) {
|
|
100
|
+
// eslint-disable-next-line fp/no-mutation
|
|
101
|
+
subscopeName = decodeURIComponent(pathParts[2]).replace(/%20/g, " ");
|
|
96
102
|
}
|
|
97
103
|
|
|
98
|
-
const isSubmenuActiveForSubscope =
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
)(
|
|
104
|
+
const isSubmenuActiveForSubscope =
|
|
105
|
+
hasSubscopeInPath &&
|
|
106
|
+
subscopeName &&
|
|
107
|
+
_.some((item) => item.name.toLowerCase() === subscopeName.toLowerCase())(
|
|
108
|
+
filteredItems,
|
|
109
|
+
);
|
|
102
110
|
|
|
103
|
-
const isSubmenuActiveForRoutes = _.some(item =>
|
|
104
|
-
_.some(route => {
|
|
111
|
+
const isSubmenuActiveForRoutes = _.some((item) =>
|
|
112
|
+
_.some((route) => {
|
|
105
113
|
const decodedPathname = decodeURIComponent(pathname);
|
|
106
|
-
return
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
114
|
+
return (
|
|
115
|
+
decodedPathname === route ||
|
|
116
|
+
decodedPathname.startsWith(`${route}/`) ||
|
|
117
|
+
matchPath({ path: route }, decodedPathname)
|
|
118
|
+
);
|
|
119
|
+
})(item.routes),
|
|
110
120
|
)(filteredItems);
|
|
111
121
|
|
|
112
122
|
// Determine if submenu should be active, with special handling for management URLs
|
|
113
|
-
const submenuIsActive =
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
const submenuIsActive =
|
|
124
|
+
(isActive || isSubmenuActiveForSubscope || isSubmenuActiveForRoutes) &&
|
|
125
|
+
!(
|
|
126
|
+
name === "glossary" &&
|
|
127
|
+
location.pathname.startsWith("/concepts/management/")
|
|
128
|
+
);
|
|
116
129
|
|
|
117
130
|
if (submenuIsActive && sidebarVisible) {
|
|
118
131
|
const menuItems = filteredItems.map((item, i) => {
|
|
@@ -121,11 +134,14 @@ export const Submenu = ({
|
|
|
121
134
|
(item.isActive
|
|
122
135
|
? item.isActive()
|
|
123
136
|
: hasSubscopeInPath && subscopeName
|
|
124
|
-
? item.name.toLowerCase() === subscopeName.toLowerCase()
|
|
125
|
-
: item.routes.some(
|
|
126
|
-
route
|
|
127
|
-
|
|
128
|
-
|
|
137
|
+
? item.name.toLowerCase() === subscopeName.toLowerCase()
|
|
138
|
+
: item.routes.some(
|
|
139
|
+
(route) =>
|
|
140
|
+
route === activeRoute ||
|
|
141
|
+
route === pathname ||
|
|
142
|
+
route === decodedPathname ||
|
|
143
|
+
matchPath({ path: route }, pathname) ||
|
|
144
|
+
matchPath({ path: route }, decodedPathname), // Pattern match
|
|
129
145
|
));
|
|
130
146
|
|
|
131
147
|
return (
|
|
@@ -171,11 +187,14 @@ export const Submenu = ({
|
|
|
171
187
|
(item.isActive
|
|
172
188
|
? item.isActive()
|
|
173
189
|
: hasSubscopeInPath && subscopeName
|
|
174
|
-
? item.name.toLowerCase() === subscopeName.toLowerCase()
|
|
175
|
-
: item.routes.some(
|
|
176
|
-
route
|
|
177
|
-
|
|
178
|
-
|
|
190
|
+
? item.name.toLowerCase() === subscopeName.toLowerCase()
|
|
191
|
+
: item.routes.some(
|
|
192
|
+
(route) =>
|
|
193
|
+
route === activeRoute ||
|
|
194
|
+
route === pathname ||
|
|
195
|
+
route === decodedPathname ||
|
|
196
|
+
matchPath({ path: route }, pathname) ||
|
|
197
|
+
matchPath({ path: route }, decodedPathname),
|
|
179
198
|
));
|
|
180
199
|
|
|
181
200
|
return (
|
|
@@ -174,7 +174,7 @@ export const TreeSelector = ({
|
|
|
174
174
|
const filterSearch = query ? _.filter(matchAny(query)) : _.identity;
|
|
175
175
|
|
|
176
176
|
const filterDisplayed = _.filter(
|
|
177
|
-
({ id, level }) => level === 0 || _.includes(id)(displayed)
|
|
177
|
+
({ id, level }) => level === 0 || _.includes(id)(displayed),
|
|
178
178
|
);
|
|
179
179
|
|
|
180
180
|
const trigger = labels ? (
|
|
@@ -209,7 +209,7 @@ export const TreeSelector = ({
|
|
|
209
209
|
className={ascendants?.includes(String(option?.id)) ? "ascendant" : ""}
|
|
210
210
|
{...option}
|
|
211
211
|
/>
|
|
212
|
-
))
|
|
212
|
+
)),
|
|
213
213
|
)(options);
|
|
214
214
|
|
|
215
215
|
const renderTreeSelector = () => {
|
|
@@ -79,7 +79,7 @@ export default function UploadJob({ scope }) {
|
|
|
79
79
|
<DateTime value={events[0]?.inserted_at} />
|
|
80
80
|
</Table.Cell>
|
|
81
81
|
<Table.Cell></Table.Cell>
|
|
82
|
-
</Table.Row
|
|
82
|
+
</Table.Row>,
|
|
83
83
|
);
|
|
84
84
|
|
|
85
85
|
// Add expanded events if group is expanded
|
|
@@ -96,7 +96,7 @@ export default function UploadJob({ scope }) {
|
|
|
96
96
|
<Table.Cell>
|
|
97
97
|
<ResponseCell {...event} />
|
|
98
98
|
</Table.Cell>
|
|
99
|
-
</Table.Row
|
|
99
|
+
</Table.Row>,
|
|
100
100
|
);
|
|
101
101
|
});
|
|
102
102
|
}
|
|
@@ -187,7 +187,7 @@ export default function UploadJob({ scope }) {
|
|
|
187
187
|
{_.isArray(job.events) && !_.isEmpty(job.events) ? (
|
|
188
188
|
Object.entries(groupedEvents)
|
|
189
189
|
.map(([status, events]) =>
|
|
190
|
-
renderEventGroup(status, events)
|
|
190
|
+
renderEventGroup(status, events),
|
|
191
191
|
)
|
|
192
192
|
.flat()
|
|
193
193
|
) : (
|
|
@@ -2,7 +2,10 @@ import PropTypes from "prop-types";
|
|
|
2
2
|
import { Breadcrumb } from "semantic-ui-react";
|
|
3
3
|
import { Link } from "react-router";
|
|
4
4
|
import { FormattedMessage } from "react-intl";
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
IMPLEMENTATIONS_UPLOAD_JOBS,
|
|
7
|
+
STRUCTURE_NOTES_UPLOAD_JOBS,
|
|
8
|
+
} from "@truedat/core/routes";
|
|
6
9
|
|
|
7
10
|
export const UploadJobBreadcrumbs = ({ filename, scope }) => {
|
|
8
11
|
const uploadJobsPath = (scope) => {
|
|
@@ -222,7 +222,7 @@ const ErrorDetail = ({ response }) => {
|
|
|
222
222
|
|
|
223
223
|
const visibleDetails = _.filter(
|
|
224
224
|
([, value]) => value != null && value !== "",
|
|
225
|
-
details
|
|
225
|
+
details,
|
|
226
226
|
);
|
|
227
227
|
|
|
228
228
|
return (
|
|
@@ -281,6 +281,7 @@ const CompletedDetail = ({ response }) => {
|
|
|
281
281
|
_.filter((item) => _.get(item.key, response) > 0),
|
|
282
282
|
(items) => {
|
|
283
283
|
const result = [];
|
|
284
|
+
// eslint-disable-next-line fp/no-let, fp/no-mutation
|
|
284
285
|
for (let i = 0; i < items.length; i++) {
|
|
285
286
|
const item = items[i];
|
|
286
287
|
result.push(
|
|
@@ -288,7 +289,7 @@ const CompletedDetail = ({ response }) => {
|
|
|
288
289
|
<FormattedMessage id={item.messageId} />
|
|
289
290
|
{`: ${response[item.key]}`}
|
|
290
291
|
{i < items.length - 1 && <span> | </span>}
|
|
291
|
-
</span
|
|
292
|
+
</span>,
|
|
292
293
|
);
|
|
293
294
|
}
|
|
294
295
|
return result;
|
|
@@ -389,7 +390,7 @@ const formatValue = (value, key) => {
|
|
|
389
390
|
if (_.isArray(value)) {
|
|
390
391
|
return _.flow(
|
|
391
392
|
_.map((v) => formatValue(v, key)),
|
|
392
|
-
_.join(", ")
|
|
393
|
+
_.join(", "),
|
|
393
394
|
)(value);
|
|
394
395
|
}
|
|
395
396
|
if (_.isObject(value)) {
|
|
@@ -33,9 +33,9 @@ export const UserFilters = ({
|
|
|
33
33
|
|
|
34
34
|
const sortedUserFilters = _.flow(
|
|
35
35
|
_.filter(({ filters }) =>
|
|
36
|
-
_.isNull(domainId) ? true : showDomainFilter(filters)
|
|
36
|
+
_.isNull(domainId) ? true : showDomainFilter(filters),
|
|
37
37
|
),
|
|
38
|
-
_.orderBy(["is_global", "id"], ["desc", "asc"])
|
|
38
|
+
_.orderBy(["is_global", "id"], ["desc", "asc"]),
|
|
39
39
|
)(userFilters);
|
|
40
40
|
|
|
41
41
|
return _.isEmpty(userFilters) ? null : (
|
|
@@ -31,7 +31,7 @@ describe("<ArrayDecorator />", () => {
|
|
|
31
31
|
const concatenator = ", ";
|
|
32
32
|
const list = [...showableItems, ...hiddenItems];
|
|
33
33
|
const { getByText, getByRole, queryAllByRole } = render(
|
|
34
|
-
ArrayDecorator(showableItems.length, concatenator)(list)
|
|
34
|
+
ArrayDecorator(showableItems.length, concatenator)(list),
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
expect(queryAllByRole("listitem")).toEqual([]);
|
|
@@ -47,7 +47,7 @@ describe("<ArrayDecorator />", () => {
|
|
|
47
47
|
it("does not show the popup label whith no hidden items", async () => {
|
|
48
48
|
const showableItems = ["showable_item_1", "showable_item_2"];
|
|
49
49
|
const { queryByText } = render(
|
|
50
|
-
ArrayDecorator(showableItems.length, ",")(showableItems)
|
|
50
|
+
ArrayDecorator(showableItems.length, ",")(showableItems),
|
|
51
51
|
);
|
|
52
52
|
expect(queryByText("+0")).not.toBeInTheDocument();
|
|
53
53
|
});
|
|
@@ -84,7 +84,7 @@ describe("<CardGroupsAccordion />", () => {
|
|
|
84
84
|
<CardGroupsAccordion
|
|
85
85
|
groups={groups_all_cards_grouped}
|
|
86
86
|
cardComponent={cardComponent}
|
|
87
|
-
|
|
87
|
+
/>,
|
|
88
88
|
);
|
|
89
89
|
await waitForLoad(rendered);
|
|
90
90
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -95,13 +95,13 @@ describe("<CardGroupsAccordion />", () => {
|
|
|
95
95
|
<CardGroupsAccordion
|
|
96
96
|
groups={groups_any_cards_without_group}
|
|
97
97
|
cardComponent={cardComponent}
|
|
98
|
-
|
|
98
|
+
/>,
|
|
99
99
|
);
|
|
100
100
|
await waitForLoad(rendered);
|
|
101
101
|
|
|
102
102
|
await waitFor(() => {
|
|
103
103
|
expect(
|
|
104
|
-
rendered.getByText(/components.CardGroupsAccordion.withoutGroups/i)
|
|
104
|
+
rendered.getByText(/components.CardGroupsAccordion.withoutGroups/i),
|
|
105
105
|
).toBeInTheDocument();
|
|
106
106
|
});
|
|
107
107
|
});
|
|
@@ -111,7 +111,7 @@ describe("<CardGroupsAccordion />", () => {
|
|
|
111
111
|
<CardGroupsAccordion
|
|
112
112
|
groups={groups_any_cards_without_group}
|
|
113
113
|
cardComponent={cardComponent}
|
|
114
|
-
|
|
114
|
+
/>,
|
|
115
115
|
);
|
|
116
116
|
await waitForLoad(rendered);
|
|
117
117
|
|
|
@@ -120,7 +120,7 @@ describe("<CardGroupsAccordion />", () => {
|
|
|
120
120
|
|
|
121
121
|
await waitFor(() => {
|
|
122
122
|
expect(firstGroup).toMatch(
|
|
123
|
-
/components.CardGroupsAccordion.withoutGroups/i
|
|
123
|
+
/components.CardGroupsAccordion.withoutGroups/i,
|
|
124
124
|
);
|
|
125
125
|
});
|
|
126
126
|
});
|
|
@@ -130,7 +130,7 @@ describe("<CardGroupsAccordion />", () => {
|
|
|
130
130
|
<CardGroupsAccordion
|
|
131
131
|
groups={groups_any_cards_without_group}
|
|
132
132
|
cardComponent={cardComponent}
|
|
133
|
-
|
|
133
|
+
/>,
|
|
134
134
|
);
|
|
135
135
|
await waitForLoad(rendered);
|
|
136
136
|
|
|
@@ -84,7 +84,7 @@ describe("<CatalogMenu />", () => {
|
|
|
84
84
|
const activeMenus = rendered.container.querySelectorAll("a.active");
|
|
85
85
|
expect(activeMenus.length).toBe(1);
|
|
86
86
|
expect(
|
|
87
|
-
within(activeMenus[0]).getByText("metadata.region")
|
|
87
|
+
within(activeMenus[0]).getByText("metadata.region"),
|
|
88
88
|
).toBeInTheDocument();
|
|
89
89
|
});
|
|
90
90
|
});
|
|
@@ -4,7 +4,7 @@ import { DateTime } from "..";
|
|
|
4
4
|
describe("<DateTime />", () => {
|
|
5
5
|
it("matches the latest snapshot", () => {
|
|
6
6
|
const { container } = render(
|
|
7
|
-
<DateTime value="2018-06-27T07:32:53.154377Z"
|
|
7
|
+
<DateTime value="2018-06-27T07:32:53.154377Z" />,
|
|
8
8
|
);
|
|
9
9
|
expect(container).toMatchSnapshot();
|
|
10
10
|
});
|
|
@@ -159,7 +159,7 @@ describe("<DomainSearchFilter />", () => {
|
|
|
159
159
|
const rendered = render(
|
|
160
160
|
<div onKeyDown={onKeyDown}>
|
|
161
161
|
<DomainSearchFilter {...props} />
|
|
162
|
-
</div
|
|
162
|
+
</div>,
|
|
163
163
|
);
|
|
164
164
|
const searchInput = rendered.container.querySelector(".search input");
|
|
165
165
|
|
|
@@ -176,7 +176,7 @@ describe("<DomainSearchFilter />", () => {
|
|
|
176
176
|
const rendered = render(
|
|
177
177
|
<div onClick={onClick}>
|
|
178
178
|
<DomainSearchFilter {...props} />
|
|
179
|
-
</div
|
|
179
|
+
</div>,
|
|
180
180
|
);
|
|
181
181
|
const searchInput = rendered.container.querySelector(".search input");
|
|
182
182
|
|
|
@@ -26,7 +26,7 @@ describe("<DomainSearchFilterItem />", () => {
|
|
|
26
26
|
|
|
27
27
|
it("matches snapshot when selected is true", () => {
|
|
28
28
|
const rendered = render(
|
|
29
|
-
<DomainSearchFilterItem {...getProps()} selected={true}
|
|
29
|
+
<DomainSearchFilterItem {...getProps()} selected={true} />,
|
|
30
30
|
);
|
|
31
31
|
expect(rendered.container).toMatchSnapshot();
|
|
32
32
|
});
|
|
@@ -37,7 +37,7 @@ describe("<DomainSearchFilterItem />", () => {
|
|
|
37
37
|
{...getProps()}
|
|
38
38
|
selected={false}
|
|
39
39
|
partialSelected={true}
|
|
40
|
-
|
|
40
|
+
/>,
|
|
41
41
|
);
|
|
42
42
|
expect(rendered.container).toMatchSnapshot();
|
|
43
43
|
});
|
|
@@ -76,14 +76,14 @@ describe("<DomainSearchFilterItem />", () => {
|
|
|
76
76
|
|
|
77
77
|
it("does not render chevron and toggle icons when canOpen is false", () => {
|
|
78
78
|
const rendered = render(
|
|
79
|
-
<DomainSearchFilterItem {...getProps({ canOpen: false })}
|
|
79
|
+
<DomainSearchFilterItem {...getProps({ canOpen: false })} />,
|
|
80
80
|
);
|
|
81
81
|
|
|
82
82
|
expect(
|
|
83
|
-
rendered.container.querySelector(".chevron.right.icon")
|
|
83
|
+
rendered.container.querySelector(".chevron.right.icon"),
|
|
84
84
|
).not.toBeInTheDocument();
|
|
85
85
|
expect(
|
|
86
|
-
rendered.container.querySelector(".toggle-children")
|
|
86
|
+
rendered.container.querySelector(".toggle-children"),
|
|
87
87
|
).not.toBeInTheDocument();
|
|
88
88
|
});
|
|
89
89
|
|
|
@@ -96,11 +96,11 @@ describe("<DomainSearchFilterItem />", () => {
|
|
|
96
96
|
};
|
|
97
97
|
const rendered = render(
|
|
98
98
|
<DomainSearchFilterItem {...getProps({ canOpen: true })} />,
|
|
99
|
-
{ messages }
|
|
99
|
+
{ messages },
|
|
100
100
|
);
|
|
101
101
|
|
|
102
102
|
expect(
|
|
103
|
-
rendered.container.querySelector(".toggle-children")
|
|
103
|
+
rendered.container.querySelector(".toggle-children"),
|
|
104
104
|
).not.toBeInTheDocument();
|
|
105
105
|
});
|
|
106
106
|
});
|
|
@@ -15,7 +15,7 @@ describe("<DomainSelector />", () => {
|
|
|
15
15
|
const props = { action, onChange: jest.fn(), className: "test className" };
|
|
16
16
|
const { container, queryByText } = render(
|
|
17
17
|
<DomainSelector {...props} />,
|
|
18
|
-
renderOpts
|
|
18
|
+
renderOpts,
|
|
19
19
|
);
|
|
20
20
|
await waitFor(() => {
|
|
21
21
|
expect(queryByText(/fooDomain/)).toBeInTheDocument();
|
|
@@ -32,7 +32,7 @@ describe("<DomainSelector />", () => {
|
|
|
32
32
|
};
|
|
33
33
|
const { container, queryByText } = render(
|
|
34
34
|
<DomainSelector {...props} />,
|
|
35
|
-
renderOpts
|
|
35
|
+
renderOpts,
|
|
36
36
|
);
|
|
37
37
|
await waitFor(() => {
|
|
38
38
|
expect(queryByText(/fooDomain/)).toBeInTheDocument();
|
|
@@ -44,7 +44,7 @@ describe("<DomainSelector />", () => {
|
|
|
44
44
|
const props = { action, onChange: jest.fn(), multiple: true };
|
|
45
45
|
const { getByText, getByRole } = render(
|
|
46
46
|
<DomainSelector {...props} />,
|
|
47
|
-
renderOpts
|
|
47
|
+
renderOpts,
|
|
48
48
|
);
|
|
49
49
|
|
|
50
50
|
await waitFor(() => {
|
|
@@ -40,7 +40,7 @@ describe("<DropdownMenuItem />", () => {
|
|
|
40
40
|
|
|
41
41
|
await waitFor(() => {
|
|
42
42
|
expect(
|
|
43
|
-
container.querySelector('[class="chevron down icon"]')
|
|
43
|
+
container.querySelector('[class="chevron down icon"]'),
|
|
44
44
|
).toBeTruthy();
|
|
45
45
|
});
|
|
46
46
|
});
|
|
@@ -50,7 +50,7 @@ describe("<DropdownMenuItem />", () => {
|
|
|
50
50
|
<DropdownMenuItem {...props} />,
|
|
51
51
|
{
|
|
52
52
|
messages: {},
|
|
53
|
-
}
|
|
53
|
+
},
|
|
54
54
|
);
|
|
55
55
|
|
|
56
56
|
userEvent.click(getByRole("option"));
|
|
@@ -63,7 +63,7 @@ describe("<DropdownMenuItem />", () => {
|
|
|
63
63
|
|
|
64
64
|
await waitFor(() => {
|
|
65
65
|
expect(
|
|
66
|
-
container.querySelector('[class="check square outline icon"]')
|
|
66
|
+
container.querySelector('[class="check square outline icon"]'),
|
|
67
67
|
).toBeTruthy();
|
|
68
68
|
});
|
|
69
69
|
});
|
|
@@ -55,12 +55,12 @@ describe("<FilterDropdown/>", () => {
|
|
|
55
55
|
const selectedOption = customProps.options[6].text;
|
|
56
56
|
|
|
57
57
|
const { getByRole, getAllByRole, rerender } = render(
|
|
58
|
-
<FilterDropdown {...customProps}
|
|
58
|
+
<FilterDropdown {...customProps} />,
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
expect(customProps.toggleFilterValue).toBeCalledTimes(0);
|
|
62
62
|
await user.click(
|
|
63
|
-
getByRole("option", { name: new RegExp(selectedOption, "i") })
|
|
63
|
+
getByRole("option", { name: new RegExp(selectedOption, "i") }),
|
|
64
64
|
);
|
|
65
65
|
expect(customProps.toggleFilterValue).toBeCalledWith({
|
|
66
66
|
filter: props.filter,
|
|
@@ -74,7 +74,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
74
74
|
rerender(<FilterDropdown {...rerenderProps} />);
|
|
75
75
|
|
|
76
76
|
expect(
|
|
77
|
-
within(getAllByRole("option")[0]).queryByText(selectedOption)
|
|
77
|
+
within(getAllByRole("option")[0]).queryByText(selectedOption),
|
|
78
78
|
).not.toBeNull();
|
|
79
79
|
});
|
|
80
80
|
|
|
@@ -87,14 +87,14 @@ describe("<FilterDropdown/>", () => {
|
|
|
87
87
|
const searchText = "3";
|
|
88
88
|
|
|
89
89
|
const { getByRole, queryByRole, getAllByRole } = render(
|
|
90
|
-
<FilterDropdown {...customProps}
|
|
90
|
+
<FilterDropdown {...customProps} />,
|
|
91
91
|
);
|
|
92
92
|
const input = getByRole("textbox");
|
|
93
93
|
|
|
94
94
|
expect(
|
|
95
95
|
getByRole("option", {
|
|
96
96
|
name: new RegExp(customProps.options[1].text, "i"),
|
|
97
|
-
})
|
|
97
|
+
}),
|
|
98
98
|
).toBeInTheDocument();
|
|
99
99
|
|
|
100
100
|
await user.type(input, searchText);
|
|
@@ -102,11 +102,11 @@ describe("<FilterDropdown/>", () => {
|
|
|
102
102
|
expect(
|
|
103
103
|
queryByRole("option", {
|
|
104
104
|
name: new RegExp(customProps.options[1].text, "i"),
|
|
105
|
-
})
|
|
105
|
+
}),
|
|
106
106
|
).toBeNull();
|
|
107
107
|
|
|
108
108
|
expect(
|
|
109
|
-
within(getByRole("option")).getByText(`value${searchText}`)
|
|
109
|
+
within(getByRole("option")).getByText(`value${searchText}`),
|
|
110
110
|
).toBeInTheDocument();
|
|
111
111
|
|
|
112
112
|
expect(getAllByRole("option").length).toBe(1);
|
|
@@ -124,24 +124,24 @@ describe("<FilterDropdown/>", () => {
|
|
|
124
124
|
const searchText = "3";
|
|
125
125
|
|
|
126
126
|
const { getByRole, queryByRole, getAllByRole } = render(
|
|
127
|
-
<FilterDropdown {...customProps}
|
|
127
|
+
<FilterDropdown {...customProps} />,
|
|
128
128
|
);
|
|
129
129
|
const input = getByRole("textbox");
|
|
130
130
|
|
|
131
131
|
await user.type(input, searchText);
|
|
132
132
|
|
|
133
133
|
expect(
|
|
134
|
-
within(getAllByRole("option")[0]).getByText(selectedOption)
|
|
134
|
+
within(getAllByRole("option")[0]).getByText(selectedOption),
|
|
135
135
|
).toBeInTheDocument();
|
|
136
136
|
|
|
137
137
|
expect(
|
|
138
|
-
within(getAllByRole("option")[1]).getByText(`value${searchText}`)
|
|
138
|
+
within(getAllByRole("option")[1]).getByText(`value${searchText}`),
|
|
139
139
|
).toBeInTheDocument();
|
|
140
140
|
|
|
141
141
|
expect(
|
|
142
142
|
queryByRole("option", {
|
|
143
143
|
name: new RegExp(customProps.options[1].text, "i"),
|
|
144
|
-
})
|
|
144
|
+
}),
|
|
145
145
|
).toBeNull();
|
|
146
146
|
|
|
147
147
|
expect(getAllByRole("option").length).toBe(2);
|