@reltio/components 1.4.1905 → 1.4.1907
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/cjs/ActionsPanel/ActionsPanel.test.js +133 -49
- package/cjs/AttributeListItem/AttributeListItem.spec.js +147 -118
- package/cjs/AttributeSelector/AttributeSelector.specs.js +125 -193
- package/cjs/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
- package/cjs/AttributesErrorsPanel/components/Error/Error.specs.js +96 -90
- package/cjs/AttributesErrorsPanel/store.test-data.d.ts +22 -0
- package/cjs/AttributesErrorsPanel/store.test-data.js +29 -0
- package/cjs/AttributesFilterSelector/AttributesFilterSelector.test.js +127 -105
- package/cjs/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
- package/cjs/AttributesValuesEditor/AttributesValuesEditor.test.js +92 -88
- package/cjs/AttributesView/AttributesView.test.js +67 -34
- package/cjs/AutoSizeList/AutoSizeList.test.js +81 -59
- package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +15 -31
- package/cjs/BarChart/BarChart.test.js +128 -65
- package/cjs/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
- package/cjs/BasicViewContent/BasicViewContent.test.js +7 -9
- package/cjs/BlobRenderer/BlobRenderer.test.js +28 -9
- package/cjs/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
- package/cjs/BubbleChart/BubbleChart.test.js +111 -87
- package/cjs/CloudChart/CloudChart.test.js +95 -36
- package/cjs/CollaborationItem/CollaborationItem.test.js +67 -30
- package/cjs/CollaborationItem/components/Comment/Comment.test.js +221 -189
- package/cjs/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -81
- package/cjs/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
- package/cjs/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
- package/cjs/CollapseButton/CollapseButton.test.js +74 -15
- package/cjs/CollapseRowButton/CollapseRowButton.test.js +82 -24
- package/cjs/ColorBar/ColorBar.test.js +13 -15
- package/cjs/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
- package/cjs/CommentsContainer/CommentsContainer.test.js +282 -211
- package/cjs/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +183 -122
- package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
- package/cjs/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
- package/cjs/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
- package/cjs/ConnectionEditor/ConnectionEditor.test.js +299 -282
- package/cjs/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.d.ts +3 -1
- package/cjs/ReactSortableTree/ReactSortableTree.js +2 -7
- package/cjs/RelationTypeSelector/RelationTypeSelector.d.ts +3 -1
- package/cjs/types/index.d.ts +1 -1
- package/esm/ActionsPanel/ActionsPanel.test.js +133 -49
- package/esm/AttributeListItem/AttributeListItem.spec.js +149 -97
- package/esm/AttributeSelector/AttributeSelector.specs.js +125 -193
- package/esm/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
- package/esm/AttributesErrorsPanel/components/Error/Error.specs.js +98 -72
- package/esm/AttributesErrorsPanel/store.test-data.d.ts +22 -0
- package/esm/AttributesErrorsPanel/store.test-data.js +26 -0
- package/esm/AttributesFilterSelector/AttributesFilterSelector.test.js +129 -84
- package/esm/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
- package/esm/AttributesValuesEditor/AttributesValuesEditor.test.js +94 -67
- package/esm/AttributesView/AttributesView.test.js +67 -34
- package/esm/AutoSizeList/AutoSizeList.test.js +81 -59
- package/esm/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +16 -32
- package/esm/BarChart/BarChart.test.js +128 -65
- package/esm/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
- package/esm/BasicViewContent/BasicViewContent.test.js +7 -9
- package/esm/BlobRenderer/BlobRenderer.test.js +28 -9
- package/esm/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
- package/esm/BubbleChart/BubbleChart.test.js +111 -87
- package/esm/CloudChart/CloudChart.test.js +95 -36
- package/esm/CollaborationItem/CollaborationItem.test.js +67 -30
- package/esm/CollaborationItem/components/Comment/Comment.test.js +221 -189
- package/esm/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -58
- package/esm/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
- package/esm/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
- package/esm/CollapseButton/CollapseButton.test.js +74 -15
- package/esm/CollapseRowButton/CollapseRowButton.test.js +82 -24
- package/esm/ColorBar/ColorBar.test.js +13 -15
- package/esm/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
- package/esm/CommentsContainer/CommentsContainer.test.js +282 -211
- package/esm/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +182 -101
- package/esm/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
- package/esm/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
- package/esm/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
- package/esm/ConnectionEditor/ConnectionEditor.test.js +300 -283
- package/esm/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.d.ts +3 -1
- package/esm/ReactSortableTree/ReactSortableTree.js +2 -7
- package/esm/RelationTypeSelector/RelationTypeSelector.d.ts +3 -1
- package/esm/types/index.d.ts +1 -1
- package/package.json +2 -2
- package/cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -100
- package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
- package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -46
- package/cjs/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
- package/cjs/AvatarWithFallback/AvatarWithFallback.specs.js +0 -27
- package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
- package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -27
- package/cjs/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
- package/cjs/CollaborationItem/components/Avatar/Avatar.test.js +0 -15
- package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
- package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -80
- package/esm/ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts +0 -1
- package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts +0 -1
- package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -95
- package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
- package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -41
- package/esm/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
- package/esm/AvatarWithFallback/AvatarWithFallback.specs.js +0 -22
- package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
- package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -22
- package/esm/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
- package/esm/CollaborationItem/components/Avatar/Avatar.test.js +0 -10
- package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
- package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -55
- /package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts → AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
- /package/{cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts → esm/AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
|
@@ -9,43 +9,63 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
import React from 'react';
|
|
49
|
+
import { render, screen } from '@testing-library/react';
|
|
50
|
+
import { AttributeValuePathItemType, ErrorSeverity, ErrorSource, ErrorType, Mode } from '@reltio/mdm-sdk';
|
|
17
51
|
import { Error } from '../Error';
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
52
|
+
import { MdmModuleProvider } from '../../../contexts/MdmModuleContext';
|
|
53
|
+
import userEvent from '@testing-library/user-event';
|
|
54
|
+
import { store as initStore } from '../../store.test-data';
|
|
55
|
+
import { ScrollToElementContext } from '../../../contexts/ScrollToElementContext';
|
|
21
56
|
describe('Error tests', function () {
|
|
22
|
-
var attributeType =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
attributes: [attributeType]
|
|
34
|
-
}
|
|
35
|
-
]
|
|
57
|
+
var attributeType = initStore.metadata.entityTypes[0].attributes[0];
|
|
58
|
+
var setUp = function (props, store) {
|
|
59
|
+
if (store === void 0) { store = initStore; }
|
|
60
|
+
var highlightError = jest.fn();
|
|
61
|
+
var Providers = function (_a) {
|
|
62
|
+
var children = _a.children;
|
|
63
|
+
return (React.createElement(MdmModuleProvider, { values: store },
|
|
64
|
+
React.createElement(ScrollToElementContext.Provider, { value: { highlightError: highlightError, element: null, type: null, scrollIntoRef: null } }, children)));
|
|
65
|
+
};
|
|
66
|
+
var user = userEvent.setup();
|
|
67
|
+
return __assign({ user: user, highlightError: highlightError }, render(React.createElement(Error, __assign({}, props)), { wrapper: Providers }));
|
|
36
68
|
};
|
|
37
|
-
beforeAll(function () {
|
|
38
|
-
useMdmMetadata.mockReturnValue(metadata);
|
|
39
|
-
});
|
|
40
|
-
var highlightErrorSpy = jest.fn();
|
|
41
|
-
beforeAll(function () {
|
|
42
|
-
jest.spyOn(react, 'useContext').mockReturnValue({
|
|
43
|
-
highlightError: highlightErrorSpy
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
afterEach(function () {
|
|
47
|
-
jest.clearAllMocks();
|
|
48
|
-
});
|
|
49
69
|
it('should render error message for validation service errors', function () {
|
|
50
70
|
var error = {
|
|
51
71
|
type: ErrorType.missed,
|
|
@@ -58,9 +78,9 @@ describe('Error tests', function () {
|
|
|
58
78
|
source: ErrorSource.validationService,
|
|
59
79
|
path: []
|
|
60
80
|
};
|
|
61
|
-
|
|
62
|
-
expect(
|
|
63
|
-
expect(
|
|
81
|
+
setUp({ error: error });
|
|
82
|
+
expect(screen.getByText(error.message)).toBeInTheDocument();
|
|
83
|
+
expect(screen.queryByTestId('SvgHyperlink')).not.toBeInTheDocument();
|
|
64
84
|
});
|
|
65
85
|
it('should render error message for local errors', function () {
|
|
66
86
|
var error = {
|
|
@@ -74,9 +94,8 @@ describe('Error tests', function () {
|
|
|
74
94
|
source: ErrorSource.local,
|
|
75
95
|
path: []
|
|
76
96
|
};
|
|
77
|
-
|
|
78
|
-
expect(
|
|
79
|
-
expect(component.find(SmallIconButtonWithTooltip)).toHaveLength(0);
|
|
97
|
+
setUp({ error: error });
|
|
98
|
+
expect(screen.getByText(error.message)).toBeInTheDocument();
|
|
80
99
|
});
|
|
81
100
|
it('should render special message with attribute type label for local missed errors', function () {
|
|
82
101
|
var error = {
|
|
@@ -89,8 +108,8 @@ describe('Error tests', function () {
|
|
|
89
108
|
source: ErrorSource.local,
|
|
90
109
|
path: []
|
|
91
110
|
};
|
|
92
|
-
|
|
93
|
-
expect(
|
|
111
|
+
setUp({ error: error });
|
|
112
|
+
expect(screen.getByText("".concat(attributeType.label, " is required"))).toBeInTheDocument();
|
|
94
113
|
});
|
|
95
114
|
it('should render special message with attribute type label for local missed errors even if attributeType is not defined', function () {
|
|
96
115
|
var error = {
|
|
@@ -103,8 +122,8 @@ describe('Error tests', function () {
|
|
|
103
122
|
source: ErrorSource.local,
|
|
104
123
|
path: []
|
|
105
124
|
};
|
|
106
|
-
|
|
107
|
-
expect(
|
|
125
|
+
setUp({ error: error });
|
|
126
|
+
expect(screen.getByText("".concat(attributeType.label, " is required"))).toBeInTheDocument();
|
|
108
127
|
});
|
|
109
128
|
it('should render parents path for missed errors if error.path is defined', function () {
|
|
110
129
|
var error = {
|
|
@@ -139,8 +158,9 @@ describe('Error tests', function () {
|
|
|
139
158
|
}
|
|
140
159
|
]
|
|
141
160
|
};
|
|
142
|
-
|
|
143
|
-
expect(
|
|
161
|
+
setUp({ error: error });
|
|
162
|
+
expect(screen.getByText('Error 1_')).toBeInTheDocument();
|
|
163
|
+
expect(screen.getByText('Connection 1 / Reference 1 / Name1')).toBeInTheDocument();
|
|
144
164
|
});
|
|
145
165
|
it('should render attribute types path for errors if error.path is defined', function () {
|
|
146
166
|
var error = {
|
|
@@ -180,8 +200,10 @@ describe('Error tests', function () {
|
|
|
180
200
|
}
|
|
181
201
|
]
|
|
182
202
|
};
|
|
183
|
-
|
|
184
|
-
expect(
|
|
203
|
+
setUp({ error: error });
|
|
204
|
+
expect(screen.getByText('ReferenceType1 > Name Type 1__'));
|
|
205
|
+
expect(screen.getByText('Error 1_')).toBeInTheDocument();
|
|
206
|
+
expect(screen.getByText('Connection 1 / Reference 1 / Name1')).toBeInTheDocument();
|
|
185
207
|
});
|
|
186
208
|
it('should render parents path for invalid errors if error.path is defined', function () {
|
|
187
209
|
var error = {
|
|
@@ -216,30 +238,34 @@ describe('Error tests', function () {
|
|
|
216
238
|
}
|
|
217
239
|
]
|
|
218
240
|
};
|
|
219
|
-
|
|
220
|
-
expect(
|
|
241
|
+
setUp({ error: error });
|
|
242
|
+
expect(screen.getByText('Error 1_')).toBeInTheDocument();
|
|
243
|
+
expect(screen.getByText('Connection 1 / Reference 1')).toBeInTheDocument();
|
|
221
244
|
});
|
|
222
|
-
it('should render button when editing mode and correct error', function () {
|
|
223
|
-
var error
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
245
|
+
it('should render button when editing mode and correct error', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
246
|
+
var error, _a, user, highlightError;
|
|
247
|
+
return __generator(this, function (_b) {
|
|
248
|
+
switch (_b.label) {
|
|
249
|
+
case 0:
|
|
250
|
+
error = {
|
|
251
|
+
type: ErrorType.invalid,
|
|
252
|
+
uri: 'some uri',
|
|
253
|
+
attributeType: attributeType,
|
|
254
|
+
attributeTypeUri: 'configuration/entityTypes/HCP/attributes/Name',
|
|
255
|
+
parentUri: 'entities/uri$$123',
|
|
256
|
+
message: 'Error 1_',
|
|
257
|
+
severity: ErrorSeverity.ERROR,
|
|
258
|
+
source: ErrorSource.validationService,
|
|
259
|
+
path: []
|
|
260
|
+
};
|
|
261
|
+
_a = setUp({ error: error }, __assign(__assign({}, initStore), { mode: Mode.Editing })), user = _a.user, highlightError = _a.highlightError;
|
|
262
|
+
expect(screen.getByText('Error 1_')).toBeInTheDocument();
|
|
263
|
+
return [4 /*yield*/, user.click(screen.getByLabelText('Go to error'))];
|
|
264
|
+
case 1:
|
|
265
|
+
_b.sent();
|
|
266
|
+
expect(highlightError).toBeCalledWith(error);
|
|
267
|
+
return [2 /*return*/];
|
|
268
|
+
}
|
|
242
269
|
});
|
|
243
|
-
|
|
244
|
-
});
|
|
270
|
+
}); });
|
|
245
271
|
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Mode } from '@reltio/mdm-sdk';
|
|
2
|
+
export declare const store: {
|
|
3
|
+
metadata: {
|
|
4
|
+
entityTypes: {
|
|
5
|
+
uri: string;
|
|
6
|
+
attributes: ({
|
|
7
|
+
uri: string;
|
|
8
|
+
name: string;
|
|
9
|
+
label: string;
|
|
10
|
+
type: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
} | {
|
|
13
|
+
uri: string;
|
|
14
|
+
type: string;
|
|
15
|
+
label: string;
|
|
16
|
+
name: string;
|
|
17
|
+
required?: undefined;
|
|
18
|
+
})[];
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
mode: Mode;
|
|
22
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Mode } from '@reltio/mdm-sdk';
|
|
2
|
+
export var store = {
|
|
3
|
+
metadata: {
|
|
4
|
+
entityTypes: [
|
|
5
|
+
{
|
|
6
|
+
uri: 'configuration/entityTypes/HCP',
|
|
7
|
+
attributes: [
|
|
8
|
+
{
|
|
9
|
+
uri: 'configuration/entityTypes/HCP/attributes/Name',
|
|
10
|
+
name: 'Name',
|
|
11
|
+
label: 'Name Label',
|
|
12
|
+
type: 'String',
|
|
13
|
+
required: true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
uri: 'configuration/entityTypes/HCP/attributes/RDMLookup',
|
|
17
|
+
type: 'Reference',
|
|
18
|
+
label: 'RDMLookup Label',
|
|
19
|
+
name: 'RDMLookup'
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
mode: Mode.Viewing
|
|
26
|
+
};
|
|
@@ -9,105 +9,150 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
rowData: {
|
|
21
|
-
attribute: {
|
|
22
|
-
attrType: {},
|
|
23
|
-
entityTypeUri: '',
|
|
24
|
-
fieldName: 'attribute',
|
|
25
|
-
groupName: '',
|
|
26
|
-
title: '',
|
|
27
|
-
uri: ''
|
|
28
|
-
},
|
|
29
|
-
filter: 'equals',
|
|
30
|
-
id: 0,
|
|
31
|
-
values: []
|
|
32
|
-
},
|
|
33
|
-
rowContext: {
|
|
34
|
-
attributesGroup: [],
|
|
35
|
-
addNewFilter: jest.fn(),
|
|
36
|
-
addRowAfterIndex: jest.fn(),
|
|
37
|
-
changeFilter: jest.fn(),
|
|
38
|
-
duplicateRow: jest.fn(),
|
|
39
|
-
removeRow: jest.fn(),
|
|
40
|
-
entityType: {
|
|
41
|
-
uri: 'configuration/entityTypes/HCA',
|
|
42
|
-
label: 'HCA',
|
|
43
|
-
attributes: []
|
|
44
|
-
},
|
|
45
|
-
attributeSelectorItemsGroups: []
|
|
46
|
-
},
|
|
47
|
-
textFieldInputRef: { current: null }
|
|
48
|
-
};
|
|
49
|
-
var value = {
|
|
50
|
-
value: 'equals',
|
|
51
|
-
label: 'Equals'
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
52
20
|
};
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
-
return
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
57
47
|
};
|
|
48
|
+
import React from 'react';
|
|
49
|
+
import AttributesFilterSelector from './AttributesFilterSelector';
|
|
50
|
+
import { render, screen } from '@testing-library/react';
|
|
51
|
+
import userEvent from '@testing-library/user-event';
|
|
58
52
|
describe('AttributesFilterSelector tests', function () {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var component = setUp();
|
|
62
|
-
expect(component.find(SimpleDropDownSelector)).toHaveLength(1);
|
|
63
|
-
expect(component.find(SimpleDropDownSelector).props()).toMatchObject({
|
|
64
|
-
isDisabled: false,
|
|
65
|
-
placeholder: i18n.text('Equals'),
|
|
66
|
-
value: value,
|
|
67
|
-
options: filterOptions,
|
|
68
|
-
onChange: expect.any(Function),
|
|
69
|
-
textFieldInputRef: defaultProps.textFieldInputRef
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
it('should call changeFilter prop after filter changing', function () {
|
|
73
|
-
var rowContext = defaultProps.rowContext, rowData = defaultProps.rowData;
|
|
74
|
-
var newFilterOption = { value: 'exists', label: 'Exists' };
|
|
75
|
-
var newFilter = {
|
|
76
|
-
fieldName: rowData.attribute.fieldName,
|
|
77
|
-
filter: newFilterOption.value,
|
|
78
|
-
values: []
|
|
79
|
-
};
|
|
80
|
-
var component = setUp();
|
|
81
|
-
component.find(SimpleDropDownSelector).prop('onChange')(newFilterOption);
|
|
82
|
-
expect(rowContext.changeFilter).toBeCalledWith(newFilter, rowData.id);
|
|
83
|
-
});
|
|
84
|
-
it('should call changeFilter prop if there is fieldName in filter and there is no filter', function () {
|
|
85
|
-
var rowData = {
|
|
53
|
+
var defaultProps = {
|
|
54
|
+
rowData: {
|
|
86
55
|
attribute: {
|
|
87
|
-
attrType: {
|
|
56
|
+
attrType: {
|
|
57
|
+
name: 'attribute1',
|
|
58
|
+
uri: 'etityTypes/uri1',
|
|
59
|
+
type: 'string'
|
|
60
|
+
},
|
|
88
61
|
entityTypeUri: '',
|
|
89
62
|
fieldName: 'attribute',
|
|
90
63
|
groupName: '',
|
|
91
64
|
title: '',
|
|
92
65
|
uri: ''
|
|
93
66
|
},
|
|
94
|
-
filter:
|
|
67
|
+
filter: 'equals',
|
|
95
68
|
id: 0,
|
|
96
69
|
values: []
|
|
97
|
-
}
|
|
98
|
-
|
|
70
|
+
},
|
|
71
|
+
rowContext: {
|
|
72
|
+
attributesGroup: [],
|
|
73
|
+
addNewFilter: jest.fn(),
|
|
74
|
+
addRowAfterIndex: jest.fn(),
|
|
75
|
+
changeFilter: jest.fn(),
|
|
76
|
+
duplicateRow: jest.fn(),
|
|
77
|
+
removeRow: jest.fn(),
|
|
78
|
+
entityType: {
|
|
79
|
+
uri: 'configuration/entityTypes/HCA',
|
|
80
|
+
label: 'HCA',
|
|
81
|
+
attributes: []
|
|
82
|
+
},
|
|
83
|
+
attributeSelectorItemsGroups: []
|
|
84
|
+
},
|
|
85
|
+
textFieldInputRef: { current: null }
|
|
86
|
+
};
|
|
87
|
+
var value = {
|
|
88
|
+
value: 'equals',
|
|
89
|
+
label: 'Equals'
|
|
90
|
+
};
|
|
91
|
+
var filterOptions = [value];
|
|
92
|
+
var setUp = function (props) {
|
|
93
|
+
if (props === void 0) { props = defaultProps; }
|
|
94
|
+
var user = userEvent.setup();
|
|
95
|
+
return __assign({ user: user }, render(React.createElement(AttributesFilterSelector, __assign({}, props))));
|
|
96
|
+
};
|
|
97
|
+
it('should use filters for attribute', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
98
|
+
var user, menuItems;
|
|
99
|
+
return __generator(this, function (_a) {
|
|
100
|
+
switch (_a.label) {
|
|
101
|
+
case 0:
|
|
102
|
+
user = setUp().user;
|
|
103
|
+
expect(screen.getByText('Equals')).toBeInTheDocument();
|
|
104
|
+
return [4 /*yield*/, user.click(screen.getByTestId('filter-selector'))];
|
|
105
|
+
case 1:
|
|
106
|
+
_a.sent();
|
|
107
|
+
menuItems = screen.getAllByRole('menuitem');
|
|
108
|
+
expect(menuItems.map(function (item) { return item.textContent; })).toEqual(['Equals', 'Not', 'Exists', 'Missing value']);
|
|
109
|
+
return [2 /*return*/];
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}); });
|
|
113
|
+
it('should call changeFilter prop after filter changing', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
+
var changeFilterSpy, user;
|
|
115
|
+
return __generator(this, function (_a) {
|
|
116
|
+
switch (_a.label) {
|
|
117
|
+
case 0:
|
|
118
|
+
changeFilterSpy = jest.fn();
|
|
119
|
+
user = setUp(__assign(__assign({}, defaultProps), { rowContext: __assign(__assign({}, defaultProps.rowContext), { changeFilter: changeFilterSpy }) })).user;
|
|
120
|
+
return [4 /*yield*/, user.click(screen.getByTestId('filter-selector'))];
|
|
121
|
+
case 1:
|
|
122
|
+
_a.sent();
|
|
123
|
+
return [4 /*yield*/, user.click(screen.getByText('Exists'))];
|
|
124
|
+
case 2:
|
|
125
|
+
_a.sent();
|
|
126
|
+
expect(changeFilterSpy).toHaveBeenCalledWith({ fieldName: 'attribute', filter: 'exists', operator: undefined, values: [] }, defaultProps.rowData.id);
|
|
127
|
+
return [2 /*return*/];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}); });
|
|
131
|
+
it('should call changeFilter prop if there is fieldName in filter and there is no filter', function () {
|
|
132
|
+
var changeFilterSpy = jest.fn();
|
|
133
|
+
var props = __assign(__assign({}, defaultProps), { rowContext: __assign(__assign({}, defaultProps.rowContext), { changeFilter: changeFilterSpy }), rowData: __assign(__assign({}, defaultProps.rowData), { filter: null }) });
|
|
99
134
|
var newFilter = {
|
|
100
|
-
fieldName: rowData.attribute.fieldName,
|
|
135
|
+
fieldName: props.rowData.attribute.fieldName,
|
|
101
136
|
filter: filterOptions[0].value,
|
|
102
137
|
values: []
|
|
103
138
|
};
|
|
104
|
-
|
|
105
|
-
expect(
|
|
106
|
-
});
|
|
107
|
-
it('should pass options from props', function () {
|
|
108
|
-
var options = [{ value: 'not equals', label: 'Not Equals' }];
|
|
109
|
-
var props = __assign(__assign({}, defaultProps), { options: options });
|
|
110
|
-
var component = setUp(props);
|
|
111
|
-
expect(component.find(SimpleDropDownSelector).prop('options')).toEqual(options);
|
|
139
|
+
setUp(props);
|
|
140
|
+
expect(changeFilterSpy).toHaveBeenCalledWith(newFilter, props.rowData.id);
|
|
112
141
|
});
|
|
142
|
+
it('should pass options from props', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
143
|
+
var options, user, menuItems;
|
|
144
|
+
return __generator(this, function (_a) {
|
|
145
|
+
switch (_a.label) {
|
|
146
|
+
case 0:
|
|
147
|
+
options = [{ value: 'in', label: 'In' }];
|
|
148
|
+
user = setUp(__assign(__assign({}, defaultProps), { options: options })).user;
|
|
149
|
+
return [4 /*yield*/, user.click(screen.getByTestId('filter-selector'))];
|
|
150
|
+
case 1:
|
|
151
|
+
_a.sent();
|
|
152
|
+
menuItems = screen.getAllByRole('menuitem');
|
|
153
|
+
expect(menuItems.map(function (item) { return item.textContent; })).toEqual(['In']);
|
|
154
|
+
return [2 /*return*/];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}); });
|
|
113
158
|
});
|