@truedat/bg 6.3.3 → 6.3.5

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 +57 -20
  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 +44 -29
  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,
@@ -4,18 +4,19 @@ import PropTypes from "prop-types";
4
4
  import { connect } from "react-redux";
5
5
  import { Table, Message, Label, Icon, Segment } from "semantic-ui-react";
6
6
  import { FormattedMessage } from "react-intl";
7
- import ConceptFiltersLoader from "../../components/ConceptFiltersLoader";
7
+ import SearchWidget from "@truedat/core/search/SearchWidget";
8
+ import {
9
+ SearchContextProvider,
10
+ useSearchContext,
11
+ } from "@truedat/core/search/SearchContext";
8
12
  import ConceptsPagination from "../../components/ConceptsPagination";
9
- import ConceptsSearch from "../../components/ConceptsSearch";
10
- import ConceptSelectedFilters from "../../components/ConceptSelectedFilters";
11
13
  import { mapStatusColor } from "../../constants/mappings";
12
- import ConceptUserFiltersLoader from "../../components/ConceptUserFiltersLoader";
13
- import ConceptsLoader from "../../components/ConceptsLoader";
14
+ import { translations } from "../../utils/filterOptions";
14
15
 
15
- const filters = {
16
- current: [true],
17
- status: ["pending_approval", "draft", "rejected", "published"],
18
- };
16
+ import {
17
+ useConceptVersionsSearch,
18
+ useConceptFilters,
19
+ } from "../../hooks/useConcepts";
19
20
 
20
21
  const isPositive = (links, id, selectedId) => {
21
22
  const link =
@@ -70,17 +71,17 @@ ConceptSelectorRow.propTypes = {
70
71
  positive: PropTypes.bool,
71
72
  };
72
73
 
73
- export const ConceptSelector = ({
74
+ export function ConceptSelectorContent({
74
75
  businessConceptId,
75
- concepts,
76
- defaultFilters = filters,
77
76
  handleConceptSelected,
78
- loadConcepts = true,
79
- pageSize = 7,
80
77
  selectedConcept,
81
78
  showTitle = true,
82
79
  links,
83
- }) => {
80
+ }) {
81
+ const { searchData } = useSearchContext();
82
+
83
+ const concepts = searchData?.data;
84
+
84
85
  const selectedConceptIsFiltered = !_.reduce(
85
86
  (acc, c) => (selectedConcept && c.id == selectedConcept.id) || acc,
86
87
  false
@@ -97,19 +98,13 @@ export const ConceptSelector = ({
97
98
 
98
99
  return (
99
100
  <>
100
- {loadConcepts && (
101
- <ConceptsLoader pageSize={pageSize} defaultFilters={defaultFilters} />
102
- )}
103
- <ConceptFiltersLoader />
104
- <ConceptUserFiltersLoader />
105
101
  {showTitle && (
106
102
  <label>
107
103
  <FormattedMessage id="conceptRelations.relatedConcept" />
108
104
  </label>
109
105
  )}
110
106
  <Segment>
111
- <ConceptsSearch />
112
- <ConceptSelectedFilters />
107
+ <SearchWidget />
113
108
  {!_.isEmpty(concepts) || selectedConcept ? (
114
109
  <Table selectable size="small">
115
110
  <Table.Header>
@@ -156,20 +151,40 @@ export const ConceptSelector = ({
156
151
  </Segment>
157
152
  </>
158
153
  );
159
- };
154
+ }
160
155
 
161
- ConceptSelector.propTypes = {
156
+ ConceptSelectorContent.propTypes = {
162
157
  businessConceptId: PropTypes.number,
163
- concepts: PropTypes.array,
164
- defaultFilters: PropTypes.object,
165
158
  handleConceptSelected: PropTypes.func,
166
- loadConcepts: PropTypes.bool,
167
- pageSize: PropTypes.number,
168
159
  selectedConcept: PropTypes.object,
169
160
  showTitle: PropTypes.bool,
170
161
  links: PropTypes.array,
171
162
  };
172
163
 
173
- const mapStateToProps = ({ concepts }) => ({ concepts });
164
+ export const ConceptSelector = (props) => {
165
+ const defaultFilters = _.propOr({}, "defaultFilters")(props);
166
+ const filtersGroup = _.propOr([], "filtersGroup")(props);
167
+
168
+ const searchProps = {
169
+ initialSortColumn: "name.raw",
170
+ initialSortDirection: "ascending",
171
+ useSearch: useConceptVersionsSearch,
172
+ useFilters: useConceptFilters,
173
+ pageSize: 7,
174
+ userFiltersType: "business_concept_user_filters",
175
+ omitFilters: ["current", "domain_ids"],
176
+ translations,
177
+ filtersGroup,
178
+ };
179
+ return (
180
+ <SearchContextProvider {...searchProps} defaultFilters={defaultFilters}>
181
+ <ConceptSelectorContent {...props} />
182
+ </SearchContextProvider>
183
+ );
184
+ };
185
+
186
+ const mapStateToProps = (state) => ({
187
+ filtersGroup: state.conceptFiltersGroup || [],
188
+ });
174
189
 
175
190
  export default connect(mapStateToProps)(ConceptSelector);
@@ -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