@truedat/bg 6.3.2 → 6.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/package.json +6 -6
  2. package/src/concepts/api.js +3 -7
  3. package/src/concepts/components/ConceptActions.js +1 -0
  4. package/src/concepts/components/ConceptCreate.js +6 -4
  5. package/src/concepts/components/ConceptRoutes.js +10 -33
  6. package/src/concepts/components/Concepts.js +25 -16
  7. package/src/concepts/components/ConceptsActions.js +8 -14
  8. package/src/concepts/components/ConceptsBulkUpdate.js +25 -64
  9. package/src/concepts/components/ConceptsLabelResults.js +13 -26
  10. package/src/concepts/components/ConceptsLinksManagement.js +6 -92
  11. package/src/concepts/components/ConceptsPagination.js +13 -11
  12. package/src/concepts/components/ConceptsPanel.js +51 -22
  13. package/src/concepts/components/ConceptsTable.js +77 -106
  14. package/src/concepts/components/ConceptsUpdateButton.js +49 -37
  15. package/src/concepts/components/DomainConcepts.js +2 -11
  16. package/src/concepts/components/LinkedMessage.js +81 -0
  17. package/src/concepts/components/__tests__/ConceptLinksManagement.spec.js +60 -12
  18. package/src/concepts/components/__tests__/Concepts.spec.js +66 -11
  19. package/src/concepts/components/__tests__/ConceptsActions.spec.js +47 -3
  20. package/src/concepts/components/__tests__/ConceptsBulkUpdate.spec.js +7 -3
  21. package/src/concepts/components/__tests__/ConceptsLabelResults.spec.js +34 -4
  22. package/src/concepts/components/__tests__/ConceptsPanel.spec.js +59 -13
  23. package/src/concepts/components/__tests__/ConceptsTable.spec.js +53 -6
  24. package/src/concepts/components/__tests__/ConceptsUpdateButton.spec.js +26 -13
  25. package/src/concepts/components/__tests__/__snapshots__/ConceptLinksManagement.spec.js.snap +164 -8
  26. package/src/concepts/components/__tests__/__snapshots__/Concepts.spec.js.snap +284 -34
  27. package/src/concepts/components/__tests__/__snapshots__/ConceptsActions.spec.js.snap +1 -1
  28. package/src/concepts/components/__tests__/__snapshots__/ConceptsPanel.spec.js.snap +125 -2
  29. package/src/concepts/components/__tests__/__snapshots__/ConceptsTable.spec.js.snap +28 -44
  30. package/src/concepts/components/__tests__/__snapshots__/ConceptsUpdateButton.spec.js.snap +10 -47
  31. package/src/concepts/hooks/useConcepts.js +34 -0
  32. package/src/concepts/reducers/bulkUpdateQueryInfo.js +12 -0
  33. package/src/concepts/reducers/index.js +2 -26
  34. package/src/concepts/relations/components/ConceptRelationsRoutes.js +39 -35
  35. package/src/concepts/relations/components/ConceptSelector.js +37 -31
  36. package/src/concepts/relations/components/__tests__/ConceptRelationForm.spec.js +63 -23
  37. package/src/concepts/relations/components/__tests__/ConceptSelector.spec.js +74 -41
  38. package/src/concepts/relations/components/__tests__/ConceptSelector2.spec.js +72 -0
  39. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationForm.spec.js.snap +44 -8
  40. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptSelector.spec.js.snap +44 -27
  41. package/src/concepts/routines.js +2 -29
  42. package/src/concepts/sagas/__tests__/bulkUpdate.spec.js +6 -10
  43. package/src/concepts/sagas/__tests__/downloadConcepts.spec.js +4 -8
  44. package/src/concepts/sagas/bulkUpdate.js +6 -5
  45. package/src/concepts/sagas/downloadConcepts.js +3 -4
  46. package/src/concepts/sagas/index.js +2 -17
  47. package/src/concepts/selectors/getConceptColumns.js +12 -21
  48. package/src/concepts/selectors/index.js +1 -7
  49. package/src/concepts/utils/filterOptions.js +6 -5
  50. package/src/concepts/components/ConceptFilters.js +0 -20
  51. package/src/concepts/components/ConceptFiltersLoader.js +0 -27
  52. package/src/concepts/components/ConceptSelectedFilters.js +0 -29
  53. package/src/concepts/components/ConceptSelectedFiltersDefault.js +0 -42
  54. package/src/concepts/components/ConceptSelectedFiltersPending.js +0 -41
  55. package/src/concepts/components/ConceptSelectedFiltersPublished.js +0 -73
  56. package/src/concepts/components/ConceptUserFiltersLoader.js +0 -27
  57. package/src/concepts/components/ConceptsLoader.js +0 -38
  58. package/src/concepts/components/ConceptsSearch.js +0 -32
  59. package/src/concepts/components/__tests__/ConceptFilters.spec.js +0 -19
  60. package/src/concepts/components/__tests__/ConceptSelectedFilters.spec.js +0 -10
  61. package/src/concepts/components/__tests__/ConceptUserFiltersLoader.spec.js +0 -27
  62. package/src/concepts/components/__tests__/ConceptsLoader.spec.js +0 -34
  63. package/src/concepts/components/__tests__/__snapshots__/ConceptFilters.spec.js.snap +0 -47
  64. package/src/concepts/components/__tests__/__snapshots__/ConceptSelectedFilters.spec.js.snap +0 -9
  65. package/src/concepts/components/__tests__/__snapshots__/ConceptUserFiltersLoader.spec.js.snap +0 -3
  66. package/src/concepts/reducers/__tests__/conceptActiveFilters.spec.js +0 -83
  67. package/src/concepts/reducers/__tests__/conceptCount.spec.js +0 -33
  68. package/src/concepts/reducers/__tests__/conceptFilters.spec.js +0 -49
  69. package/src/concepts/reducers/__tests__/conceptFiltersLoading.spec.js +0 -28
  70. package/src/concepts/reducers/__tests__/conceptQuery.spec.js +0 -75
  71. package/src/concepts/reducers/__tests__/conceptSelectedFilter.spec.js +0 -66
  72. package/src/concepts/reducers/__tests__/conceptSelectedUserFilter.spec.js +0 -53
  73. package/src/concepts/reducers/__tests__/conceptUserFilters.spec.js +0 -76
  74. package/src/concepts/reducers/__tests__/concepts.spec.js +0 -40
  75. package/src/concepts/reducers/__tests__/conceptsActions.spec.js +0 -38
  76. package/src/concepts/reducers/__tests__/conceptsLoading.spec.js +0 -32
  77. package/src/concepts/reducers/__tests__/conceptsPageSize.spec.js +0 -33
  78. package/src/concepts/reducers/__tests__/previousConceptQuery.spec.js +0 -23
  79. package/src/concepts/reducers/conceptActiveFilters.js +0 -58
  80. package/src/concepts/reducers/conceptCount.js +0 -20
  81. package/src/concepts/reducers/conceptFilters.js +0 -21
  82. package/src/concepts/reducers/conceptFiltersLoading.js +0 -14
  83. package/src/concepts/reducers/conceptQuery.js +0 -60
  84. package/src/concepts/reducers/conceptSelectedFilter.js +0 -34
  85. package/src/concepts/reducers/conceptSelectedUserFilter.js +0 -31
  86. package/src/concepts/reducers/conceptUserFilters.js +0 -36
  87. package/src/concepts/reducers/concepts.js +0 -21
  88. package/src/concepts/reducers/conceptsActions.js +0 -24
  89. package/src/concepts/reducers/conceptsLoading.js +0 -16
  90. package/src/concepts/reducers/conceptsPageSize.js +0 -16
  91. package/src/concepts/reducers/previousConceptQuery.js +0 -15
  92. package/src/concepts/sagas/__tests__/deleteConceptUserFilter.spec.js +0 -75
  93. package/src/concepts/sagas/__tests__/fetchConceptUserFilters.spec.js +0 -70
  94. package/src/concepts/sagas/__tests__/fetchConcepts.spec.js +0 -87
  95. package/src/concepts/sagas/__tests__/saveConceptFilters.spec.js +0 -78
  96. package/src/concepts/sagas/deleteConceptUserFilter.js +0 -34
  97. package/src/concepts/sagas/fecthConceptUserFilters.js +0 -30
  98. package/src/concepts/sagas/fetchConceptFilters.js +0 -29
  99. package/src/concepts/sagas/fetchConcepts.js +0 -27
  100. package/src/concepts/sagas/saveConceptFilters.js +0 -30
  101. package/src/concepts/selectors/__tests__/getConceptAvailableFilters.spec.js +0 -16
  102. package/src/concepts/selectors/__tests__/getConceptFilterTypes.spec.js +0 -19
  103. package/src/concepts/selectors/__tests__/getConceptSelectedFilterActiveValues.spec.js +0 -16
  104. package/src/concepts/selectors/__tests__/getConceptSelectedFilterValues.spec.js +0 -15
  105. package/src/concepts/selectors/__tests__/getConceptSelectedFilters.spec.js +0 -15
  106. package/src/concepts/selectors/__tests__/mapSelectedFilterStateToPropsByStatus.spec.js +0 -37
  107. package/src/concepts/selectors/getConceptAvailableFilters.js +0 -15
  108. package/src/concepts/selectors/getConceptFilterTypes.js +0 -7
  109. package/src/concepts/selectors/getConceptSelectedFilterActiveValues.js +0 -9
  110. package/src/concepts/selectors/getConceptSelectedFilterValues.js +0 -12
  111. package/src/concepts/selectors/getConceptSelectedFilters.js +0 -7
  112. package/src/concepts/selectors/getPreviousConceptQuery.js +0 -1
  113. package/src/concepts/selectors/mapSelectedFilterStateToPropsByStatus.js +0 -47
