@truedat/core 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.
- package/package.json +36 -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/Graph.js +101 -0
- 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/components/index.js +4 -2
- 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,6 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { waitFor } from "@testing-library/react";
|
|
3
1
|
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import {
|
|
2
|
+
import { waitFor } from "@testing-library/react";
|
|
3
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
5
4
|
import TreeSelector from "../TreeSelector";
|
|
6
5
|
|
|
7
6
|
const baz = { id: "3", level: 2, name: "baz", children: [] };
|
|
@@ -9,28 +8,28 @@ const bar = { id: "2", level: 1, name: "bar", children: [baz] };
|
|
|
9
8
|
const foo = { id: "1", level: 0, name: "foo", children: [bar] };
|
|
10
9
|
const options = [foo, bar, baz];
|
|
11
10
|
|
|
12
|
-
const renderOpts = {};
|
|
13
|
-
|
|
14
11
|
describe("<TreeSelector />", () => {
|
|
15
|
-
it("matches latest snapshot", () => {
|
|
12
|
+
it("matches latest snapshot", async () => {
|
|
16
13
|
const props = {
|
|
17
14
|
options,
|
|
18
15
|
placeholder: "Select a domain",
|
|
19
16
|
className: "testClassName",
|
|
20
17
|
};
|
|
21
|
-
const
|
|
22
|
-
|
|
18
|
+
const rendered = render(<TreeSelector {...props} />);
|
|
19
|
+
await waitForLoad(rendered);
|
|
20
|
+
expect(rendered.container).toMatchSnapshot();
|
|
23
21
|
});
|
|
24
22
|
|
|
25
|
-
it("matches latest snapshot with notDropdown parameter", () => {
|
|
23
|
+
it("matches latest snapshot with notDropdown parameter", async () => {
|
|
26
24
|
const props = {
|
|
27
25
|
options,
|
|
28
26
|
placeholder: "Select a domain",
|
|
29
27
|
className: "testClassName",
|
|
30
28
|
notDropdown: true,
|
|
31
29
|
};
|
|
32
|
-
const
|
|
33
|
-
|
|
30
|
+
const rendered = render(<TreeSelector {...props} />);
|
|
31
|
+
await waitForLoad(rendered);
|
|
32
|
+
expect(rendered.container).toMatchSnapshot();
|
|
34
33
|
});
|
|
35
34
|
|
|
36
35
|
it("calls onChange with selected values (multiple)", async () => {
|
|
@@ -40,18 +39,20 @@ describe("<TreeSelector />", () => {
|
|
|
40
39
|
placeholder: "Select a domain",
|
|
41
40
|
value: [],
|
|
42
41
|
};
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
);
|
|
42
|
+
const rendered = render(<TreeSelector multiple {...props} />);
|
|
43
|
+
await waitForLoad(rendered);
|
|
44
|
+
|
|
45
|
+
const user = userEvent.setup({ delay: null });
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
49
48
|
|
|
50
49
|
await waitFor(() => {
|
|
51
|
-
expect(
|
|
50
|
+
expect(
|
|
51
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
52
|
+
).toBeInTheDocument();
|
|
52
53
|
});
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
await user.click(rendered.getByRole("option", { name: /foo/i }));
|
|
55
56
|
expect(props.onChange.mock.calls.length).toBe(1);
|
|
56
57
|
expect(props.onChange.mock.calls[0][1]).toEqual({ value: ["1"] });
|
|
57
58
|
});
|
|
@@ -62,18 +63,20 @@ describe("<TreeSelector />", () => {
|
|
|
62
63
|
options,
|
|
63
64
|
placeholder: "Select a domain",
|
|
64
65
|
};
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
);
|
|
66
|
+
const rendered = render(<TreeSelector {...props} />);
|
|
67
|
+
await waitForLoad(rendered);
|
|
68
|
+
|
|
69
|
+
const user = userEvent.setup({ delay: null });
|
|
69
70
|
|
|
70
|
-
|
|
71
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
71
72
|
|
|
72
73
|
await waitFor(() => {
|
|
73
|
-
expect(
|
|
74
|
+
expect(
|
|
75
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
76
|
+
).toBeInTheDocument();
|
|
74
77
|
});
|
|
75
78
|
|
|
76
|
-
|
|
79
|
+
await user.click(rendered.getByRole("option", { name: /foo/i }));
|
|
77
80
|
expect(props.onChange.mock.calls.length).toBe(1);
|
|
78
81
|
expect(props.onChange.mock.calls[0][1]).toEqual({ value: "1" });
|
|
79
82
|
});
|
|
@@ -89,37 +92,44 @@ describe("<TreeSelector />", () => {
|
|
|
89
92
|
value: [],
|
|
90
93
|
};
|
|
91
94
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
);
|
|
96
|
-
|
|
95
|
+
const rendered = render(<TreeSelector multiple {...props} />);
|
|
96
|
+
await waitForLoad(rendered);
|
|
97
|
+
|
|
98
|
+
const user = userEvent.setup({ delay: null });
|
|
99
|
+
|
|
100
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
97
101
|
|
|
98
102
|
await waitFor(() => {
|
|
99
|
-
expect(
|
|
103
|
+
expect(
|
|
104
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
105
|
+
).toBeInTheDocument();
|
|
100
106
|
});
|
|
101
107
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
108
|
+
await user.click(
|
|
109
|
+
rendered
|
|
110
|
+
.getByRole("option", { name: /foo/i })
|
|
111
|
+
.querySelector('i[class="chevron right icon"]')
|
|
106
112
|
);
|
|
107
113
|
|
|
108
114
|
await waitFor(() => {
|
|
109
|
-
expect(
|
|
115
|
+
expect(
|
|
116
|
+
rendered.getByRole("option", { name: /bar/i })
|
|
117
|
+
).toBeInTheDocument();
|
|
110
118
|
});
|
|
111
119
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
120
|
+
await user.click(
|
|
121
|
+
rendered
|
|
122
|
+
.getByRole("option", { name: /bar/i })
|
|
123
|
+
.querySelector('i[class="chevron right icon"]')
|
|
116
124
|
);
|
|
117
125
|
|
|
118
126
|
await waitFor(() => {
|
|
119
|
-
expect(
|
|
127
|
+
expect(
|
|
128
|
+
rendered.getByRole("option", { name: /baz/i })
|
|
129
|
+
).toBeInTheDocument();
|
|
120
130
|
});
|
|
121
131
|
|
|
122
|
-
|
|
132
|
+
await user.click(rendered.getByRole("option", { name: /baz/i }));
|
|
123
133
|
expect(props.onChange.mock.calls.length).toBe(1);
|
|
124
134
|
expect(props.onChange.mock.calls[0][1]).toEqual({ value: ["3"] });
|
|
125
135
|
expect(props.options.find((op) => op.id === "3") >= minDepth);
|
|
@@ -136,27 +146,32 @@ describe("<TreeSelector />", () => {
|
|
|
136
146
|
value: [],
|
|
137
147
|
};
|
|
138
148
|
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
);
|
|
143
|
-
|
|
149
|
+
const rendered = render(<TreeSelector multiple {...props} />);
|
|
150
|
+
await waitForLoad(rendered);
|
|
151
|
+
|
|
152
|
+
const user = userEvent.setup({ delay: null });
|
|
153
|
+
|
|
154
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
144
155
|
|
|
145
156
|
await waitFor(() => {
|
|
146
|
-
expect(
|
|
157
|
+
expect(
|
|
158
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
159
|
+
).toBeInTheDocument();
|
|
147
160
|
});
|
|
148
161
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
162
|
+
await user.click(
|
|
163
|
+
rendered
|
|
164
|
+
.getByRole("option", { name: /foo/i })
|
|
165
|
+
.querySelector('i[class="chevron right icon"]')
|
|
153
166
|
);
|
|
154
167
|
|
|
155
168
|
await waitFor(() => {
|
|
156
|
-
expect(
|
|
169
|
+
expect(
|
|
170
|
+
rendered.getByRole("option", { name: /bar/i })
|
|
171
|
+
).toBeInTheDocument();
|
|
157
172
|
});
|
|
158
173
|
|
|
159
|
-
|
|
174
|
+
await user.click(rendered.getByRole("option", { name: /bar/i }));
|
|
160
175
|
|
|
161
176
|
expect(props.onChange.mock.calls.length).toBe(0);
|
|
162
177
|
});
|
|
@@ -171,37 +186,44 @@ describe("<TreeSelector />", () => {
|
|
|
171
186
|
minDepth: minDepth,
|
|
172
187
|
};
|
|
173
188
|
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
);
|
|
178
|
-
|
|
189
|
+
const rendered = render(<TreeSelector {...props} />);
|
|
190
|
+
await waitForLoad(rendered);
|
|
191
|
+
|
|
192
|
+
const user = userEvent.setup({ delay: null });
|
|
193
|
+
|
|
194
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
179
195
|
|
|
180
196
|
await waitFor(() => {
|
|
181
|
-
expect(
|
|
197
|
+
expect(
|
|
198
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
199
|
+
).toBeInTheDocument();
|
|
182
200
|
});
|
|
183
201
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
202
|
+
await user.click(
|
|
203
|
+
rendered
|
|
204
|
+
.getByRole("option", { name: /foo/i })
|
|
205
|
+
.querySelector('i[class="chevron right icon"]')
|
|
188
206
|
);
|
|
189
207
|
|
|
190
208
|
await waitFor(() => {
|
|
191
|
-
expect(
|
|
209
|
+
expect(
|
|
210
|
+
rendered.getByRole("option", { name: /bar/i })
|
|
211
|
+
).toBeInTheDocument();
|
|
192
212
|
});
|
|
193
213
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
214
|
+
await user.click(
|
|
215
|
+
rendered
|
|
216
|
+
.getByRole("option", { name: /bar/i })
|
|
217
|
+
.querySelector('i[class="chevron right icon"]')
|
|
198
218
|
);
|
|
199
219
|
|
|
200
220
|
await waitFor(() => {
|
|
201
|
-
expect(
|
|
221
|
+
expect(
|
|
222
|
+
rendered.getByRole("option", { name: /baz/i })
|
|
223
|
+
).toBeInTheDocument();
|
|
202
224
|
});
|
|
203
225
|
|
|
204
|
-
|
|
226
|
+
await user.click(rendered.getByRole("option", { name: /baz/i }));
|
|
205
227
|
expect(props.onChange.mock.calls.length).toBe(1);
|
|
206
228
|
expect(props.onChange.mock.calls[0][1]).toEqual({ value: "3" });
|
|
207
229
|
expect(props.options.find((op) => op.id === "3") >= minDepth);
|
|
@@ -217,27 +239,32 @@ describe("<TreeSelector />", () => {
|
|
|
217
239
|
minDepth: minDepth,
|
|
218
240
|
};
|
|
219
241
|
|
|
220
|
-
const
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
);
|
|
224
|
-
|
|
242
|
+
const rendered = render(<TreeSelector {...props} />);
|
|
243
|
+
await waitForLoad(rendered);
|
|
244
|
+
|
|
245
|
+
const user = userEvent.setup({ delay: null });
|
|
246
|
+
|
|
247
|
+
await user.click(rendered.getByText(/select a domain/i));
|
|
225
248
|
|
|
226
249
|
await waitFor(() => {
|
|
227
|
-
expect(
|
|
250
|
+
expect(
|
|
251
|
+
rendered.getByRole("option", { name: /foo/i })
|
|
252
|
+
).toBeInTheDocument();
|
|
228
253
|
});
|
|
229
254
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
255
|
+
await user.click(
|
|
256
|
+
rendered
|
|
257
|
+
.getByRole("option", { name: /foo/i })
|
|
258
|
+
.querySelector('i[class="chevron right icon"]')
|
|
234
259
|
);
|
|
235
260
|
|
|
236
261
|
await waitFor(() => {
|
|
237
|
-
expect(
|
|
262
|
+
expect(
|
|
263
|
+
rendered.getByRole("option", { name: /bar/i })
|
|
264
|
+
).toBeInTheDocument();
|
|
238
265
|
});
|
|
239
266
|
|
|
240
|
-
|
|
267
|
+
await user.click(rendered.getByRole("option", { name: /bar/i }));
|
|
241
268
|
|
|
242
269
|
expect(props.onChange.mock.calls.length).toBe(0);
|
|
243
270
|
});
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { Dropdown } from "semantic-ui-react";
|
|
2
|
+
import { waitFor, fireEvent } from "@testing-library/react";
|
|
3
|
+
import userEvent from "@testing-library/user-event";
|
|
4
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
5
|
+
import { UploadModal } from "../UploadModal";
|
|
6
|
+
|
|
7
|
+
describe.skip("<UploadModal />", () => {
|
|
8
|
+
const trigger = <Dropdown.Item icon="upload" text="Trigger element" />;
|
|
9
|
+
const onClickExtraAction = jest.fn();
|
|
10
|
+
const onClickYesAction = jest.fn();
|
|
11
|
+
const user = userEvent.setup({ delay: null });
|
|
12
|
+
|
|
13
|
+
// See https://react-dropzone.js.org/ "Testing" section
|
|
14
|
+
const mockData = (files) => {
|
|
15
|
+
return {
|
|
16
|
+
dataTransfer: {
|
|
17
|
+
files,
|
|
18
|
+
items: files.map((file) => ({
|
|
19
|
+
kind: "file",
|
|
20
|
+
type: file.type,
|
|
21
|
+
getAsFile: () => file,
|
|
22
|
+
})),
|
|
23
|
+
types: ["Files"],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const extraAction = {
|
|
29
|
+
key: "yesWithAutoPublish",
|
|
30
|
+
primary: true,
|
|
31
|
+
content: "Extra action button",
|
|
32
|
+
onClick: onClickExtraAction,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
it("shows the modal", async () => {
|
|
36
|
+
const rendered = render(
|
|
37
|
+
<UploadModal
|
|
38
|
+
{...{
|
|
39
|
+
trigger,
|
|
40
|
+
extraAction,
|
|
41
|
+
header: "header",
|
|
42
|
+
content: "content",
|
|
43
|
+
param: "implementations",
|
|
44
|
+
handleSubmit: onClickYesAction,
|
|
45
|
+
}}
|
|
46
|
+
/>
|
|
47
|
+
);
|
|
48
|
+
await waitForLoad(rendered);
|
|
49
|
+
|
|
50
|
+
await user.click(
|
|
51
|
+
rendered.getByRole("option", { name: /trigger element/i })
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const yesActionButton = rendered.getByRole("button", {
|
|
55
|
+
name: /uploadModal.accept.update/i,
|
|
56
|
+
});
|
|
57
|
+
expect(yesActionButton).toBeDisabled();
|
|
58
|
+
|
|
59
|
+
const extraActionButton = rendered.getByRole("button", {
|
|
60
|
+
name: /extra action button/i,
|
|
61
|
+
});
|
|
62
|
+
expect(extraActionButton).toBeDisabled();
|
|
63
|
+
|
|
64
|
+
expect(rendered.getByText(/trigger element/i)).toBeInTheDocument();
|
|
65
|
+
expect(
|
|
66
|
+
rendered.getByText(/uploadModal.actions.upload.confirmation.content/i)
|
|
67
|
+
).toBeInTheDocument();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it("clicks yes action button", async () => {
|
|
71
|
+
const rendered = render(
|
|
72
|
+
<UploadModal
|
|
73
|
+
{...{
|
|
74
|
+
trigger,
|
|
75
|
+
header: "header",
|
|
76
|
+
content: "content",
|
|
77
|
+
param: "implementations",
|
|
78
|
+
handleSubmit: onClickYesAction,
|
|
79
|
+
}}
|
|
80
|
+
/>
|
|
81
|
+
);
|
|
82
|
+
await waitForLoad(rendered);
|
|
83
|
+
|
|
84
|
+
await user.click(
|
|
85
|
+
rendered.getByRole("option", { name: /trigger element/i })
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const yesActionButton = rendered.getByRole("button", {
|
|
89
|
+
name: /uploadModal.accept.update/i,
|
|
90
|
+
});
|
|
91
|
+
expect(yesActionButton).toBeDisabled();
|
|
92
|
+
|
|
93
|
+
const extraActionButton = rendered.queryByRole("button", {
|
|
94
|
+
name: /extra action button/i,
|
|
95
|
+
});
|
|
96
|
+
expect(extraActionButton).not.toBeInTheDocument();
|
|
97
|
+
|
|
98
|
+
const fakeFile = new File(["implementations"], "implementations.csv", {
|
|
99
|
+
type: "text/csv",
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
const dropZone = rendered.getByText(
|
|
103
|
+
/uploadModal.actions.upload.confirmation.content/i
|
|
104
|
+
);
|
|
105
|
+
const data = mockData([fakeFile]);
|
|
106
|
+
|
|
107
|
+
await waitFor(() => {
|
|
108
|
+
fireEvent.drop(dropZone, data);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
expect(yesActionButton).toBeEnabled();
|
|
112
|
+
|
|
113
|
+
await waitFor(async () => {
|
|
114
|
+
await user.click(yesActionButton);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
expect(onClickYesAction).toHaveBeenCalled();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it("clicks extra action button", async () => {
|
|
121
|
+
const rendered = render(
|
|
122
|
+
<UploadModal
|
|
123
|
+
{...{
|
|
124
|
+
trigger,
|
|
125
|
+
extraAction,
|
|
126
|
+
header: "header",
|
|
127
|
+
content: "content",
|
|
128
|
+
param: "implementations",
|
|
129
|
+
handleSubmit: onClickYesAction,
|
|
130
|
+
}}
|
|
131
|
+
/>
|
|
132
|
+
);
|
|
133
|
+
await waitForLoad(rendered);
|
|
134
|
+
|
|
135
|
+
await user.click(
|
|
136
|
+
rendered.getByRole("option", { name: /trigger element/i })
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
const yesActionButton = rendered.getByRole("button", {
|
|
140
|
+
name: /uploadModal.accept.update/i,
|
|
141
|
+
});
|
|
142
|
+
expect(yesActionButton).toBeDisabled();
|
|
143
|
+
|
|
144
|
+
const extraActionButton = rendered.getByRole("button", {
|
|
145
|
+
name: /extra action button/i,
|
|
146
|
+
});
|
|
147
|
+
expect(extraActionButton).toBeDisabled();
|
|
148
|
+
|
|
149
|
+
const fakeFile = new File(["implementations"], "implementations.csv", {
|
|
150
|
+
type: "text/csv",
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const dropZone = rendered.getByText(
|
|
154
|
+
/uploadModal.actions.upload.confirmation.content/i
|
|
155
|
+
);
|
|
156
|
+
const data = mockData([fakeFile]);
|
|
157
|
+
|
|
158
|
+
await waitFor(() => {
|
|
159
|
+
fireEvent.drop(dropZone, data);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
expect(yesActionButton).toBeEnabled();
|
|
163
|
+
expect(extraActionButton).toBeEnabled();
|
|
164
|
+
|
|
165
|
+
await waitFor(async () => {
|
|
166
|
+
await user.click(extraActionButton);
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
expect(onClickExtraAction).toHaveBeenCalled();
|
|
170
|
+
});
|
|
171
|
+
});
|
|
@@ -1,17 +1,7 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import userEvent from "@testing-library/user-event";
|
|
3
|
-
import { render } from "@truedat/test/render";
|
|
4
|
-
import messages from "@truedat/core/messages";
|
|
2
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
5
3
|
import UserFilters from "../UserFilters";
|
|
6
4
|
|
|
7
|
-
const renderOpts = {
|
|
8
|
-
messages: {
|
|
9
|
-
en: {
|
|
10
|
-
...messages.en,
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
|
|
15
5
|
const applyUserFilter = jest.fn();
|
|
16
6
|
const deleteUserFilter = jest.fn();
|
|
17
7
|
const resetFilters = jest.fn();
|
|
@@ -27,7 +17,7 @@ describe("<UserFilters /> admin", () => {
|
|
|
27
17
|
useAuthorized: jest.fn(() => true),
|
|
28
18
|
}));
|
|
29
19
|
|
|
30
|
-
it("matches the latest snapshot", () => {
|
|
20
|
+
it("matches the latest snapshot", async () => {
|
|
31
21
|
const props = {
|
|
32
22
|
applyUserFilter,
|
|
33
23
|
deleteUserFilter,
|
|
@@ -35,11 +25,12 @@ describe("<UserFilters /> admin", () => {
|
|
|
35
25
|
selectedUserFilter,
|
|
36
26
|
userFilters,
|
|
37
27
|
};
|
|
38
|
-
const
|
|
39
|
-
|
|
28
|
+
const rendered = render(<UserFilters {...props} />);
|
|
29
|
+
await waitForLoad(rendered);
|
|
30
|
+
expect(rendered.container).toMatchSnapshot();
|
|
40
31
|
});
|
|
41
32
|
|
|
42
|
-
it("matches the latest snapshot with global filters", () => {
|
|
33
|
+
it("matches the latest snapshot with global filters", async () => {
|
|
43
34
|
const props = {
|
|
44
35
|
applyUserFilter,
|
|
45
36
|
deleteUserFilter,
|
|
@@ -47,8 +38,9 @@ describe("<UserFilters /> admin", () => {
|
|
|
47
38
|
selectedUserFilter,
|
|
48
39
|
userFilters: [...userFilters, { name: "g", is_global: true }],
|
|
49
40
|
};
|
|
50
|
-
const
|
|
51
|
-
|
|
41
|
+
const rendered = render(<UserFilters {...props} />);
|
|
42
|
+
await waitForLoad(rendered);
|
|
43
|
+
expect(rendered.container).toMatchSnapshot();
|
|
52
44
|
});
|
|
53
45
|
|
|
54
46
|
it("calls applyUserFilter when selecting unselected filter label", async () => {
|
|
@@ -59,8 +51,12 @@ describe("<UserFilters /> admin", () => {
|
|
|
59
51
|
selectedUserFilter,
|
|
60
52
|
userFilters,
|
|
61
53
|
};
|
|
62
|
-
const
|
|
63
|
-
|
|
54
|
+
const rendered = render(<UserFilters {...props} />);
|
|
55
|
+
await waitForLoad(rendered);
|
|
56
|
+
|
|
57
|
+
const user = userEvent.setup({ delay: null });
|
|
58
|
+
await user.click(rendered.getByText(/b/i));
|
|
59
|
+
|
|
64
60
|
expect(applyUserFilter.mock.calls.length).toBe(1);
|
|
65
61
|
expect(applyUserFilter.mock.calls[0][0].userFilter).toEqual({
|
|
66
62
|
id: 2,
|
|
@@ -76,8 +72,12 @@ describe("<UserFilters /> admin", () => {
|
|
|
76
72
|
selectedUserFilter: "a",
|
|
77
73
|
userFilters,
|
|
78
74
|
};
|
|
79
|
-
const
|
|
80
|
-
|
|
75
|
+
const rendered = render(<UserFilters {...props} />);
|
|
76
|
+
await waitForLoad(rendered);
|
|
77
|
+
|
|
78
|
+
const user = userEvent.setup({ delay: null });
|
|
79
|
+
await user.click(rendered.getByText(/a/i));
|
|
80
|
+
|
|
81
81
|
expect(resetFilters.mock.calls.length).toBe(1);
|
|
82
82
|
});
|
|
83
83
|
});
|
|
@@ -88,7 +88,7 @@ describe("<UserFilters /> not admin", () => {
|
|
|
88
88
|
useAuthorized: jest.fn(() => false),
|
|
89
89
|
}));
|
|
90
90
|
|
|
91
|
-
it("matches the latest snapshot", () => {
|
|
91
|
+
it("matches the latest snapshot", async () => {
|
|
92
92
|
const props = {
|
|
93
93
|
applyUserFilter,
|
|
94
94
|
deleteUserFilter,
|
|
@@ -96,11 +96,12 @@ describe("<UserFilters /> not admin", () => {
|
|
|
96
96
|
selectedUserFilter,
|
|
97
97
|
userFilters,
|
|
98
98
|
};
|
|
99
|
-
const
|
|
100
|
-
|
|
99
|
+
const rendered = render(<UserFilters {...props} />);
|
|
100
|
+
await waitForLoad(rendered);
|
|
101
|
+
expect(rendered.container).toMatchSnapshot();
|
|
101
102
|
});
|
|
102
103
|
|
|
103
|
-
it("matches the latest snapshot with global filters", () => {
|
|
104
|
+
it("matches the latest snapshot with global filters", async () => {
|
|
104
105
|
const props = {
|
|
105
106
|
applyUserFilter,
|
|
106
107
|
deleteUserFilter,
|
|
@@ -108,8 +109,9 @@ describe("<UserFilters /> not admin", () => {
|
|
|
108
109
|
selectedUserFilter,
|
|
109
110
|
userFilters: [...userFilters, { name: "g", is_global: true }],
|
|
110
111
|
};
|
|
111
|
-
const
|
|
112
|
-
|
|
112
|
+
const rendered = render(<UserFilters {...props} />);
|
|
113
|
+
await waitForLoad(rendered);
|
|
114
|
+
expect(rendered.container).toMatchSnapshot();
|
|
113
115
|
});
|
|
114
116
|
});
|
|
115
117
|
|
|
@@ -169,17 +171,22 @@ describe("<UserFilters /> for taxonomy screens", () => {
|
|
|
169
171
|
],
|
|
170
172
|
};
|
|
171
173
|
|
|
172
|
-
it("matches the latest snapshot", () => {
|
|
173
|
-
const
|
|
174
|
-
|
|
174
|
+
it("matches the latest snapshot", async () => {
|
|
175
|
+
const rendered = render(<UserFilters {...props} />);
|
|
176
|
+
await waitForLoad(rendered);
|
|
177
|
+
expect(rendered.container).toMatchSnapshot();
|
|
175
178
|
});
|
|
176
179
|
|
|
177
|
-
it("render only Show filters", () => {
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
expect(queryByText(
|
|
182
|
-
expect(
|
|
183
|
-
expect(queryByText(
|
|
180
|
+
it("render only Show filters", async () => {
|
|
181
|
+
const rendered = render(<UserFilters {...props} />);
|
|
182
|
+
await waitForLoad(rendered);
|
|
183
|
+
|
|
184
|
+
expect(rendered.queryByText(/hide domain filter/i)).toBeNull();
|
|
185
|
+
expect(rendered.getByText(/show status filter/i)).toBeInTheDocument();
|
|
186
|
+
expect(rendered.queryByText(/hide multiple domain filter/i)).toBeNull();
|
|
187
|
+
expect(rendered.queryByText(/hide other domain filter/i)).toBeNull();
|
|
188
|
+
expect(
|
|
189
|
+
rendered.getByText(/show status and domain filter/i)
|
|
190
|
+
).toBeInTheDocument();
|
|
184
191
|
});
|
|
185
192
|
});
|