@truedat/bg 8.6.7 → 8.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -3
- package/src/concepts/api.js +3 -2
- package/src/concepts/components/Concept.js +7 -7
- package/src/concepts/components/ConceptActions.js +1 -1
- package/src/concepts/components/ConceptCompleteness.js +6 -6
- package/src/concepts/components/ConceptCreate.js +17 -8
- package/src/concepts/components/ConceptCrumbs.js +1 -1
- package/src/concepts/components/ConceptDetails.js +1 -1
- package/src/concepts/components/ConceptEdit.js +8 -4
- package/src/concepts/components/ConceptForm.js +4 -4
- package/src/concepts/components/ConceptHeader.js +2 -2
- package/src/concepts/components/ConceptLinksDropdownSelector.js +2 -2
- package/src/concepts/components/ConceptLinksUploadButton.js +1 -1
- package/src/concepts/components/ConceptLoader.js +1 -1
- package/src/concepts/components/ConceptRoutes.js +7 -5
- package/src/concepts/components/ConceptSubscription.js +2 -2
- package/src/concepts/components/ConceptSuggestions.js +40 -43
- package/src/concepts/components/ConceptTabs.js +12 -12
- package/src/concepts/components/ConceptsActions.js +1 -3
- package/src/concepts/components/ConceptsBulkUpdate.js +2 -2
- package/src/concepts/components/ConceptsLinksManagement.js +6 -6
- package/src/concepts/components/ConceptsTable.js +1 -1
- package/src/concepts/components/ConceptsUpdateButton.js +1 -1
- package/src/concepts/components/ConceptsUploadButton.js +27 -22
- package/src/concepts/components/ConceptsUploadEventsTable.js +9 -6
- package/src/concepts/components/EventRow.js +7 -3
- package/src/concepts/components/SharedToForm.js +4 -1
- package/src/concepts/components/__tests__/Concept.spec.js +2 -2
- package/src/concepts/components/__tests__/ConceptArchiveRow.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptCompleteness.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptContext.spec.js +3 -3
- package/src/concepts/components/__tests__/ConceptDeleteModalBody.spec.js +6 -6
- package/src/concepts/components/__tests__/ConceptEdit.spec.js +4 -4
- package/src/concepts/components/__tests__/ConceptForm.spec.js +4 -4
- package/src/concepts/components/__tests__/ConceptHeader.spec.js +3 -3
- package/src/concepts/components/__tests__/ConceptLinksManagement.spec.js +2 -2
- package/src/concepts/components/__tests__/ConceptLinksUploadButton.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptManageDomainPopup.spec.js +10 -10
- package/src/concepts/components/__tests__/ConceptRoutes.spec.js +3 -3
- package/src/concepts/components/__tests__/ConceptRow.spec.js +2 -2
- package/src/concepts/components/__tests__/ConceptSubscription.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptSuggestions.spec.js +60 -48
- package/src/concepts/components/__tests__/ConceptTabPane.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptTabs.spec.js +10 -4
- package/src/concepts/components/__tests__/Concepts.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptsActions.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptsBulkUpdate.spec.js +3 -3
- package/src/concepts/components/__tests__/ConceptsLabelResults.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptsPanel.spec.js +1 -1
- package/src/concepts/components/__tests__/ConceptsTable.spec.js +16 -16
- package/src/concepts/components/__tests__/ConceptsUpdateButton.spec.js +2 -2
- package/src/concepts/components/__tests__/ConceptsUploadButton.spec.js +3 -3
- package/src/concepts/components/__tests__/Events.spec.js +6 -4
- package/src/concepts/components/__tests__/SharedToDomains.spec.js +1 -1
- package/src/concepts/components/__tests__/SharedToDomainsPopup.spec.js +5 -5
- package/src/concepts/components/__tests__/SharedToForm.spec.js +4 -4
- package/src/concepts/constants/mappings.js +6 -6
- package/src/concepts/hooks/useConcepts.js +6 -6
- package/src/concepts/hooks/useUploadEvents.js +1 -1
- package/src/concepts/reducers/__tests__/bulkUpdateLoading.spec.js +2 -2
- package/src/concepts/reducers/__tests__/concept.spec.js +7 -7
- package/src/concepts/reducers/__tests__/conceptActions.spec.js +5 -5
- package/src/concepts/reducers/__tests__/conceptArchive.spec.js +2 -2
- package/src/concepts/reducers/__tests__/conceptArchiveLoading.spec.js +2 -2
- package/src/concepts/reducers/__tests__/conceptLoading.spec.js +1 -1
- package/src/concepts/reducers/__tests__/conceptPermissions.spec.js +7 -7
- package/src/concepts/reducers/__tests__/conceptRedirect.spec.js +17 -17
- package/src/concepts/reducers/__tests__/conceptUpdating.spec.js +2 -2
- package/src/concepts/reducers/__tests__/conceptsDownloading.spec.js +2 -2
- package/src/concepts/reducers/__tests__/savingSharedTo.spec.js +1 -1
- package/src/concepts/reducers/__tests__/sharedToDomains.spec.js +6 -6
- package/src/concepts/reducers/conceptArchive.js +1 -1
- package/src/concepts/reducers/conceptRedirect.js +2 -6
- package/src/concepts/relations/components/ConceptImplementationLinks.js +5 -5
- package/src/concepts/relations/components/ConceptLinkActions.js +3 -1
- package/src/concepts/relations/components/ConceptLinksApprovalResults.js +2 -1
- package/src/concepts/relations/components/ConceptLinksApprovals.js +4 -4
- package/src/concepts/relations/components/ConceptLinkstRequestGrantButton.js +2 -2
- package/src/concepts/relations/components/ConceptRelationForm.js +2 -2
- package/src/concepts/relations/components/ConceptRelationRow.js +2 -2
- package/src/concepts/relations/components/ConceptRelations.js +19 -33
- package/src/concepts/relations/components/ConceptRelationsRoutes.js +3 -3
- package/src/concepts/relations/components/ConceptRelationsSummary.js +2 -2
- package/src/concepts/relations/components/ConceptSelector.js +4 -4
- package/src/concepts/relations/components/ConceptStructureLinks.js +1 -1
- package/src/concepts/relations/components/SliderWithFilter.js +20 -7
- package/src/concepts/relations/components/__tests__/ConceptImplementationLinks.spec.js +0 -1
- package/src/concepts/relations/components/__tests__/ConceptLinkActions.spec.js +41 -10
- package/src/concepts/relations/components/__tests__/ConceptLinksActions.spec.js +5 -5
- package/src/concepts/relations/components/__tests__/ConceptLinksApprovalResults.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptLinksApprovals.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptLinksApprovalsLabelResults.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptLinksApprovalsRow.spec.js +5 -5
- package/src/concepts/relations/components/__tests__/ConceptLinksApprovalsTable.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptLinkstRequestGrantButton.spec.js +10 -5
- package/src/concepts/relations/components/__tests__/ConceptRelationForm.spec.js +4 -4
- package/src/concepts/relations/components/__tests__/ConceptRelations.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptRelationsRoutes.spec.js +1 -1
- package/src/concepts/relations/components/__tests__/ConceptSelector.spec.js +10 -10
- package/src/concepts/relations/components/__tests__/ConceptStructureLinks.spec.js +3 -7
- package/src/concepts/relations/components/__tests__/SliderWithFilter.spec.js +6 -8
- package/src/concepts/relations/hooks/useLinks.js +3 -3
- package/src/concepts/relations/sagas/linkConcept.js +1 -1
- package/src/concepts/relations/selectors/__tests__/getBusinessConceptsLinksToImplementationsColumns.spec.js +1 -1
- package/src/concepts/relations/selectors/getBusinessConceptsLinksToImplementationsColumns.js +1 -1
- package/src/concepts/relations/selectors/getConceptImplementationLinks.js +4 -4
- package/src/concepts/relations/selectors/getConceptLinks.js +7 -7
- package/src/concepts/relations/selectors/getConceptRelations.js +9 -9
- package/src/concepts/relations/selectors/getLinksSearchColumns.js +3 -3
- package/src/concepts/sagas/bulkUpdate.js +1 -1
- package/src/concepts/selectors/__tests__/getConceptDomainPath.spec.js +1 -1
- package/src/concepts/selectors/getConceptColumns.js +1 -1
- package/src/concepts/selectors/getConceptDomainPath.js +1 -1
- package/src/concepts/selectors/getConceptUploadEventColumns.js +1 -1
- package/src/concepts/selectors/getConceptVersionPath.js +1 -1
- package/src/concepts/selectors/getTemplateFields.js +1 -1
- package/src/concepts/selectors/getTemplateGroups.js +1 -1
- package/src/hooks/useDomains.js +2 -2
- package/src/messages/index.js +1 -1
- package/src/taxonomy/components/DomainActions.js +4 -4
- package/src/taxonomy/components/DomainCards.js +3 -3
- package/src/taxonomy/components/DomainContent.js +1 -1
- package/src/taxonomy/components/DomainForm.js +6 -6
- package/src/taxonomy/components/DomainImplementations.js +2 -3
- package/src/taxonomy/components/DomainTabs.js +2 -2
- package/src/taxonomy/components/__tests__/Domain.spec.js +6 -6
- package/src/taxonomy/components/__tests__/DomainCards.spec.js +1 -1
- package/src/taxonomy/components/__tests__/DomainContent.spec.js +10 -10
- package/src/taxonomy/components/__tests__/DomainForm.spec.js +5 -5
- package/src/taxonomy/components/__tests__/DomainImplmentation.spec.js +3 -3
- package/src/taxonomy/components/__tests__/DomainRoutes.spec.js +1 -1
- package/src/taxonomy/components/__tests__/DomainStructures.spec.js +5 -3
- package/src/taxonomy/components/__tests__/DomainTabs.spec.js +7 -7
- package/src/taxonomy/components/__tests__/Domains.spec.js +8 -8
- package/src/taxonomy/components/__tests__/DomainsActions.spec.js +1 -1
- package/src/taxonomy/selectors/__tests__/getVisibleDomains.spec.js +4 -4
- package/src/taxonomy/selectors/getDomainsConcept.js +9 -9
- package/src/taxonomy/selectors/index.js +8 -8
|
@@ -59,7 +59,15 @@ const SquareCheckIcon = ({ color = "#f87201" }) => (
|
|
|
59
59
|
strokeLinecap="round"
|
|
60
60
|
strokeLinejoin="round"
|
|
61
61
|
>
|
|
62
|
-
<rect
|
|
62
|
+
<rect
|
|
63
|
+
x="3"
|
|
64
|
+
y="3"
|
|
65
|
+
width="18"
|
|
66
|
+
height="18"
|
|
67
|
+
rx="2"
|
|
68
|
+
fill={color}
|
|
69
|
+
stroke={color}
|
|
70
|
+
/>
|
|
63
71
|
<polyline points="9 12 11 14 15 10" />
|
|
64
72
|
</svg>
|
|
65
73
|
);
|
|
@@ -78,7 +86,11 @@ const TagChip = ({ text, selected, onClick, color }) => (
|
|
|
78
86
|
onClick={onClick}
|
|
79
87
|
title={text}
|
|
80
88
|
>
|
|
81
|
-
{selected ?
|
|
89
|
+
{selected ? (
|
|
90
|
+
<SquareCheckIcon color={color} />
|
|
91
|
+
) : (
|
|
92
|
+
<SquareIcon color={color} />
|
|
93
|
+
)}
|
|
82
94
|
<span
|
|
83
95
|
className="slider-with-filter__chip-text"
|
|
84
96
|
style={color ? { "--td-chip-color": color } : undefined}
|
|
@@ -107,7 +119,7 @@ const SliderWithFilter = ({
|
|
|
107
119
|
e.stopPropagation();
|
|
108
120
|
onTraversalTagsChange?.(null, { value: [] });
|
|
109
121
|
},
|
|
110
|
-
[onTraversalTagsChange]
|
|
122
|
+
[onTraversalTagsChange],
|
|
111
123
|
);
|
|
112
124
|
|
|
113
125
|
const handleToggleTag = useCallback(
|
|
@@ -117,7 +129,7 @@ const SliderWithFilter = ({
|
|
|
117
129
|
: [...traversalTags, tagValue];
|
|
118
130
|
onTraversalTagsChange?.(null, { value: next });
|
|
119
131
|
},
|
|
120
|
-
[traversalTags, onTraversalTagsChange]
|
|
132
|
+
[traversalTags, onTraversalTagsChange],
|
|
121
133
|
);
|
|
122
134
|
|
|
123
135
|
return (
|
|
@@ -145,7 +157,9 @@ const SliderWithFilter = ({
|
|
|
145
157
|
key={opt.value}
|
|
146
158
|
text={opt.text}
|
|
147
159
|
selected={traversalTags.includes(opt.value)}
|
|
148
|
-
color={
|
|
160
|
+
color={
|
|
161
|
+
opt.type && colorMap ? colorMap.get(opt.type) : undefined
|
|
162
|
+
}
|
|
149
163
|
onClick={(e) => {
|
|
150
164
|
e.stopPropagation();
|
|
151
165
|
handleToggleTag(opt.value);
|
|
@@ -155,7 +169,6 @@ const SliderWithFilter = ({
|
|
|
155
169
|
</div>
|
|
156
170
|
</div>
|
|
157
171
|
)}
|
|
158
|
-
|
|
159
172
|
</div>
|
|
160
173
|
|
|
161
174
|
<div className="slider-with-filter__slider-area">
|
|
@@ -187,7 +200,7 @@ SliderWithFilter.propTypes = {
|
|
|
187
200
|
PropTypes.shape({
|
|
188
201
|
text: PropTypes.string,
|
|
189
202
|
value: PropTypes.any,
|
|
190
|
-
})
|
|
203
|
+
}),
|
|
191
204
|
),
|
|
192
205
|
traversalTags: PropTypes.array,
|
|
193
206
|
onTraversalTagsChange: PropTypes.func,
|
|
@@ -15,17 +15,27 @@ describe("ConceptLinkActions", () => {
|
|
|
15
15
|
it("should render loading icon when loading is true", () => {
|
|
16
16
|
const action = { href: "/api/links/123" };
|
|
17
17
|
const rendered = render(
|
|
18
|
-
<DeleteLink
|
|
18
|
+
<DeleteLink
|
|
19
|
+
deleteRelation={deleteRelation}
|
|
20
|
+
action={action}
|
|
21
|
+
loading={true}
|
|
22
|
+
/>,
|
|
19
23
|
);
|
|
20
24
|
|
|
21
|
-
expect(
|
|
25
|
+
expect(
|
|
26
|
+
rendered.container.querySelector(".icon.loading"),
|
|
27
|
+
).toBeInTheDocument();
|
|
22
28
|
expect(rendered.container).toMatchSnapshot();
|
|
23
29
|
});
|
|
24
30
|
|
|
25
31
|
it("should render delete button when loading is false", async () => {
|
|
26
32
|
const action = { href: "/api/links/123" };
|
|
27
33
|
const rendered = render(
|
|
28
|
-
<DeleteLink
|
|
34
|
+
<DeleteLink
|
|
35
|
+
deleteRelation={deleteRelation}
|
|
36
|
+
action={action}
|
|
37
|
+
loading={false}
|
|
38
|
+
/>,
|
|
29
39
|
);
|
|
30
40
|
await waitForLoad(rendered);
|
|
31
41
|
|
|
@@ -36,7 +46,11 @@ describe("ConceptLinkActions", () => {
|
|
|
36
46
|
it("should extract link id from href and call deleteRelation on confirm", async () => {
|
|
37
47
|
const action = { href: "/api/links/456" };
|
|
38
48
|
const rendered = render(
|
|
39
|
-
<DeleteLink
|
|
49
|
+
<DeleteLink
|
|
50
|
+
deleteRelation={deleteRelation}
|
|
51
|
+
action={action}
|
|
52
|
+
loading={false}
|
|
53
|
+
/>,
|
|
40
54
|
);
|
|
41
55
|
await waitForLoad(rendered);
|
|
42
56
|
|
|
@@ -51,7 +65,11 @@ describe("ConceptLinkActions", () => {
|
|
|
51
65
|
it("should handle href without link id", async () => {
|
|
52
66
|
const action = { href: "/api/other/endpoint" };
|
|
53
67
|
const rendered = render(
|
|
54
|
-
<DeleteLink
|
|
68
|
+
<DeleteLink
|
|
69
|
+
deleteRelation={deleteRelation}
|
|
70
|
+
action={action}
|
|
71
|
+
loading={false}
|
|
72
|
+
/>,
|
|
55
73
|
);
|
|
56
74
|
await waitForLoad(rendered);
|
|
57
75
|
|
|
@@ -66,7 +84,11 @@ describe("ConceptLinkActions", () => {
|
|
|
66
84
|
it("should handle null href", async () => {
|
|
67
85
|
const action = { href: null };
|
|
68
86
|
const rendered = render(
|
|
69
|
-
<DeleteLink
|
|
87
|
+
<DeleteLink
|
|
88
|
+
deleteRelation={deleteRelation}
|
|
89
|
+
action={action}
|
|
90
|
+
loading={false}
|
|
91
|
+
/>,
|
|
70
92
|
);
|
|
71
93
|
await waitForLoad(rendered);
|
|
72
94
|
|
|
@@ -81,7 +103,11 @@ describe("ConceptLinkActions", () => {
|
|
|
81
103
|
it("should handle undefined href", async () => {
|
|
82
104
|
const action = {};
|
|
83
105
|
const rendered = render(
|
|
84
|
-
<DeleteLink
|
|
106
|
+
<DeleteLink
|
|
107
|
+
deleteRelation={deleteRelation}
|
|
108
|
+
action={action}
|
|
109
|
+
loading={false}
|
|
110
|
+
/>,
|
|
85
111
|
);
|
|
86
112
|
await waitForLoad(rendered);
|
|
87
113
|
|
|
@@ -96,7 +122,11 @@ describe("ConceptLinkActions", () => {
|
|
|
96
122
|
it("should open and close modal correctly", async () => {
|
|
97
123
|
const action = { href: "/api/links/789" };
|
|
98
124
|
const rendered = render(
|
|
99
|
-
<DeleteLink
|
|
125
|
+
<DeleteLink
|
|
126
|
+
deleteRelation={deleteRelation}
|
|
127
|
+
action={action}
|
|
128
|
+
loading={false}
|
|
129
|
+
/>,
|
|
100
130
|
);
|
|
101
131
|
await waitForLoad(rendered);
|
|
102
132
|
|
|
@@ -108,9 +138,10 @@ describe("ConceptLinkActions", () => {
|
|
|
108
138
|
const cancelButton = rendered.getByLabelText("modal-negative-action");
|
|
109
139
|
await user.click(cancelButton);
|
|
110
140
|
|
|
111
|
-
expect(
|
|
141
|
+
expect(
|
|
142
|
+
rendered.queryByLabelText("modal-affirmative-action"),
|
|
143
|
+
).not.toBeInTheDocument();
|
|
112
144
|
expect(deleteRelation).not.toHaveBeenCalled();
|
|
113
145
|
});
|
|
114
146
|
});
|
|
115
147
|
});
|
|
116
|
-
|
|
@@ -3,12 +3,12 @@ import { render, waitForLoad } from "@truedat/test/render";
|
|
|
3
3
|
import ConceptLinksActions from "../ConceptLinksActions";
|
|
4
4
|
|
|
5
5
|
jest.mock("@truedat/ai/components/SuggestLinkButton", () =>
|
|
6
|
-
jest.fn(() => <div>MockSuggestLinkButton</div>)
|
|
6
|
+
jest.fn(() => <div>MockSuggestLinkButton</div>),
|
|
7
7
|
);
|
|
8
8
|
|
|
9
9
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
10
10
|
const originalModule = jest.requireActual(
|
|
11
|
-
"@truedat/core/search/SearchContext"
|
|
11
|
+
"@truedat/core/search/SearchContext",
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
return {
|
|
@@ -49,7 +49,7 @@ describe("<ConceptLinksActions />", () => {
|
|
|
49
49
|
|
|
50
50
|
const rendered = render(
|
|
51
51
|
<ConceptLinksActions onGrantViewChange={jest.fn()} />,
|
|
52
|
-
grRenderOpts
|
|
52
|
+
grRenderOpts,
|
|
53
53
|
);
|
|
54
54
|
await waitForLoad(rendered);
|
|
55
55
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -60,7 +60,7 @@ describe("<ConceptLinksActions />", () => {
|
|
|
60
60
|
|
|
61
61
|
const rendered = render(
|
|
62
62
|
<ConceptLinksActions onGrantViewChange={jest.fn()} />,
|
|
63
|
-
renderOpts
|
|
63
|
+
renderOpts,
|
|
64
64
|
);
|
|
65
65
|
await waitForLoad(rendered);
|
|
66
66
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -82,7 +82,7 @@ describe("<ConceptLinksActions />", () => {
|
|
|
82
82
|
|
|
83
83
|
const rendered = render(
|
|
84
84
|
<ConceptLinksActions onGrantViewChange={jest.fn()} />,
|
|
85
|
-
suggestRenderOpts
|
|
85
|
+
suggestRenderOpts,
|
|
86
86
|
);
|
|
87
87
|
await waitForLoad(rendered);
|
|
88
88
|
expect(rendered.getByText("MockSuggestLinkButton")).toBeInTheDocument();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { render, waitForLoad } from "@truedat/test/render";
|
|
2
|
-
import LinksApprovalResults from "../ConceptLinksApprovalResults";
|
|
3
2
|
import { useLocation } from "react-router";
|
|
3
|
+
import LinksApprovalResults from "../ConceptLinksApprovalResults";
|
|
4
4
|
|
|
5
5
|
jest.mock("react-router", () => {
|
|
6
6
|
const actual = jest.requireActual("react-router");
|
|
@@ -4,7 +4,7 @@ import { ConceptLinksApprovals } from "../ConceptLinksApprovals";
|
|
|
4
4
|
|
|
5
5
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
6
6
|
const originalModule = jest.requireActual(
|
|
7
|
-
"@truedat/core/search/SearchContext"
|
|
7
|
+
"@truedat/core/search/SearchContext",
|
|
8
8
|
);
|
|
9
9
|
|
|
10
10
|
return {
|
package/src/concepts/relations/components/__tests__/ConceptLinksApprovalsLabelResults.spec.js
CHANGED
|
@@ -4,7 +4,7 @@ import { ConceptLinksApprovalsLabelResults } from "../ConceptLinksApprovalsLabel
|
|
|
4
4
|
|
|
5
5
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
6
6
|
const originalModule = jest.requireActual(
|
|
7
|
-
"@truedat/core/search/SearchContext"
|
|
7
|
+
"@truedat/core/search/SearchContext",
|
|
8
8
|
);
|
|
9
9
|
|
|
10
10
|
return {
|
|
@@ -20,7 +20,7 @@ describe("ConceptLinksApprovalsRow", () => {
|
|
|
20
20
|
|
|
21
21
|
it("renders null when columns are empty", async () => {
|
|
22
22
|
const rendered = render(
|
|
23
|
-
<ConceptLinksApprovalsRow {...defaultProps} columns={[]}
|
|
23
|
+
<ConceptLinksApprovalsRow {...defaultProps} columns={[]} />,
|
|
24
24
|
);
|
|
25
25
|
await waitForLoad(rendered);
|
|
26
26
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -28,7 +28,7 @@ describe("ConceptLinksApprovalsRow", () => {
|
|
|
28
28
|
|
|
29
29
|
it("renders null when link is empty", async () => {
|
|
30
30
|
const rendered = render(
|
|
31
|
-
<ConceptLinksApprovalsRow {...defaultProps} link={{}}
|
|
31
|
+
<ConceptLinksApprovalsRow {...defaultProps} link={{}} />,
|
|
32
32
|
);
|
|
33
33
|
await waitForLoad(rendered);
|
|
34
34
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -36,7 +36,7 @@ describe("ConceptLinksApprovalsRow", () => {
|
|
|
36
36
|
|
|
37
37
|
it("renders row with checkbox when approveView is true", async () => {
|
|
38
38
|
const rendered = render(
|
|
39
|
-
<ConceptLinksApprovalsRow {...defaultProps} approveView={true}
|
|
39
|
+
<ConceptLinksApprovalsRow {...defaultProps} approveView={true} />,
|
|
40
40
|
);
|
|
41
41
|
await waitForLoad(rendered);
|
|
42
42
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -44,7 +44,7 @@ describe("ConceptLinksApprovalsRow", () => {
|
|
|
44
44
|
|
|
45
45
|
it("renders row without checkbox when approveView is false", async () => {
|
|
46
46
|
const rendered = render(
|
|
47
|
-
<ConceptLinksApprovalsRow {...defaultProps} approveView={false}
|
|
47
|
+
<ConceptLinksApprovalsRow {...defaultProps} approveView={false} />,
|
|
48
48
|
);
|
|
49
49
|
await waitForLoad(rendered);
|
|
50
50
|
expect(rendered.container).toMatchSnapshot();
|
|
@@ -57,7 +57,7 @@ describe("ConceptLinksApprovalsRow", () => {
|
|
|
57
57
|
{...defaultProps}
|
|
58
58
|
approveView={true}
|
|
59
59
|
onCheckboxChange={onCheckboxChange}
|
|
60
|
-
|
|
60
|
+
/>,
|
|
61
61
|
);
|
|
62
62
|
await waitForLoad(rendered);
|
|
63
63
|
|
|
@@ -4,7 +4,7 @@ import { ConceptLinksApprovalsTable } from "../ConceptLinksApprovalsTable";
|
|
|
4
4
|
|
|
5
5
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
6
6
|
const originalModule = jest.requireActual(
|
|
7
|
-
"@truedat/core/search/SearchContext"
|
|
7
|
+
"@truedat/core/search/SearchContext",
|
|
8
8
|
);
|
|
9
9
|
|
|
10
10
|
return {
|
|
@@ -6,7 +6,7 @@ import { ConceptLinkstRequestGrantButton } from "../ConceptLinkstRequestGrantBut
|
|
|
6
6
|
|
|
7
7
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
8
8
|
const originalModule = jest.requireActual(
|
|
9
|
-
"@truedat/core/search/SearchContext"
|
|
9
|
+
"@truedat/core/search/SearchContext",
|
|
10
10
|
);
|
|
11
11
|
|
|
12
12
|
return {
|
|
@@ -30,7 +30,7 @@ describe("<ConceptLinkstRequestGrantButton />", () => {
|
|
|
30
30
|
|
|
31
31
|
const { container } = render(
|
|
32
32
|
<ConceptLinkstRequestGrantButton onGrantViewChange={jest.fn()} />,
|
|
33
|
-
renderOpts
|
|
33
|
+
renderOpts,
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
expect(container).toMatchSnapshot();
|
|
@@ -38,11 +38,16 @@ describe("<ConceptLinkstRequestGrantButton />", () => {
|
|
|
38
38
|
|
|
39
39
|
it("should not add a structure to the cart if it is already requested", async () => {
|
|
40
40
|
const addGrantRequestToCart = jest.fn();
|
|
41
|
-
useSearchContext.mockReturnValue({
|
|
41
|
+
useSearchContext.mockReturnValue({
|
|
42
|
+
searchData: { data: [{ id: "1" }, { id: "2" }] },
|
|
43
|
+
});
|
|
42
44
|
|
|
43
45
|
const rendered = render(
|
|
44
|
-
<ConceptLinkstRequestGrantButton
|
|
45
|
-
|
|
46
|
+
<ConceptLinkstRequestGrantButton
|
|
47
|
+
onGrantViewChange={jest.fn()}
|
|
48
|
+
addGrantRequestToCart={addGrantRequestToCart}
|
|
49
|
+
/>,
|
|
50
|
+
{ state: { grantRequestsCart: { structures: [{ id: "1" }] } } },
|
|
46
51
|
);
|
|
47
52
|
await waitForLoad(rendered);
|
|
48
53
|
const user = userEvent.setup({ delay: null });
|
|
@@ -43,7 +43,7 @@ const filterData = {
|
|
|
43
43
|
|
|
44
44
|
jest.mock("@truedat/bg/concepts/hooks/useConcepts", () => {
|
|
45
45
|
const originalModule = jest.requireActual(
|
|
46
|
-
"@truedat/bg/concepts/hooks/useConcepts"
|
|
46
|
+
"@truedat/bg/concepts/hooks/useConcepts",
|
|
47
47
|
);
|
|
48
48
|
|
|
49
49
|
return {
|
|
@@ -118,7 +118,7 @@ describe("<ConceptRelationForm />", () => {
|
|
|
118
118
|
|
|
119
119
|
await user.click(await rendered.findByText(/bar concept/i));
|
|
120
120
|
await user.click(
|
|
121
|
-
await rendered.findByRole("option", { name: /relates_to/i })
|
|
121
|
+
await rendered.findByRole("option", { name: /relates_to/i }),
|
|
122
122
|
);
|
|
123
123
|
|
|
124
124
|
await waitFor(() => {
|
|
@@ -133,7 +133,7 @@ describe("<ConceptRelationForm />", () => {
|
|
|
133
133
|
|
|
134
134
|
await user.click(await rendered.findByText(/bar concept/i));
|
|
135
135
|
await user.click(
|
|
136
|
-
await rendered.findByRole("option", { name: /relates_to/i })
|
|
136
|
+
await rendered.findByRole("option", { name: /relates_to/i }),
|
|
137
137
|
);
|
|
138
138
|
|
|
139
139
|
await waitFor(() => {
|
|
@@ -155,7 +155,7 @@ describe("<ConceptRelationForm />", () => {
|
|
|
155
155
|
},
|
|
156
156
|
};
|
|
157
157
|
await waitFor(() =>
|
|
158
|
-
expect(linkConcept).toHaveBeenCalledWith(expectedRelation)
|
|
158
|
+
expect(linkConcept).toHaveBeenCalledWith(expectedRelation),
|
|
159
159
|
);
|
|
160
160
|
});
|
|
161
161
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { act, fireEvent, waitFor } from "@testing-library/react";
|
|
2
2
|
import { render, waitForLoad } from "@truedat/test/render";
|
|
3
|
-
import { ConceptRelations } from "../ConceptRelations";
|
|
4
3
|
import { setConfig } from "@truedat/core/truedatConfig";
|
|
4
|
+
import { ConceptRelations } from "../ConceptRelations";
|
|
5
5
|
|
|
6
6
|
const mockUseLocation = jest.fn(() => ({ pathname: "/bar" }));
|
|
7
7
|
const mockUseNavigate = jest.fn(() => jest.fn());
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render, waitForLoad } from "@truedat/test/render";
|
|
3
|
-
import ConceptRelationsRoutes from "../ConceptRelationsRoutes";
|
|
4
3
|
import {
|
|
5
4
|
CONCEPT_LINKS_CONCEPTS,
|
|
6
5
|
CONCEPT_LINKS_CONCEPTS_NEW,
|
|
@@ -8,6 +7,7 @@ import {
|
|
|
8
7
|
CONCEPT_LINKS_STRUCTURES_NEW,
|
|
9
8
|
CONCEPT_LINKS_IMPLEMENTATIONS,
|
|
10
9
|
} from "@truedat/core/routes";
|
|
10
|
+
import ConceptRelationsRoutes from "../ConceptRelationsRoutes";
|
|
11
11
|
|
|
12
12
|
// Mock child components
|
|
13
13
|
jest.mock("@truedat/lm/components/ConceptStructureLinkForm", () => () => (
|
|
@@ -37,7 +37,7 @@ const filterData = {
|
|
|
37
37
|
|
|
38
38
|
jest.mock("@truedat/bg/concepts/hooks/useConcepts", () => {
|
|
39
39
|
const originalModule = jest.requireActual(
|
|
40
|
-
"@truedat/bg/concepts/hooks/useConcepts"
|
|
40
|
+
"@truedat/bg/concepts/hooks/useConcepts",
|
|
41
41
|
);
|
|
42
42
|
|
|
43
43
|
return {
|
|
@@ -81,8 +81,8 @@ describe("<ConceptSelector />", () => {
|
|
|
81
81
|
await waitForLoad(rendered);
|
|
82
82
|
expect(
|
|
83
83
|
rendered.container.querySelector(
|
|
84
|
-
'button[data-tooltip="concepts.actions.downloadLinks.tooltip"]'
|
|
85
|
-
)
|
|
84
|
+
'button[data-tooltip="concepts.actions.downloadLinks.tooltip"]',
|
|
85
|
+
),
|
|
86
86
|
).toBeInTheDocument();
|
|
87
87
|
expect(rendered.container).toMatchSnapshot();
|
|
88
88
|
});
|
|
@@ -95,7 +95,7 @@ describe("<ConceptSelector />", () => {
|
|
|
95
95
|
|
|
96
96
|
it("renders no title when is not specified", async () => {
|
|
97
97
|
const rendered = render(
|
|
98
|
-
<ConceptSelector {...{ ...props, showTitle: false }}
|
|
98
|
+
<ConceptSelector {...{ ...props, showTitle: false }} />,
|
|
99
99
|
);
|
|
100
100
|
await waitForLoad(rendered);
|
|
101
101
|
expect(rendered.queryByText(/relatedconcept/i)).not.toBeInTheDocument();
|
|
@@ -104,16 +104,16 @@ describe("<ConceptSelector />", () => {
|
|
|
104
104
|
it("calls handleConceptSelected on concept row click", async () => {
|
|
105
105
|
const user = userEvent.setup({ delay: null });
|
|
106
106
|
const rendered = render(
|
|
107
|
-
<ConceptSelector {...{ ...props, selectedConcept: null }}
|
|
107
|
+
<ConceptSelector {...{ ...props, selectedConcept: null }} />,
|
|
108
108
|
);
|
|
109
109
|
await waitForLoad(rendered);
|
|
110
110
|
|
|
111
111
|
await user.click(await rendered.findByText(/foo/i));
|
|
112
112
|
await waitFor(() =>
|
|
113
|
-
expect(handleConceptSelected.mock.calls.length).toBe(1)
|
|
113
|
+
expect(handleConceptSelected.mock.calls.length).toBe(1),
|
|
114
114
|
);
|
|
115
115
|
expect(handleConceptSelected).toHaveBeenCalledWith(
|
|
116
|
-
expect.objectContaining(concept)
|
|
116
|
+
expect.objectContaining(concept),
|
|
117
117
|
);
|
|
118
118
|
});
|
|
119
119
|
});
|
|
@@ -175,17 +175,17 @@ describe("<ConceptSelectorTable />", () => {
|
|
|
175
175
|
const rendered = render(
|
|
176
176
|
<ConceptSelectorTable
|
|
177
177
|
{...{ ...props, concepts: [], selectedConcept: null }}
|
|
178
|
-
|
|
178
|
+
/>,
|
|
179
179
|
);
|
|
180
180
|
// It should render the Message with the empty results header id
|
|
181
181
|
expect(
|
|
182
|
-
rendered.getByText("concepts.search.results.empty")
|
|
182
|
+
rendered.getByText("concepts.search.results.empty"),
|
|
183
183
|
).toBeInTheDocument();
|
|
184
184
|
});
|
|
185
185
|
|
|
186
186
|
test("renders Table when there are concepts", async () => {
|
|
187
187
|
const rendered = render(
|
|
188
|
-
<ConceptSelectorTable {...{ ...props, selectedConcept: { id: 1 } }}
|
|
188
|
+
<ConceptSelectorTable {...{ ...props, selectedConcept: { id: 1 } }} />,
|
|
189
189
|
);
|
|
190
190
|
await waitForLoad(rendered);
|
|
191
191
|
|
|
@@ -6,7 +6,7 @@ import { useConceptContext } from "../../../components/ConceptContext";
|
|
|
6
6
|
|
|
7
7
|
jest.mock("../../../components/ConceptContext", () => {
|
|
8
8
|
const originalModule = jest.requireActual(
|
|
9
|
-
"../../../components/ConceptContext"
|
|
9
|
+
"../../../components/ConceptContext",
|
|
10
10
|
);
|
|
11
11
|
|
|
12
12
|
return {
|
|
@@ -26,11 +26,9 @@ jest.mock("@truedat/dd/hooks/useStructures", () => ({
|
|
|
26
26
|
}),
|
|
27
27
|
}));
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
29
|
jest.mock("@truedat/core/search/SearchContext", () => {
|
|
32
30
|
const originalModule = jest.requireActual(
|
|
33
|
-
"@truedat/core/search/SearchContext"
|
|
31
|
+
"@truedat/core/search/SearchContext",
|
|
34
32
|
);
|
|
35
33
|
|
|
36
34
|
return {
|
|
@@ -62,9 +60,7 @@ describe("<ConceptStructureLinksPane />", () => {
|
|
|
62
60
|
searchData: [],
|
|
63
61
|
});
|
|
64
62
|
|
|
65
|
-
const rendered = render(
|
|
66
|
-
<ConceptStructureLinksPane {...props} />
|
|
67
|
-
);
|
|
63
|
+
const rendered = render(<ConceptStructureLinksPane {...props} />);
|
|
68
64
|
|
|
69
65
|
await waitForLoad(rendered);
|
|
70
66
|
await rendered.findByText(/foo/i);
|
|
@@ -38,7 +38,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
38
38
|
|
|
39
39
|
it("shows badge with count when filters are applied", () => {
|
|
40
40
|
render(
|
|
41
|
-
<SliderWithFilter {...defaultProps} traversalTags={["tag-a", "tag-b"]}
|
|
41
|
+
<SliderWithFilter {...defaultProps} traversalTags={["tag-a", "tag-b"]} />,
|
|
42
42
|
);
|
|
43
43
|
|
|
44
44
|
expect(screen.getByText("2")).toBeInTheDocument();
|
|
@@ -66,7 +66,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
66
66
|
<SliderWithFilter
|
|
67
67
|
{...defaultProps}
|
|
68
68
|
onTraversalTagsChange={onTraversalTagsChange}
|
|
69
|
-
|
|
69
|
+
/>,
|
|
70
70
|
);
|
|
71
71
|
|
|
72
72
|
fireEvent.click(screen.getByText("relations.tags.filter.label"));
|
|
@@ -84,7 +84,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
84
84
|
{...defaultProps}
|
|
85
85
|
traversalTags={["tag-a"]}
|
|
86
86
|
onTraversalTagsChange={onTraversalTagsChange}
|
|
87
|
-
|
|
87
|
+
/>,
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
fireEvent.click(screen.getByText("relations.tags.filter.label"));
|
|
@@ -94,9 +94,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
it("shows clear button when filters are applied", () => {
|
|
97
|
-
render(
|
|
98
|
-
<SliderWithFilter {...defaultProps} traversalTags={["tag-a"]} />
|
|
99
|
-
);
|
|
97
|
+
render(<SliderWithFilter {...defaultProps} traversalTags={["tag-a"]} />);
|
|
100
98
|
|
|
101
99
|
expect(screen.getByText("relations.tags.clear")).toBeInTheDocument();
|
|
102
100
|
});
|
|
@@ -114,7 +112,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
114
112
|
{...defaultProps}
|
|
115
113
|
traversalTags={["tag-a"]}
|
|
116
114
|
onTraversalTagsChange={onTraversalTagsChange}
|
|
117
|
-
|
|
115
|
+
/>,
|
|
118
116
|
);
|
|
119
117
|
|
|
120
118
|
fireEvent.click(screen.getByText("relations.tags.clear"));
|
|
@@ -126,7 +124,7 @@ describe("<SliderWithFilter />", () => {
|
|
|
126
124
|
render(
|
|
127
125
|
<SliderWithFilter {...defaultProps}>
|
|
128
126
|
<div data-testid="depth-slider">slider</div>
|
|
129
|
-
</SliderWithFilter
|
|
127
|
+
</SliderWithFilter>,
|
|
130
128
|
);
|
|
131
129
|
|
|
132
130
|
expect(screen.getByTestId("depth-slider")).toBeInTheDocument();
|
|
@@ -8,21 +8,21 @@ import {
|
|
|
8
8
|
|
|
9
9
|
export const useLinksBulkUpdateStatus = () => {
|
|
10
10
|
return useSWRMutations(API_RELATIONS_BULK_UPDATE_STATUS, (url, { arg }) =>
|
|
11
|
-
apiJsonPost(url, arg)
|
|
11
|
+
apiJsonPost(url, arg),
|
|
12
12
|
);
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export const useLinksSearch = (params) => {
|
|
16
16
|
const query = queryString(params);
|
|
17
17
|
return useSWRMutations(API_RELATIONS_SEARCH, (url, { arg }) =>
|
|
18
|
-
apiJsonPost(`${url}${query}`, arg)
|
|
18
|
+
apiJsonPost(`${url}${query}`, arg),
|
|
19
19
|
);
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export const useLinksFilters = (params) => {
|
|
23
23
|
const query = queryString(params);
|
|
24
24
|
return useSWRMutations(API_RELATIONS_FILTERS, (url, { arg }) =>
|
|
25
|
-
apiJsonPost(`${url}${query}`, arg)
|
|
25
|
+
apiJsonPost(`${url}${query}`, arg),
|
|
26
26
|
);
|
|
27
27
|
};
|
|
28
28
|
|
|
@@ -17,7 +17,7 @@ describe("selectors: getBusinessConceptsLinksToImplementationsColumns", () => {
|
|
|
17
17
|
const res = getBusinessConceptsLinksToImplementationsColumns({});
|
|
18
18
|
|
|
19
19
|
expect(res).toHaveLength(
|
|
20
|
-
defaultBusinessConceptsLinksToImplementationsColumns.length
|
|
20
|
+
defaultBusinessConceptsLinksToImplementationsColumns.length,
|
|
21
21
|
);
|
|
22
22
|
});
|
|
23
23
|
});
|
package/src/concepts/relations/selectors/getBusinessConceptsLinksToImplementationsColumns.js
CHANGED
|
@@ -102,5 +102,5 @@ export const defaultBusinessConceptsLinksToImplementationsColumns = [
|
|
|
102
102
|
|
|
103
103
|
export const getBusinessConceptsLinksToImplementationsColumns = createSelector(
|
|
104
104
|
_.prop("businessConceptsLinksToImplementationsColumns"),
|
|
105
|
-
_.defaultTo(defaultBusinessConceptsLinksToImplementationsColumns)
|
|
105
|
+
_.defaultTo(defaultBusinessConceptsLinksToImplementationsColumns),
|
|
106
106
|
);
|
|
@@ -8,7 +8,7 @@ const orderedLinks = (links) =>
|
|
|
8
8
|
_.flow(
|
|
9
9
|
_.filter(_.propEq("resource_type", "implementation")),
|
|
10
10
|
_.map((impl) => ({ ...impl, id: impl.resource_id })),
|
|
11
|
-
_.sortBy(accentInsensitivePathOrder("implementation_key"))
|
|
11
|
+
_.sortBy(accentInsensitivePathOrder("implementation_key")),
|
|
12
12
|
)(links);
|
|
13
13
|
|
|
14
14
|
const implementationLinks = _.flow(
|
|
@@ -16,12 +16,12 @@ const implementationLinks = _.flow(
|
|
|
16
16
|
_.filter(({ deleted_at }) => _.isEmpty(deleted_at)),
|
|
17
17
|
_.groupBy(_.pathOr("\uffee")("tags[0]")),
|
|
18
18
|
_.toPairs,
|
|
19
|
-
_.sortBy(([k]) => k)
|
|
19
|
+
_.sortBy(([k]) => k),
|
|
20
20
|
);
|
|
21
21
|
|
|
22
22
|
const deletedImplementationLinks = _.flow(
|
|
23
23
|
orderedLinks,
|
|
24
|
-
_.filter(({ deleted_at }) => _.negate(_.isEmpty)(deleted_at))
|
|
24
|
+
_.filter(({ deleted_at }) => _.negate(_.isEmpty)(deleted_at)),
|
|
25
25
|
);
|
|
26
26
|
export const getConceptImplementationLinks = createSelector(
|
|
27
27
|
[getLinks],
|
|
@@ -30,5 +30,5 @@ export const getConceptImplementationLinks = createSelector(
|
|
|
30
30
|
...implementationLinks(links),
|
|
31
31
|
["deleted", deletedImplementationLinks(links)],
|
|
32
32
|
];
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
34
|
);
|