@@ -1,52 +1,36 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<ConceptsTable /> matches the latest snapshot 1`] = `
4
- <Fragment>
5
- <Table
6
- as="table"
7
- selectable={true}
8
- sortable={true}
4
+ <div>
5
+ <table
6
+ class="ui selectable sortable table"
9
7
  >
10
- <TableHeader
11
- as="thead"
8
+ <thead
9
+ class=""
12
10
  >
13
- <TableRow
14
- as="tr"
15
- cellAs="td"
11
+ <tr
12
+ class=""
16
13
  >
17
- <TableHeaderCell
18
- as="th"
19
- className="disabled"
20
- content={
21
- <Memo(MemoizedFormattedMessage)
22
- id="concepts.props.name"
23
- />
24
- }
25
- key="0"
26
- onClick={[Function]}
27
- sorted="ascending"
28
- />
29
- </TableRow>
30
- </TableHeader>
31
- <TableBody
32
- as="tbody"
14
+ <th
15
+ class="disabled"
16
+ >
17
+ Term
18
+ </th>
19
+ </tr>
20
+ </thead>
21
+ <tbody
22
+ class=""
33
23
  >
34
- <ConceptRow
35
- columns={
36
- [
37
- {
38
- "name": "name",
39
- },
40
- ]
41
- }
42
- concept={
43
- {
44
- "id": 1,
45
- }
46
- }
47
- key="0"
48
- />
49
- </TableBody>
50
- </Table>
51
- </Fragment>
24
+ <tr
25
+ class=""
26
+ >
27
+ <td
28
+ class=""
29
+ >
30
+ concept
31
+ </td>
32
+ </tr>
33
+ </tbody>
34
+ </table>
35
+ </div>
52
36
  `;
@@ -1,52 +1,15 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<ConceptsUpdateButton /> matches the latest snapshot 1`] = `
4
- <Popup
5
- content={
6
- <Memo(MemoizedFormattedMessage)
7
- id="concepts.actions.bulk_update.popup"
8
- />
9
- }
10
- disabled={true}
11
- eventsEnabled={true}
12
- on={
13
- [
14
- "click",
15
- "hover",
16
- ]
17
- }
18
- pinned={false}
19
- popperModifiers={[]}
20
- position="top right"
21
- trigger={
22
- <span
23
- className="button-update"
4
+ <div>
5
+ <span
6
+ class="button-update"
7
+ >
8
+ <button
9
+ class="ui primary button"
24
10
  >
25
- <Button
26
- as={
27
- {
28
- "$$typeof": Symbol(react.forward_ref),
29
- "displayName": "Link",
30
- "propTypes": {
31
- "innerRef": [Function],
32
- "onClick": [Function],
33
- "replace": [Function],
34
- "target": [Function],
35
- "to": [Function],
36
- },
37
- "render": [Function],
38
- }
39
- }
40
- content={
41
- <Memo(MemoizedFormattedMessage)
42
- id="actions.update"
43
- />
44
- }
45
- disabled={false}
46
- primary={true}
47
- to="url?concept"
48
- />
49
- </span>
50
- }
51
- />
11
+ Update
12
+ </button>
13
+ </span>
14
+ </div>
52
15
  `;
