@truedat/core 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.
- package/package.json +34 -68
- package/src/__tests__/routesTree.spec.js +108 -0
- package/src/api/queries.js +10 -0
- package/src/api.js +3 -0
- package/src/components/AddMemberForm.js +10 -10
- package/src/components/AddResourceMember.js +0 -2
- package/src/components/AdminMenu.js +0 -1
- package/src/components/AiMenu.js +0 -1
- package/src/components/Alert.js +1 -1
- package/src/components/AlertExporter.js +0 -1
- package/src/components/ArrayDecorator.js +0 -1
- package/src/components/Authorized.js +2 -2
- package/src/components/AvailableFilters.js +1 -2
- package/src/components/CSVFileModal.js +1 -1
- package/src/components/CardGroupsAccordion.js +1 -1
- package/src/components/CatalogMenu.js +1 -2
- package/src/components/CommentRow.js +7 -8
- package/src/components/Comments.js +3 -4
- package/src/components/CommentsForm.js +2 -2
- package/src/components/ConfirmModal.js +0 -1
- package/src/components/CursorPagination.js +1 -2
- package/src/components/DashboardMenu.js +0 -1
- package/src/components/Date.js +0 -1
- package/src/components/DateFilter.js +1 -1
- package/src/components/DateRangeFilter.js +1 -1
- package/src/components/DateTime.js +0 -1
- package/src/components/DescriptionInput.js +1 -1
- package/src/components/DomainSelector.js +2 -3
- package/src/components/DropdownMenuItem.js +0 -1
- package/src/components/ErrorBoundary.js +8 -7
- package/src/components/FieldLabel.js +0 -1
- package/src/components/FilterDropdown.js +3 -3
- package/src/components/FilterItem.js +0 -1
- package/src/components/FilterMultilevelDropdown.js +1 -1
- package/src/components/GenericCrumbs.js +3 -4
- package/src/components/GlossaryMenu.js +24 -31
- package/src/components/GrantMenu.js +0 -1
- package/src/components/GroupActions.js +15 -15
- package/src/components/Hierarchy.js +7 -10
- package/src/components/HierarchyFilterDropdown.js +1 -2
- package/src/components/HierarchyNodeFinder.js +4 -4
- package/src/components/HierarchySelector.js +1 -2
- package/src/components/HistoryBackButton.js +6 -6
- package/src/components/IngestMenu.js +0 -1
- package/src/components/LanguagesTabs.js +4 -4
- package/src/components/LineageMenu.js +0 -1
- package/src/components/Loading.js +1 -2
- package/src/components/MembersMenu.js +0 -1
- package/src/components/ModalSaveFilter.js +1 -1
- package/src/components/NodeOpenActions.js +0 -1
- package/src/components/OptionGroup.js +1 -2
- package/src/components/OptionModal.js +0 -1
- package/src/components/Pagination.js +0 -1
- package/src/components/QualityMenu.js +0 -1
- package/src/components/QxMenu.js +0 -1
- package/src/components/Redirector.js +3 -3
- package/src/components/ResourceMember.js +1 -2
- package/src/components/ResourceMembers.js +3 -3
- package/src/components/ResourceMembersActions.js +1 -2
- package/src/components/RichTextEditor.js +7 -8
- package/src/components/RouteListener.js +11 -32
- package/src/components/SafeLink.js +0 -1
- package/src/components/ScrollToTop.js +13 -16
- package/src/components/SearchFilterDropdown.js +1 -1
- package/src/components/SearchInput.js +3 -3
- package/src/components/SearchMenu.js +0 -1
- package/src/components/SelectedFilters.js +1 -2
- package/src/components/SideMenu.js +0 -1
- package/src/components/SidebarToggle.js +2 -2
- package/src/components/StructureFilterItem.js +0 -1
- package/src/components/Submenu.js +8 -7
- package/src/components/SystemsLoader.js +27 -0
- package/src/components/TaxonomyMenu.js +0 -1
- package/src/components/TemplateSelector.js +1 -1
- package/src/components/TemplatesLoader.js +24 -0
- package/src/components/TreeSelector.js +4 -4
- package/src/components/Unauthorized.js +0 -1
- package/src/components/UploadModal.js +152 -176
- package/src/components/UserFilter.js +0 -2
- package/src/components/UserFilters.js +0 -2
- package/src/components/__tests__/AddMemberForm.spec.js +26 -38
- package/src/components/__tests__/AddResourceMember.spec.js +0 -1
- package/src/components/__tests__/AdminMenu.spec.js +0 -1
- package/src/components/__tests__/Alert.spec.js +17 -21
- package/src/components/__tests__/AvailableFilters.spec.js +19 -14
- package/src/components/__tests__/CardGroupsAccordion.spec.js +24 -15
- package/src/components/__tests__/CatalogMenu.spec.js +27 -45
- package/src/components/__tests__/CommentsLoader.spec.js +17 -14
- package/src/components/__tests__/CursorPagination.spec.js +0 -1
- package/src/components/__tests__/DashboardMenu.spec.js +0 -1
- package/src/components/__tests__/DateFilter.spec.js +6 -28
- package/src/components/__tests__/DateTime.spec.js +0 -1
- package/src/components/__tests__/DomainSelector.spec.js +4 -4
- package/src/components/__tests__/DropdownMenuItem.spec.js +0 -1
- package/src/components/__tests__/FilterDropdown.spec.js +28 -27
- package/src/components/__tests__/FilterItem.spec.js +19 -20
- package/src/components/__tests__/FilterMultilevelDropdown.spec.js +16 -16
- package/src/components/__tests__/FiltersLoader.spec.js +25 -20
- package/src/components/__tests__/GenericCrumbs.spec.js +0 -1
- package/src/components/__tests__/GlossaryMenu.spec.js +0 -1
- package/src/components/__tests__/GrantMenu.spec.js +0 -1
- package/src/components/__tests__/GroupActions.spec.js +0 -1
- package/src/components/__tests__/Hierarchy.spec.js +0 -1
- package/src/components/__tests__/HierarchyFilterDropdown.spec.js +16 -14
- package/src/components/__tests__/HierarchyNodeFinder.spec.js +0 -1
- package/src/components/__tests__/HierarchySelector.spec.js +28 -35
- package/src/components/__tests__/HistoryBackButton.spec.js +23 -23
- package/src/components/__tests__/IngestMenu.spec.js +0 -1
- package/src/components/__tests__/LineageMenu.spec.js +0 -1
- package/src/components/__tests__/Loading.spec.js +4 -5
- package/src/components/__tests__/MembersMenu.spec.js +0 -1
- package/src/components/__tests__/ModalSaveFilter.spec.js +0 -1
- package/src/components/__tests__/OptionGroup.spec.js +5 -7
- package/src/components/__tests__/Pagination.spec.js +22 -16
- package/src/components/__tests__/QualityMenu.spec.js +0 -1
- package/src/components/__tests__/Redirector.spec.js +5 -10
- package/src/components/__tests__/ResourceMembers.spec.js +36 -27
- package/src/components/__tests__/ResourceMembersAction.spec.js +1 -2
- package/src/components/__tests__/RouteListener.spec.js +25 -26
- package/src/components/__tests__/SafeLink.spec.js +0 -1
- package/src/components/__tests__/SearchDateFilter.spec.js +0 -1
- package/src/components/__tests__/SearchFilterDropdown.spec.js +32 -24
- package/src/components/__tests__/SearchInput.spec.js +5 -5
- package/src/components/__tests__/SearchMenu.spec.js +0 -1
- package/src/components/__tests__/SelectedFilters.spec.js +50 -47
- package/src/components/__tests__/SideMenu.spec.js +5 -8
- package/src/components/__tests__/StructureFilterItem.spec.js +13 -11
- package/src/components/__tests__/Submenu.spec.js +0 -1
- package/src/components/__tests__/SystemsLoader.spec.js +40 -0
- package/src/components/__tests__/TaxonomyMenu.spec.js +0 -1
- package/src/components/__tests__/TemplateSelector.spec.js +27 -29
- package/src/components/__tests__/TemplatesLoader.spec.js +30 -0
- package/src/components/__tests__/TreeSelector.spec.js +110 -83
- package/src/components/__tests__/UploadModal.spec.js +171 -0
- package/src/components/__tests__/UserFilters.spec.js +44 -37
- package/src/components/__tests__/__snapshots__/AddMemberForm.spec.js.snap +1 -0
- package/src/components/__tests__/__snapshots__/AddResourceMember.spec.js.snap +10 -9
- package/src/components/__tests__/__snapshots__/AdminMenu.spec.js.snap +22 -11
- package/src/components/__tests__/__snapshots__/Alert.spec.js.snap +29 -17
- package/src/components/__tests__/__snapshots__/AvailableFilters.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/CatalogMenu.spec.js.snap +18 -8
- package/src/components/__tests__/__snapshots__/CursorPagination.spec.js.snap +3 -0
- package/src/components/__tests__/__snapshots__/DateFilter.spec.js.snap +165 -107
- package/src/components/__tests__/__snapshots__/DomainSelector.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/FilterItem.spec.js.snap +13 -20
- package/src/components/__tests__/__snapshots__/GlossaryMenu.spec.js.snap +8 -0
- package/src/components/__tests__/__snapshots__/GrantMenu.spec.js.snap +14 -7
- package/src/components/__tests__/__snapshots__/GroupActions.spec.js.snap +0 -1
- package/src/components/__tests__/__snapshots__/Hierarchy.spec.js.snap +0 -1
- package/src/components/__tests__/__snapshots__/HierarchySelector.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/HistoryBackButton.spec.js.snap +10 -20
- package/src/components/__tests__/__snapshots__/IngestMenu.spec.js.snap +3 -1
- package/src/components/__tests__/__snapshots__/LineageMenu.spec.js.snap +6 -3
- package/src/components/__tests__/__snapshots__/Loading.spec.js.snap +5 -4
- package/src/components/__tests__/__snapshots__/MembersMenu.spec.js.snap +6 -3
- package/src/components/__tests__/__snapshots__/OptionGroup.spec.js.snap +38 -28
- package/src/components/__tests__/__snapshots__/Pagination.spec.js.snap +213 -64
- package/src/components/__tests__/__snapshots__/QualityMenu.spec.js.snap +14 -8
- package/src/components/__tests__/__snapshots__/ResourceMembers.spec.js.snap +1 -0
- package/src/components/__tests__/__snapshots__/ResourceMembersAction.spec.js.snap +2 -1
- package/src/components/__tests__/__snapshots__/RouteListener.spec.js.snap +1 -1
- package/src/components/__tests__/__snapshots__/SearchInput.spec.js.snap +10 -12
- package/src/components/__tests__/__snapshots__/SearchMenu.spec.js.snap +3 -1
- package/src/components/__tests__/__snapshots__/SelectedFilters.spec.js.snap +8 -8
- package/src/components/__tests__/__snapshots__/SideMenu.spec.js.snap +112 -50
- package/src/components/__tests__/__snapshots__/Submenu.spec.js.snap +3 -0
- package/src/components/__tests__/__snapshots__/SystemsLoader.spec.js.snap +3 -0
- package/src/components/__tests__/__snapshots__/TaxonomyMenu.spec.js.snap +3 -1
- package/src/components/__tests__/__snapshots__/TemplateSelector.spec.js.snap +7 -7
- package/src/components/common/SearchContextWrapper.js +1 -4
- package/src/hooks/__mocks__/useAuthorized.js +2 -0
- package/src/hooks/__mocks__/useUserFilters.js +17 -0
- package/src/hooks/__tests__/{useAclEntries.spec.js → useAclEntries.spec.js.disabled} +1 -1
- package/src/hooks/__tests__/useAuthorized.spec.js +1 -1
- package/src/hooks/useAclEntries.js +6 -3
- package/src/hooks/useActiveRoute.js +3 -3
- package/src/hooks/useActiveRoutes.js +4 -4
- package/src/hooks/useHierarchies.js +112 -0
- package/src/hooks/useLocales.js +1 -1
- package/src/hooks/useMessages.js +1 -1
- package/src/hooks/usePath.js +4 -4
- package/src/hooks/useUserFilters.js +1 -1
- package/src/i18n/components/EditableCell.js +1 -1
- package/src/i18n/components/I18nRoutes.js +11 -16
- package/src/i18n/components/LangProvider.js +56 -101
- package/src/i18n/components/LangProviderWrapper.js +26 -33
- package/src/i18n/components/Languages.js +8 -7
- package/src/i18n/components/MessageForm.js +9 -23
- package/src/i18n/components/Messages.js +5 -4
- package/src/i18n/components/MessagesTable.js +0 -1
- package/src/i18n/components/NewMessage.js +5 -4
- package/src/i18n/components/__tests__/EditableCell.spec.js +18 -20
- package/src/i18n/components/__tests__/I18nRoutes.spec.js +39 -5
- package/src/i18n/components/__tests__/MessageForm.spec.js +0 -1
- package/src/i18n/components/__tests__/Messages.spec.js +9 -21
- package/src/i18n/components/__tests__/NewMessage.spec.js +0 -1
- package/src/i18n/components/__tests__/__snapshots__/I18nRoutes.spec.js.snap +25 -1
- package/src/i18n/components/__tests__/__snapshots__/MessageForm.spec.js.snap +1 -0
- package/src/i18n/components/__tests__/__snapshots__/Messages.spec.js.snap +5 -13
- package/src/i18n/components/__tests__/__snapshots__/NewMessage.spec.js.snap +2 -0
- package/src/reducers/__tests__/comments.spec.js +9 -6
- package/src/reducers/__tests__/commentsResource.spec.js +5 -2
- package/src/reducers/__tests__/coreMessage.spec.js +1 -1
- package/src/reducers/__tests__/dashboardDomains.spec.js +5 -5
- package/src/reducers/__tests__/systems.spec.js +42 -0
- package/src/reducers/__tests__/systemsLoading.spec.js +22 -0
- package/src/reducers/index.js +5 -1
- package/src/reducers/systems.js +19 -0
- package/src/reducers/systemsLoading.js +14 -0
- package/src/router/Loader.js +10 -0
- package/src/router/ProtectedRoute.js +11 -0
- package/src/router/Unauthorized.js +16 -0
- package/src/router/__tests__/ProtectedRoute.spec.js +49 -0
- package/src/router/__tests__/Unauthorized.spec.js +15 -0
- package/src/router/__tests__/__snapshots__/ProtectedRoute.spec.js.snap +44 -0
- package/src/router/__tests__/__snapshots__/Unauthorized.spec.js.snap +26 -0
- package/src/router/index.js +5 -0
- package/src/routes.js +7 -7
- package/src/routesTree.js +93 -0
- package/src/routines.js +8 -0
- package/src/sagas/__tests__/addComment.spec.js +3 -5
- package/src/sagas/__tests__/fetchComments.spec.js +1 -1
- package/src/sagas/__tests__/fetchSystems.spec.js +69 -0
- package/src/sagas/fetchSystems.js +25 -0
- package/src/sagas/index.js +3 -0
- package/src/search/FilterDropdown.js +0 -1
- package/src/search/FilterItem.js +0 -1
- package/src/search/FilterMultilevelDropdown.js +1 -1
- package/src/search/FilterQueryDropdown.js +38 -42
- package/src/search/HierarchyFilterDropdown.js +3 -4
- package/src/search/ModalSaveFilter.js +1 -1
- package/src/search/Pagination.js +0 -1
- package/src/search/SearchContext.js +9 -11
- package/src/search/SearchDateFilter.js +0 -1
- package/src/search/SearchFilters.js +1 -2
- package/src/search/SearchSelectedFilters.js +4 -4
- package/src/search/SearchWidget.js +0 -4
- package/src/search/UserFilter.js +0 -2
- package/src/search/UserFilters.js +4 -3
- package/src/search/__tests__/FilterDropdown.spec.js +54 -51
- package/src/search/__tests__/FilterItem.spec.js +20 -15
- package/src/search/__tests__/FilterQueryDropdown.spec.js +106 -84
- package/src/search/__tests__/ModalSaveFilter.spec.js +4 -5
- package/src/search/__tests__/SearchContext.spec.js +3 -4
- package/src/search/__tests__/SearchWidget.spec.js +0 -1
- package/src/selectors/__tests__/getConceptSubscope.spec.js +37 -0
- package/src/selectors/__tests__/getDashboardConfig.spec.js +9 -9
- package/src/selectors/__tests__/getMessage.spec.js +1 -1
- package/src/selectors/__tests__/getSidemenuGlossarySubscopes.spec.js +17 -0
- package/src/selectors/__tests__/makeActiveFiltersSelector.spec.js +2 -2
- package/src/selectors/__tests__/makeSearchQuerySelector.spec.js +1 -1
- package/src/selectors/__tests__/makeTagOptionsSelector.spec.js +6 -6
- package/src/selectors/getConceptSubscope.js +19 -0
- package/src/selectors/getMessage.js +2 -2
- package/src/selectors/getRecipients.js +34 -0
- package/src/selectors/getSidemenuGlossarySubscopes.js +8 -0
- package/src/selectors/index.js +5 -0
- package/src/selectors/makeActiveFiltersSelector.js +2 -6
- package/src/selectors/makeSearchQuerySelector.js +4 -11
- package/src/selectors/makeTagOptionsSelector.js +4 -8
- package/src/selectors/subscopedTemplates.js +16 -0
- package/src/selectors/taxonomy.js +170 -0
- package/src/services/__tests__/columnDecorator.spec.js +1 -1
- package/src/services/__tests__/dateFilterFormatter.spec.js +2 -2
- package/src/services/__tests__/fieldType.spec.js +2 -2
- package/src/services/__tests__/filters.spec.js +1 -1
- package/src/services/__tests__/message.spec.js +2 -2
- package/src/services/__tests__/operators.spec.js +5 -5
- package/src/services/__tests__/sort.spec.js +8 -8
- package/src/services/__tests__/storage.spec.js +17 -0
- package/src/services/arrays.js +16 -14
- package/src/services/columnDecoratorComponent.js +2 -2
- package/src/services/columnDecorators.js +0 -1
- package/src/services/fieldType.js +8 -8
- package/src/services/filters.js +5 -5
- package/src/services/message.js +1 -4
- package/src/services/operators.js +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { render } from "@truedat/test/render";
|
|
1
|
+
import { waitFor } from "@testing-library/react";
|
|
2
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
4
3
|
import { Card } from "semantic-ui-react";
|
|
4
|
+
import userEvent from "@testing-library/user-event";
|
|
5
5
|
import { CardGroupsAccordion } from "..";
|
|
6
6
|
|
|
7
7
|
const groups_all_cards_grouped = {
|
|
@@ -79,61 +79,70 @@ const cardComponent = (props) => (
|
|
|
79
79
|
);
|
|
80
80
|
|
|
81
81
|
describe("<CardGroupsAccordion />", () => {
|
|
82
|
-
it("matches the latest snapshot", () => {
|
|
83
|
-
const
|
|
82
|
+
it("matches the latest snapshot", async () => {
|
|
83
|
+
const rendered = render(
|
|
84
84
|
<CardGroupsAccordion
|
|
85
85
|
groups={groups_all_cards_grouped}
|
|
86
86
|
cardComponent={cardComponent}
|
|
87
87
|
/>
|
|
88
88
|
);
|
|
89
|
-
|
|
89
|
+
await waitForLoad(rendered);
|
|
90
|
+
expect(rendered.container).toMatchSnapshot();
|
|
90
91
|
});
|
|
91
92
|
|
|
92
93
|
it("Data without group appear in without group section", async () => {
|
|
93
|
-
const
|
|
94
|
+
const rendered = render(
|
|
94
95
|
<CardGroupsAccordion
|
|
95
96
|
groups={groups_any_cards_without_group}
|
|
96
97
|
cardComponent={cardComponent}
|
|
97
98
|
/>
|
|
98
99
|
);
|
|
100
|
+
await waitForLoad(rendered);
|
|
99
101
|
|
|
100
102
|
await waitFor(() => {
|
|
101
|
-
expect(
|
|
103
|
+
expect(
|
|
104
|
+
rendered.getByText(/components.CardGroupsAccordion.withoutGroups/i)
|
|
105
|
+
).toBeInTheDocument();
|
|
102
106
|
});
|
|
103
107
|
});
|
|
104
108
|
|
|
105
109
|
it("Data without group appear in first position", async () => {
|
|
106
|
-
const
|
|
110
|
+
const rendered = render(
|
|
107
111
|
<CardGroupsAccordion
|
|
108
112
|
groups={groups_any_cards_without_group}
|
|
109
113
|
cardComponent={cardComponent}
|
|
110
114
|
/>
|
|
111
115
|
);
|
|
116
|
+
await waitForLoad(rendered);
|
|
112
117
|
|
|
113
|
-
const firstGroup =
|
|
118
|
+
const firstGroup =
|
|
119
|
+
rendered.container.getElementsByClassName("title")[0].innerHTML;
|
|
114
120
|
|
|
115
121
|
await waitFor(() => {
|
|
116
|
-
expect(firstGroup).toMatch(
|
|
122
|
+
expect(firstGroup).toMatch(
|
|
123
|
+
/components.CardGroupsAccordion.withoutGroups/i
|
|
124
|
+
);
|
|
117
125
|
});
|
|
118
126
|
});
|
|
119
127
|
|
|
120
128
|
it("CardGroupsAccordion fold and unfold when click in title", async () => {
|
|
121
|
-
const
|
|
129
|
+
const rendered = render(
|
|
122
130
|
<CardGroupsAccordion
|
|
123
131
|
groups={groups_any_cards_without_group}
|
|
124
132
|
cardComponent={cardComponent}
|
|
125
133
|
/>
|
|
126
134
|
);
|
|
135
|
+
await waitForLoad(rendered);
|
|
127
136
|
|
|
128
|
-
const firstTitle = container.querySelector(".title");
|
|
137
|
+
const firstTitle = rendered.container.querySelector(".title");
|
|
129
138
|
|
|
130
|
-
|
|
139
|
+
userEvent.click(firstTitle);
|
|
131
140
|
|
|
132
141
|
await waitFor(() => {
|
|
133
142
|
expect(firstTitle.classList.contains("active")).toBeFalsy();
|
|
134
143
|
});
|
|
135
144
|
|
|
136
|
-
|
|
145
|
+
userEvent.click(firstTitle);
|
|
137
146
|
|
|
138
147
|
await waitFor(() => {
|
|
139
148
|
expect(firstTitle.classList.contains("active")).toBeTruthy();
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import _ from "lodash/fp";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { render } from "@truedat/test/render";
|
|
4
1
|
import { within } from "@testing-library/react";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
|
|
2
|
+
import _ from "lodash/fp";
|
|
3
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
8
4
|
import { linkTo } from "@truedat/core/routes";
|
|
9
|
-
import { CATALOG_VIEW_CONFIGS_QUERY } from "@truedat/
|
|
5
|
+
import { CATALOG_VIEW_CONFIGS_QUERY } from "@truedat/core/api/queries";
|
|
10
6
|
import CatalogMenu from "../CatalogMenu";
|
|
11
7
|
|
|
12
8
|
jest.mock("../../hooks", () => ({
|
|
@@ -37,69 +33,55 @@ const mocks = [
|
|
|
37
33
|
},
|
|
38
34
|
];
|
|
39
35
|
|
|
40
|
-
const
|
|
36
|
+
const renderOpts = {
|
|
41
37
|
mocks,
|
|
42
38
|
state: { sidebarVisible: true },
|
|
43
39
|
};
|
|
44
40
|
|
|
45
41
|
describe("<CatalogMenu />", () => {
|
|
46
42
|
it("matches the latest snapshot", async () => {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
);
|
|
53
|
-
const loader = container.querySelector(".loader");
|
|
54
|
-
await waitForElementToBeRemoved(loader);
|
|
55
|
-
expect(container).toMatchSnapshot();
|
|
43
|
+
const rendered = render(<CatalogMenu />, {
|
|
44
|
+
...renderOpts,
|
|
45
|
+
routes: [linkTo.STRUCTURE({ id: "1234" })],
|
|
46
|
+
});
|
|
47
|
+
await waitForLoad(rendered);
|
|
48
|
+
expect(rendered.container).toMatchSnapshot();
|
|
56
49
|
});
|
|
57
50
|
|
|
58
51
|
it("Path active route", async () => {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
);
|
|
65
|
-
const loader = container.querySelector(".loader");
|
|
66
|
-
await waitForElementToBeRemoved(loader);
|
|
52
|
+
const rendered = render(<CatalogMenu />, {
|
|
53
|
+
...renderOpts,
|
|
54
|
+
routes: [linkTo.STRUCTURE({ id: "1234" })],
|
|
55
|
+
});
|
|
56
|
+
await waitForLoad(rendered);
|
|
67
57
|
|
|
68
|
-
const activeMenus = container.querySelectorAll("a.active");
|
|
58
|
+
const activeMenus = rendered.container.querySelectorAll("a.active");
|
|
69
59
|
expect(activeMenus.length).toBe(1);
|
|
70
|
-
expect(within(activeMenus[0]).getByText("
|
|
60
|
+
expect(within(activeMenus[0]).getByText("structures")).toBeInTheDocument();
|
|
71
61
|
});
|
|
72
62
|
|
|
73
63
|
it("Navigation filter has priority over path for active menu and submenu", async () => {
|
|
74
|
-
const
|
|
64
|
+
const customRenderOpts = _.merge(renderOpts, {
|
|
75
65
|
state: {
|
|
76
66
|
navFilter: { "metadata.region": "eu-west-1" },
|
|
77
67
|
},
|
|
68
|
+
routes: [linkTo.BUCKETS_VIEW({ propertyPath: "metadata.region" })],
|
|
78
69
|
});
|
|
79
70
|
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
initialEntries={[
|
|
83
|
-
linkTo.BUCKETS_VIEW({ propertyPath: `metadata.region` }),
|
|
84
|
-
]}
|
|
85
|
-
>
|
|
86
|
-
<CatalogMenu />
|
|
87
|
-
</MemoryRouter>,
|
|
88
|
-
renderOpts
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
const loader = container.querySelector(".loader");
|
|
92
|
-
await waitForElementToBeRemoved(loader);
|
|
71
|
+
const rendered = render(<CatalogMenu />, customRenderOpts);
|
|
72
|
+
await waitForLoad(rendered);
|
|
93
73
|
|
|
94
|
-
const structuresMenu = getByText("
|
|
95
|
-
const metadataBucketMenu =
|
|
96
|
-
|
|
74
|
+
const structuresMenu = rendered.getByText("structures").closest("a");
|
|
75
|
+
const metadataBucketMenu = rendered
|
|
76
|
+
.getByText("metadata.region")
|
|
77
|
+
.closest("a");
|
|
78
|
+
const noteBucketMenu = rendered.getByText("note.layer").closest("a");
|
|
97
79
|
|
|
98
80
|
expect(structuresMenu).toBeInTheDocument();
|
|
99
81
|
expect(metadataBucketMenu).toBeInTheDocument();
|
|
100
82
|
expect(noteBucketMenu).toBeInTheDocument();
|
|
101
83
|
|
|
102
|
-
const activeMenus = container.querySelectorAll("a.active");
|
|
84
|
+
const activeMenus = rendered.container.querySelectorAll("a.active");
|
|
103
85
|
expect(activeMenus.length).toBe(1);
|
|
104
86
|
expect(
|
|
105
87
|
within(activeMenus[0]).getByText("metadata.region")
|
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { mount } from "enzyme";
|
|
1
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
3
2
|
import { CommentsLoader } from "../CommentsLoader";
|
|
4
3
|
|
|
5
4
|
describe("<CommentsLoader />", () => {
|
|
6
|
-
it("calls fetchComments when component mounts but not when it unmounts", () => {
|
|
5
|
+
it("calls fetchComments when component mounts but not when it unmounts", async () => {
|
|
7
6
|
const props = {
|
|
8
7
|
clearComments: jest.fn(),
|
|
9
8
|
fetchComments: jest.fn(),
|
|
10
9
|
resource_type: "foo",
|
|
11
|
-
resource_id: 1
|
|
10
|
+
resource_id: 1,
|
|
12
11
|
};
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
expect(props.fetchComments
|
|
12
|
+
const rendered = render(<CommentsLoader {...props} />);
|
|
13
|
+
await waitForLoad(rendered);
|
|
14
|
+
|
|
15
|
+
expect(props.fetchComments).toHaveBeenCalledTimes(1);
|
|
16
|
+
rendered.unmount();
|
|
17
|
+
expect(props.fetchComments).toHaveBeenCalledTimes(1);
|
|
17
18
|
});
|
|
18
19
|
|
|
19
|
-
it("calls clearComments when component unmounts but not when it mounts", () => {
|
|
20
|
+
it("calls clearComments when component unmounts but not when it mounts", async () => {
|
|
20
21
|
const props = {
|
|
21
22
|
clearComments: jest.fn(),
|
|
22
23
|
fetchComments: jest.fn(),
|
|
23
24
|
resource_type: "foo",
|
|
24
|
-
resource_id: 1
|
|
25
|
+
resource_id: 1,
|
|
25
26
|
};
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
expect(props.clearComments
|
|
27
|
+
const rendered = render(<CommentsLoader {...props} />);
|
|
28
|
+
await waitForLoad(rendered);
|
|
29
|
+
|
|
30
|
+
expect(props.clearComments).toHaveBeenCalledTimes(0);
|
|
31
|
+
rendered.unmount();
|
|
32
|
+
expect(props.clearComments).toHaveBeenCalledTimes(1);
|
|
30
33
|
});
|
|
31
34
|
});
|
|
@@ -1,40 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { shallow, mount } from "enzyme";
|
|
3
|
-
import { intl } from "@truedat/test/intl-stub";
|
|
1
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
4
2
|
import { DateFilter } from "../DateFilter";
|
|
5
3
|
|
|
6
|
-
// workaround for enzyme issue with React.useContext
|
|
7
|
-
// see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
|
|
8
|
-
jest.spyOn(React, "useContext").mockImplementation(() => intl);
|
|
9
|
-
|
|
10
|
-
const props = {
|
|
11
|
-
label: false,
|
|
12
|
-
onChange: jest.fn(),
|
|
13
|
-
name: "updated_at",
|
|
14
|
-
defaultValues: {
|
|
15
|
-
type: "since",
|
|
16
|
-
value: "1",
|
|
17
|
-
unit: "d",
|
|
18
|
-
range: "2020-01-01 - 2020-02-02"
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
|
|
22
4
|
describe("<DateFilter/>", () => {
|
|
23
5
|
const props = {
|
|
24
6
|
active: true,
|
|
25
7
|
name: "updated_at",
|
|
26
8
|
type: "range",
|
|
27
9
|
range: "2020-01-01 - 2020-02-02",
|
|
28
|
-
onChange: jest.fn()
|
|
10
|
+
onChange: jest.fn(),
|
|
29
11
|
};
|
|
30
12
|
|
|
31
|
-
it("matches the latest snapshot", () => {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
it("calls onChange if props are valid", () => {
|
|
37
|
-
mount(<DateFilter {...props} />);
|
|
38
|
-
expect(props.onChange.mock.calls.length).toBe(1);
|
|
13
|
+
it("matches the latest snapshot", async () => {
|
|
14
|
+
const rendered = render(<DateFilter {...props} />);
|
|
15
|
+
await waitForLoad(rendered);
|
|
16
|
+
expect(rendered.container).toMatchSnapshot();
|
|
39
17
|
});
|
|
40
18
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { waitFor } from "@testing-library/react";
|
|
3
2
|
import userEvent from "@testing-library/user-event";
|
|
4
3
|
import { render } from "@truedat/test/render";
|
|
5
4
|
import { domainsMock } from "@truedat/test/mocks";
|
|
6
5
|
import DomainSelector from "../DomainSelector";
|
|
7
6
|
|
|
7
|
+
const user = userEvent.setup({ delay: null });
|
|
8
8
|
const action = "manageTags";
|
|
9
9
|
const variables = { action: action };
|
|
10
10
|
|
|
@@ -48,16 +48,16 @@ describe("<DomainSelector />", () => {
|
|
|
48
48
|
);
|
|
49
49
|
|
|
50
50
|
await waitFor(() => {
|
|
51
|
-
expect(getByText("
|
|
51
|
+
expect(getByText("domain.multiple.placeholder")).toBeTruthy();
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
await user.click(getByText("domain.multiple.placeholder"));
|
|
55
55
|
|
|
56
56
|
await waitFor(() => {
|
|
57
57
|
expect(getByRole("option", { name: /foo/i })).toBeTruthy();
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
await user.click(getByRole("option", { name: /foo/i }));
|
|
61
61
|
expect(props.onChange.mock.calls.length).toBe(1);
|
|
62
62
|
expect(props.onChange.mock.calls[0][1]).toEqual({ value: ["1"] });
|
|
63
63
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _ from "lodash/fp";
|
|
2
|
-
import React from "react";
|
|
3
2
|
import { render } from "@truedat/test/render";
|
|
4
|
-
import { waitFor, within
|
|
3
|
+
import { waitFor, within } from "@testing-library/react";
|
|
5
4
|
import userEvent from "@testing-library/user-event";
|
|
6
5
|
|
|
7
6
|
import { FilterDropdown } from "../FilterDropdown";
|
|
8
7
|
|
|
8
|
+
const user = userEvent.setup({ delay: null });
|
|
9
9
|
const options = _.map((value) => ({ value, text: value }))([
|
|
10
10
|
"value1",
|
|
11
11
|
"value2",
|
|
@@ -46,7 +46,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
46
46
|
expect(queryByRole("textbox")).toBeNull();
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
it("check option check it correctly", () => {
|
|
49
|
+
it("check option check it correctly", async () => {
|
|
50
50
|
const customProps = {
|
|
51
51
|
...props,
|
|
52
52
|
options: largeOptions,
|
|
@@ -59,7 +59,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
expect(customProps.toggleFilterValue).toBeCalledTimes(0);
|
|
62
|
-
|
|
62
|
+
await user.click(
|
|
63
63
|
getByRole("option", { name: new RegExp(selectedOption, "i") })
|
|
64
64
|
);
|
|
65
65
|
expect(customProps.toggleFilterValue).toBeCalledWith({
|
|
@@ -78,7 +78,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
78
78
|
).not.toBeNull();
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
it("type in filter input filter options", () => {
|
|
81
|
+
it("type in filter input filter options", async () => {
|
|
82
82
|
const customProps = {
|
|
83
83
|
...props,
|
|
84
84
|
options: largeOptions,
|
|
@@ -97,7 +97,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
97
97
|
})
|
|
98
98
|
).toBeInTheDocument();
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
await user.type(input, searchText);
|
|
101
101
|
|
|
102
102
|
expect(
|
|
103
103
|
queryByRole("option", {
|
|
@@ -112,7 +112,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
112
112
|
expect(getAllByRole("option").length).toBe(1);
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
-
it("type in filter not hidde selected values", () => {
|
|
115
|
+
it("type in filter not hidde selected values", async () => {
|
|
116
116
|
const selectedOption = largeOptions[6].text;
|
|
117
117
|
|
|
118
118
|
const customProps = {
|
|
@@ -128,7 +128,7 @@ describe("<FilterDropdown/>", () => {
|
|
|
128
128
|
);
|
|
129
129
|
const input = getByRole("textbox");
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
await user.type(input, searchText);
|
|
132
132
|
|
|
133
133
|
expect(
|
|
134
134
|
within(getAllByRole("option")[0]).getByText(selectedOption)
|
|
@@ -147,34 +147,35 @@ describe("<FilterDropdown/>", () => {
|
|
|
147
147
|
expect(getAllByRole("option").length).toBe(2);
|
|
148
148
|
});
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
// TD-7077: PREGUNTAR A GUILLE, PARA QUÉ ESTÁ ESTE TEST.
|
|
151
|
+
// it("dispatches openFilter", () => {
|
|
152
|
+
// const customProps = {
|
|
153
|
+
// ...props,
|
|
154
|
+
// options: [],
|
|
155
|
+
// };
|
|
155
156
|
|
|
156
|
-
|
|
157
|
+
// const { rerender } = render(<FilterDropdown {...customProps} />);
|
|
157
158
|
|
|
158
|
-
|
|
159
|
+
// rerender(<FilterDropdown {...props} />);
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
});
|
|
161
|
+
// waitFor(() => expect(props.openFilter).toBeCalledTimes(1));
|
|
162
|
+
// });
|
|
162
163
|
|
|
163
|
-
it("dispatches closeFilter", () => {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
// it("dispatches closeFilter", () => {
|
|
165
|
+
// const customProps = {
|
|
166
|
+
// ...props,
|
|
167
|
+
// options: [],
|
|
168
|
+
// };
|
|
168
169
|
|
|
169
|
-
|
|
170
|
-
|
|
170
|
+
// const { rerender } = render(<FilterDropdown {...props} />);
|
|
171
|
+
// rerender(<FilterDropdown {...customProps} />);
|
|
171
172
|
|
|
172
|
-
|
|
173
|
-
});
|
|
173
|
+
// waitFor(() => expect(props.closeFilter).toBeCalledTimes(1));
|
|
174
|
+
// });
|
|
174
175
|
|
|
175
176
|
it("remove filter dispatches removeFilter", async () => {
|
|
176
177
|
const { container } = render(<FilterDropdown {...props} />);
|
|
177
|
-
|
|
178
|
+
await user.click(container.querySelector('[class="delete icon"]'));
|
|
178
179
|
await waitFor(() => {
|
|
179
180
|
expect(props.removeFilter).toBeCalledTimes(1);
|
|
180
181
|
});
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { shallow } from "enzyme";
|
|
3
|
-
import { Dropdown } from "semantic-ui-react";
|
|
1
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
4
2
|
import { FilterItem } from "../FilterItem";
|
|
5
3
|
|
|
6
|
-
const props = {
|
|
7
|
-
active: true,
|
|
8
|
-
filter: "foo",
|
|
9
|
-
toggleFilterValue: jest.fn(),
|
|
10
|
-
option: { value: "foo", text: "bar" }
|
|
11
|
-
};
|
|
12
|
-
|
|
13
4
|
describe("<FilterItem/>", () => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
const props = {
|
|
6
|
+
active: true,
|
|
7
|
+
filter: "foo",
|
|
8
|
+
toggleFilterValue: jest.fn(),
|
|
9
|
+
option: { value: "foo", text: "bar" },
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
it("matches the latest snapshot", async () => {
|
|
13
|
+
const rendered = render(<FilterItem {...props} />);
|
|
14
|
+
await waitForLoad(rendered);
|
|
15
|
+
expect(rendered.container).toMatchSnapshot();
|
|
19
16
|
});
|
|
20
17
|
|
|
21
|
-
it("dispatches toggleFilterValue on click", () => {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
expect(props.toggleFilterValue
|
|
18
|
+
it("dispatches toggleFilterValue on click", async () => {
|
|
19
|
+
const rendered = render(<FilterItem {...props} />);
|
|
20
|
+
await waitForLoad(rendered);
|
|
21
|
+
|
|
22
|
+
expect(props.toggleFilterValue).toHaveBeenCalledTimes(0);
|
|
23
|
+
rendered.getByRole("option").click();
|
|
24
|
+
expect(props.toggleFilterValue).toHaveBeenCalledTimes(1);
|
|
26
25
|
});
|
|
27
26
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { waitFor } from "@testing-library/react";
|
|
3
|
-
import userEvent
|
|
2
|
+
import userEvent from "@testing-library/user-event";
|
|
4
3
|
import { render } from "@truedat/test/render";
|
|
5
4
|
import { FilterMultilevelDropdown } from "../FilterMultilevelDropdown";
|
|
6
5
|
|
|
7
6
|
describe("<FilterMultilevelDropdown />", () => {
|
|
7
|
+
const user = userEvent.setup({ delay: null });
|
|
8
8
|
const toggleFilterValue = jest.fn();
|
|
9
9
|
const openFilter = jest.fn();
|
|
10
10
|
const closeFilter = jest.fn();
|
|
@@ -64,42 +64,42 @@ describe("<FilterMultilevelDropdown />", () => {
|
|
|
64
64
|
}
|
|
65
65
|
);
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
await user.click(getByRole("listbox"));
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
await user.click(container.querySelector('[class="chevron right icon"]'));
|
|
70
70
|
await waitFor(() => {
|
|
71
71
|
expect(getByRole("option", { name: /Domain 2/i })).toBeTruthy();
|
|
72
72
|
});
|
|
73
|
-
|
|
73
|
+
await user.click(container.querySelector('[class="chevron down icon"]'));
|
|
74
74
|
await waitFor(() => {
|
|
75
75
|
expect(queryByText(/Domain 2/)).toBeFalsy();
|
|
76
76
|
});
|
|
77
|
-
|
|
77
|
+
await user.click(container.querySelector('[class="chevron right icon"]'));
|
|
78
78
|
// Select value
|
|
79
|
-
|
|
79
|
+
await user.click(getByRole("option", { name: /Domain 2/i }));
|
|
80
80
|
await waitFor(() => {
|
|
81
81
|
expect(toggleFilterValue).toHaveBeenCalledWith({ filter, value: [2] });
|
|
82
82
|
});
|
|
83
83
|
rerender(<FilterMultilevelDropdown {...{ ...props, activeValues: [2] }} />);
|
|
84
84
|
// Unselect
|
|
85
|
-
|
|
85
|
+
await user.click(getByRole("option", { name: /Domain 2/i }));
|
|
86
86
|
await waitFor(() => {
|
|
87
87
|
expect(toggleFilterValue).toHaveBeenCalledWith({ filter, value: [] });
|
|
88
88
|
});
|
|
89
89
|
// Select parent
|
|
90
90
|
rerender(<FilterMultilevelDropdown {...{ ...props, activeValues: [] }} />);
|
|
91
|
-
|
|
91
|
+
await user.click(getByRole("option", { name: /Domain 1/i }));
|
|
92
92
|
await waitFor(() => {
|
|
93
93
|
expect(toggleFilterValue).toHaveBeenCalledWith({ filter, value: [1] });
|
|
94
94
|
});
|
|
95
95
|
// Unselect parent by selecting children
|
|
96
96
|
rerender(<FilterMultilevelDropdown {...{ ...props, activeValues: [1] }} />);
|
|
97
|
-
|
|
97
|
+
await user.click(getByRole("option", { name: /Domain 2/i }));
|
|
98
98
|
await waitFor(() => {
|
|
99
99
|
expect(toggleFilterValue).toHaveBeenCalledWith({ filter, value: [2] });
|
|
100
100
|
});
|
|
101
101
|
// Delete filter
|
|
102
|
-
|
|
102
|
+
await user.click(container.querySelector('[class="delete icon"]'));
|
|
103
103
|
await waitFor(() => {
|
|
104
104
|
expect(removeFilter).toBeCalledTimes(1);
|
|
105
105
|
});
|
|
@@ -113,14 +113,14 @@ describe("<FilterMultilevelDropdown />", () => {
|
|
|
113
113
|
}
|
|
114
114
|
);
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
await user.click(getByRole("listbox"));
|
|
117
117
|
|
|
118
118
|
await waitFor(() => {
|
|
119
119
|
expect(getByRole("option", { name: /Domain 1/i })).toBeTruthy();
|
|
120
120
|
expect(getByRole("option", { name: /Domain 3/i })).toBeTruthy();
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
await user.click(container.querySelector('[class="chevron right icon"]'));
|
|
124
124
|
|
|
125
125
|
await waitFor(() => {
|
|
126
126
|
expect(getByRole("option", { name: /Domain 1/i })).toBeTruthy();
|
|
@@ -129,19 +129,19 @@ describe("<FilterMultilevelDropdown />", () => {
|
|
|
129
129
|
});
|
|
130
130
|
|
|
131
131
|
const input = container.querySelector('[type="text"]');
|
|
132
|
-
|
|
132
|
+
await user.type(input, "2");
|
|
133
133
|
|
|
134
134
|
await waitFor(() => {
|
|
135
135
|
expect(getByRole("option", { name: /Domain 2/i })).toBeTruthy();
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
await user.type(input, `{backspace}1`);
|
|
139
139
|
|
|
140
140
|
await waitFor(() => {
|
|
141
141
|
expect(getByRole("option", { name: /Domain 1/i })).toBeTruthy();
|
|
142
142
|
});
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
await user.click(getByRole("option", { name: /Domain 1/i }));
|
|
145
145
|
await waitFor(() => {
|
|
146
146
|
expect(toggleFilterValue).toHaveBeenCalledWith({ filter, value: [1] });
|
|
147
147
|
});
|