@@ -0,0 +1,34 @@
1
+ import useSWR from "swr";
2
+ import useSWRMutations from "swr/mutation";
3
+ import { apiJson, apiJsonPost } from "@truedat/core/services/api";
4
+
5
+ import {
6
+ API_CONCEPT_FILTERS,
7
+ API_BUSINESS_CONCEPT_VERSIONS_SEARCH,
8
+ API_BUSINESS_CONCEPT_VERSIONS_ACTIONS,
9
+ } from "../api";
10
+
11
+ export const useConceptFilters = () => {
12
+ return useSWRMutations(API_CONCEPT_FILTERS, (url, { arg }) =>
13
+ apiJsonPost(url, arg)
14
+ );
15
+ };
16
+
17
+ export const useConceptVersionsSearch = () => {
18
+ return useSWRMutations(API_BUSINESS_CONCEPT_VERSIONS_SEARCH, (url, { arg }) =>
19
+ apiJsonPost(url, arg)
20
+ );
21
+ };
22
+
23
+ export const useConceptVersionsActions = () => {
24
+ const { data, error, mutate } = useSWR(
25
+ API_BUSINESS_CONCEPT_VERSIONS_ACTIONS,
26
+ apiJson
27
+ );
28
+ return {
29
+ actions: data?.data?._actions,
30
+ error,
31
+ loading: !error && !data,
32
+ mutate,
33
+ };
34
+ };
@@ -0,0 +1,12 @@
1
+ import { bulkUpdateQuery } from "../routines";
2
+
3
+ const bulkUpdateQueryInfo = (state = {}, { type, payload }) => {
4
+ switch (type) {
5
+ case bulkUpdateQuery.TRIGGER:
6
+ return payload;
7
+ default:
8
+ return state;
9
+ }
10
+ };
11
+
12
+ export { bulkUpdateQueryInfo };
@@ -1,62 +1,38 @@
1
1
  import { concept } from "./concept";
2
2
  import { conceptActionLoading } from "./conceptActionLoading";
3
3
  import { conceptActions } from "./conceptActions";
4
- import { conceptActiveFilters } from "./conceptActiveFilters";
5
4
  import { conceptArchive } from "./conceptArchive";
6
5
  import { conceptArchiveLoading } from "./conceptArchiveLoading";
7
- import { conceptCount } from "./conceptCount";
8
- import { conceptFilters } from "./conceptFilters";
9
- import { conceptFiltersLoading } from "./conceptFiltersLoading";
6
+ import { bulkUpdateQueryInfo } from "./bulkUpdateQueryInfo";
10
7
  import { conceptLinking } from "./conceptLinking";
11
8
  import { conceptLinks } from "./conceptLinks";
12
9
  import { conceptLoading } from "./conceptLoading";
13
10
  import { conceptPermissions } from "./conceptPermissions";
14
- import { conceptQuery } from "./conceptQuery";
15
11
  import { conceptRedirect } from "./conceptRedirect";
16
- import { conceptSelectedFilter } from "./conceptSelectedFilter";
17
- import { concepts } from "./concepts";
18
- import { conceptsActions } from "./conceptsActions";
19
12
  import { conceptsDownloading } from "./conceptsDownloading";
20
- import { conceptsLoading } from "./conceptsLoading";
21
- import { conceptsPageSize } from "./conceptsPageSize";
22
13
  import { uploadConceptsFile } from "./uploadConceptsFile";
23
- import { previousConceptQuery } from "./previousConceptQuery";
24
14
  import { bulkUpdateLoading } from "./bulkUpdateLoading";
25
15
  import { conceptUpdating } from "./conceptUpdating";
26
- import { conceptUserFilters } from "./conceptUserFilters";
27
- import { conceptSelectedUserFilter } from "./conceptSelectedUserFilter";
28
16
  import { sharedToDomains } from "./sharedToDomains";
29
17
  import { savingSharedTo } from "./savingSharedTo";
30
18
  import { updatingDomain } from "./updatingDomain";
31
19
 
32
20
  export {
21
+ bulkUpdateQueryInfo,
33
22
  bulkUpdateLoading,
34
23
  concept,
35
24
  conceptActionLoading,
36
25
  conceptActions,
37
- conceptActiveFilters,
38
26
  conceptArchive,
39
27
  conceptArchiveLoading,
40
- conceptCount,
41
- conceptFilters,
42
- conceptFiltersLoading,
43
28
  conceptLinking,
44
29
  conceptLinks,
45
30
  conceptLoading,
46
31
  conceptPermissions,
47
- conceptQuery,
48
32
  conceptRedirect,
49
- conceptSelectedFilter,
50
- conceptSelectedUserFilter,
51
- concepts,
52
- conceptsActions,
53
33
  conceptsDownloading,
54
- conceptsLoading,
55
- conceptsPageSize,
56
34
  uploadConceptsFile,
57
- previousConceptQuery,
58
35
  conceptUpdating,
59
- conceptUserFilters,
60
36
  sharedToDomains,
61
37
  savingSharedTo,
62
38
  updatingDomain,
@@ -23,44 +23,48 @@ const StructureTypesLoader = React.lazy(() =>
23
23
  import("@truedat/dd/components/StructureTypesLoader")
24
24
  );
25
25
 
26
- export const ConceptRelationsRoutes = ({ conceptLoaded, relationsLoading }) => (
27
- <Switch>
28
- <Route
29
- exact
30
- path={CONCEPT_LINKS_STRUCTURES_NEW}
31
- render={() => (conceptLoaded ? <ConceptStructureLinkForm /> : null)}
32
- />
33
- <Route
34
- exact
35
- path={CONCEPT_LINKS_STRUCTURES}
36
- render={() =>
37
- conceptLoaded ? (
38
- <>
39
- <StructureTypesLoader />
40
- <ConceptStructureLinks />
41
- </>
42
- ) : null
43
- }
44
- />
45
- <Route
46
- exact
47
- path={CONCEPT_LINKS_CONCEPTS_NEW}
48
- render={() => (conceptLoaded ? <ConceptRelationForm /> : null)}
49
- />
50
- {!relationsLoading && (
26
+ export const ConceptRelationsRoutes = ({ conceptLoaded, relationsLoading }) => {
27
+ return (
28
+ <Switch>
51
29
  <Route
52
30
  exact
53
- path={CONCEPT_LINKS_CONCEPTS}
54
- render={() => (conceptLoaded ? <ConceptRelations /> : null)}
31
+ path={CONCEPT_LINKS_STRUCTURES_NEW}
32
+ render={() => (conceptLoaded ? <ConceptStructureLinkForm /> : null)}
55
33
  />
56
- )}
57
- <Route
58
- exact
59
- path={CONCEPT_LINKS_IMPLEMENTATIONS}
60
- render={() => (conceptLoaded ? <ConceptImplementationLinks /> : null)}
61
- />
62
- </Switch>
63
- );
34
+ <Route
35
+ exact
36
+ path={CONCEPT_LINKS_STRUCTURES}
37
+ render={() =>
38
+ conceptLoaded ? (
39
+ <>
40
+ <StructureTypesLoader />
41
+ <ConceptStructureLinks />
42
+ </>
43
+ ) : null
44
+ }
45
+ />
46
+
47
+ <Route
48
+ exact
49
+ path={CONCEPT_LINKS_CONCEPTS_NEW}
50
+ render={() => (conceptLoaded ? <ConceptRelationForm /> : null)}
51
+ />
52
+
53
+ {!relationsLoading ? (
54
+ <Route
55
+ exact
56
+ path={CONCEPT_LINKS_CONCEPTS}
57
+ render={() => <ConceptRelations />}
58
+ />
59
+ ) : null}
60
+ <Route
61
+ exact
62
+ path={CONCEPT_LINKS_IMPLEMENTATIONS}
63
+ render={() => (conceptLoaded ? <ConceptImplementationLinks /> : null)}
64
+ />
65
+ </Switch>
66
+ );
67
+ };
64
68
 
65
69
  ConceptRelationsRoutes.propTypes = {
66
70
  conceptLoaded: PropTypes.bool,
@@ -1,21 +1,21 @@
1
1
  import _ from "lodash/fp";
2
2
  import React from "react";
3
3
  import PropTypes from "prop-types";
4
- import { connect } from "react-redux";
5
4
  import { Table, Message, Label, Icon, Segment } from "semantic-ui-react";
6
5
  import { FormattedMessage } from "react-intl";
7
- import ConceptFiltersLoader from "../../components/ConceptFiltersLoader";
6
+ import SearchWidget from "@truedat/core/search/SearchWidget";
7
+ import {
8
+ SearchContextProvider,
9
+ useSearchContext,
10
+ } from "@truedat/core/search/SearchContext";
8
11
  import ConceptsPagination from "../../components/ConceptsPagination";
9
- import ConceptsSearch from "../../components/ConceptsSearch";
10
- import ConceptSelectedFilters from "../../components/ConceptSelectedFilters";
11
12
  import { mapStatusColor } from "../../constants/mappings";
12
- import ConceptUserFiltersLoader from "../../components/ConceptUserFiltersLoader";
13
- import ConceptsLoader from "../../components/ConceptsLoader";
13
+ import { translations } from "../../utils/filterOptions";
14
14
 
15
- const filters = {
16
- current: [true],
17
- status: ["pending_approval", "draft", "rejected", "published"],
18
- };
15
+ import {
16
+ useConceptVersionsSearch,
17
+ useConceptFilters,
18
+ } from "../../hooks/useConcepts";
19
19
 
20
20
  const isPositive = (links, id, selectedId) => {
21
21
  const link =
@@ -70,17 +70,17 @@ ConceptSelectorRow.propTypes = {
70
70
  positive: PropTypes.bool,
71
71
  };
72
72
 
73
- export const ConceptSelector = ({
73
+ export function ConceptSelectorContent({
74
74
  businessConceptId,
75
- concepts,
76
- defaultFilters = filters,
77
75
  handleConceptSelected,
78
- loadConcepts = true,
79
- pageSize = 7,
80
76
  selectedConcept,
81
77
  showTitle = true,
82
78
  links,
83
- }) => {
79
+ }) {
80
+ const { searchData } = useSearchContext();
81
+
82
+ const concepts = searchData?.data;
83
+
84
84
  const selectedConceptIsFiltered = !_.reduce(
85
85
  (acc, c) => (selectedConcept && c.id == selectedConcept.id) || acc,
86
86
  false
@@ -97,19 +97,13 @@ export const ConceptSelector = ({
97
97
 
98
98
  return (
99
99
  <>
100
- {loadConcepts && (
101
- <ConceptsLoader pageSize={pageSize} defaultFilters={defaultFilters} />
102
- )}
103
- <ConceptFiltersLoader />
104
- <ConceptUserFiltersLoader />
105
100
  {showTitle && (
106
101
  <label>
107
102
  <FormattedMessage id="conceptRelations.relatedConcept" />
108
103
  </label>
109
104
  )}
110
105
  <Segment>
111
- <ConceptsSearch />
112
- <ConceptSelectedFilters />
106
+ <SearchWidget />
113
107
  {!_.isEmpty(concepts) || selectedConcept ? (
114
108
  <Table selectable size="small">
115
109
  <Table.Header>
@@ -156,20 +150,32 @@ export const ConceptSelector = ({
156
150
  </Segment>
157
151
  </>
158
152
  );
159
- };
153
+ }
160
154
 
161
- ConceptSelector.propTypes = {
155
+ ConceptSelectorContent.propTypes = {
162
156
  businessConceptId: PropTypes.number,
163
- concepts: PropTypes.array,
164
- defaultFilters: PropTypes.object,
165
157
  handleConceptSelected: PropTypes.func,
166
- loadConcepts: PropTypes.bool,
167
- pageSize: PropTypes.number,
168
158
  selectedConcept: PropTypes.object,
169
159
  showTitle: PropTypes.bool,
170
160
  links: PropTypes.array,
171
161
  };
172
162
 
173
- const mapStateToProps = ({ concepts }) => ({ concepts });
163
+ export default function ConceptSelector(props) {
164
+ const defaultFilters = _.propOr({}, "defaultFilters")(props);
174
165
 
175
- export default connect(mapStateToProps)(ConceptSelector);
166
+ const searchProps = {
167
+ initialSortColumn: "name.raw",
168
+ initialSortDirection: "ascending",
169
+ useSearch: useConceptVersionsSearch,
170
+ useFilters: useConceptFilters,
171
+ pageSize: 7,
172
+ userFiltersType: "business_concept_user_filters",
173
+ omitFilters: ["current", "domain_ids"],
174
+ translations,
175
+ };
176
+ return (
177
+ <SearchContextProvider {...searchProps} defaultFilters={defaultFilters}>
178
+ <ConceptSelectorContent {...props} />
179
+ </SearchContextProvider>
180
+ );
181
+ }
@@ -8,28 +8,68 @@ import en from "../../../../messages/en";
8
8
 
9
9
  const linkConcept = jest.fn();
10
10
 
11
- const domain = {
12
- external_id: "foo domain",
13
- id: 381,
14
- name: "foo domain",
11
+ const data = {
12
+ data: [
13
+ {
14
+ business_concept_id: 2,
15
+ domain: {
16
+ external_id: "foo domain",
17
+ id: 381,
18
+ name: "foo domain",
19
+ },
20
+ id: 12355,
21
+ name: "foo concept",
22
+ status: "published",
23
+ },
24
+ {
25
+ business_concept_id: 3,
26
+ domain: {
27
+ external_id: "foo domain",
28
+ id: 381,
29
+ name: "foo domain",
30
+ },
31
+ id: 12290,
32
+ name: "bar concept",
33
+ status: "draft",
34
+ },
35
+ ],
15
36
  };
16
37
 
17
- const concepts = [
18
- {
19
- business_concept_id: 2,
20
- domain: domain,
21
- id: 12355,
22
- name: "foo concept",
23
- status: "published",
24
- },
25
- {
26
- business_concept_id: 3,
27
- domain: domain,
28
- id: 12290,
29
- name: "bar concept",
30
- status: "draft",
38
+ const filterData = {
39
+ data: {
40
+ some: {
41
+ values: ["some_xxx", "some_yyy", "some_xwy"],
42
+ },
31
43
  },
32
- ];
44
+ };
45
+
46
+ jest.mock("@truedat/bg/concepts/hooks/useConcepts", () => {
47
+ const originalModule = jest.requireActual(
48
+ "@truedat/bg/concepts/hooks/useConcepts"
49
+ );
50
+
51
+ return {
52
+ __esModule: true,
53
+ ...originalModule,
54
+ useConceptFilters: () => ({
55
+ trigger: () => ({
56
+ then: (callback) =>
57
+ callback({
58
+ data: filterData,
59
+ }),
60
+ }),
61
+ }),
62
+ useConceptVersionsSearch: () => ({
63
+ trigger: () => ({
64
+ then: (callback) =>
65
+ callback({
66
+ data,
67
+ headers: {},
68
+ }),
69
+ }),
70
+ }),
71
+ };
72
+ });
33
73
 
34
74
  const concept = {
35
75
  id: 1,
@@ -58,22 +98,22 @@ const renderOpts = {
58
98
  "search.clear_filters": "clear filters",
59
99
  "search.applied_filters": "applied filters",
60
100
  "relations.relationType": "relation type",
101
+ "search.placeholder": "Search concepts...",
61
102
  },
62
103
  },
63
104
  state: {
64
- conceptActiveFilters: { filter: "some" },
65
- concepts,
66
105
  tagOptions,
67
106
  },
68
107
  fallback: "lazy",
69
108
  };
70
109
 
71
110
  describe("<ConceptRelationForm />", () => {
72
- it("matches the latest snapshot", () => {
73
- const { container } = render(
111
+ it("matches the latest snapshot", async () => {
112
+ const { container, queryByText } = render(
74
113
  <ConceptRelationForm {...props} />,
75
114
  renderOpts
76
115
  );
116
+ userEvent.click(await queryByText(/some/));
77
117
  expect(container).toMatchSnapshot();
78
118
  });
79
119