@reltio/components 1.4.1906 → 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.
Files changed (97) hide show
  1. package/cjs/ActionsPanel/ActionsPanel.test.js +133 -49
  2. package/cjs/AttributeListItem/AttributeListItem.spec.js +147 -118
  3. package/cjs/AttributeSelector/AttributeSelector.specs.js +125 -193
  4. package/cjs/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  5. package/cjs/AttributesErrorsPanel/components/Error/Error.specs.js +96 -90
  6. package/cjs/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  7. package/cjs/AttributesErrorsPanel/store.test-data.js +29 -0
  8. package/cjs/AttributesFilterSelector/AttributesFilterSelector.test.js +127 -105
  9. package/cjs/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  10. package/cjs/AttributesValuesEditor/AttributesValuesEditor.test.js +92 -88
  11. package/cjs/AttributesView/AttributesView.test.js +67 -34
  12. package/cjs/AutoSizeList/AutoSizeList.test.js +81 -59
  13. package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +15 -31
  14. package/cjs/BarChart/BarChart.test.js +128 -65
  15. package/cjs/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  16. package/cjs/BasicViewContent/BasicViewContent.test.js +7 -9
  17. package/cjs/BlobRenderer/BlobRenderer.test.js +28 -9
  18. package/cjs/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  19. package/cjs/BubbleChart/BubbleChart.test.js +111 -87
  20. package/cjs/CloudChart/CloudChart.test.js +95 -36
  21. package/cjs/CollaborationItem/CollaborationItem.test.js +67 -30
  22. package/cjs/CollaborationItem/components/Comment/Comment.test.js +221 -189
  23. package/cjs/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -81
  24. package/cjs/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  25. package/cjs/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  26. package/cjs/CollapseButton/CollapseButton.test.js +74 -15
  27. package/cjs/CollapseRowButton/CollapseRowButton.test.js +82 -24
  28. package/cjs/ColorBar/ColorBar.test.js +13 -15
  29. package/cjs/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  30. package/cjs/CommentsContainer/CommentsContainer.test.js +282 -211
  31. package/cjs/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +183 -122
  32. package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  33. package/cjs/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  34. package/cjs/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  35. package/cjs/ConnectionEditor/ConnectionEditor.test.js +299 -282
  36. package/esm/ActionsPanel/ActionsPanel.test.js +133 -49
  37. package/esm/AttributeListItem/AttributeListItem.spec.js +149 -97
  38. package/esm/AttributeSelector/AttributeSelector.specs.js +125 -193
  39. package/esm/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  40. package/esm/AttributesErrorsPanel/components/Error/Error.specs.js +98 -72
  41. package/esm/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  42. package/esm/AttributesErrorsPanel/store.test-data.js +26 -0
  43. package/esm/AttributesFilterSelector/AttributesFilterSelector.test.js +129 -84
  44. package/esm/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  45. package/esm/AttributesValuesEditor/AttributesValuesEditor.test.js +94 -67
  46. package/esm/AttributesView/AttributesView.test.js +67 -34
  47. package/esm/AutoSizeList/AutoSizeList.test.js +81 -59
  48. package/esm/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +16 -32
  49. package/esm/BarChart/BarChart.test.js +128 -65
  50. package/esm/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  51. package/esm/BasicViewContent/BasicViewContent.test.js +7 -9
  52. package/esm/BlobRenderer/BlobRenderer.test.js +28 -9
  53. package/esm/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  54. package/esm/BubbleChart/BubbleChart.test.js +111 -87
  55. package/esm/CloudChart/CloudChart.test.js +95 -36
  56. package/esm/CollaborationItem/CollaborationItem.test.js +67 -30
  57. package/esm/CollaborationItem/components/Comment/Comment.test.js +221 -189
  58. package/esm/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -58
  59. package/esm/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  60. package/esm/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  61. package/esm/CollapseButton/CollapseButton.test.js +74 -15
  62. package/esm/CollapseRowButton/CollapseRowButton.test.js +82 -24
  63. package/esm/ColorBar/ColorBar.test.js +13 -15
  64. package/esm/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  65. package/esm/CommentsContainer/CommentsContainer.test.js +282 -211
  66. package/esm/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +182 -101
  67. package/esm/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  68. package/esm/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  69. package/esm/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  70. package/esm/ConnectionEditor/ConnectionEditor.test.js +300 -283
  71. package/package.json +1 -1
  72. package/cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -100
  73. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  74. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -46
  75. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  76. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.js +0 -27
  77. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  78. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -27
  79. package/cjs/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  80. package/cjs/CollaborationItem/components/Avatar/Avatar.test.js +0 -15
  81. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  82. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -80
  83. package/esm/ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts +0 -1
  84. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts +0 -1
  85. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -95
  86. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  87. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -41
  88. package/esm/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  89. package/esm/AvatarWithFallback/AvatarWithFallback.specs.js +0 -22
  90. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  91. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -22
  92. package/esm/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  93. package/esm/CollaborationItem/components/Avatar/Avatar.test.js +0 -10
  94. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  95. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -55
  96. /package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts → AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
  97. /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
- import React, * as react from 'react';
13
- import { shallow } from 'enzyme';
14
- import { act } from '@testing-library/react';
15
- import { SmallIconButtonWithTooltip } from '../../../SmallIconButton';
16
- import { AttributeValuePathItemType, ErrorSeverity, ErrorSource, ErrorType } from '@reltio/mdm-sdk';
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 { useMdmIsEditableMode, useMdmMetadata } from '../../../contexts/MdmModuleContext';
19
- jest.mock('react', function () { return (__assign(__assign({}, jest.requireActual('react')), { useContext: jest.fn().mockImplementation(function (f) { return f(); }) })); });
20
- jest.mock('../../../contexts/MdmModuleContext', function () { return (__assign(__assign({}, jest.requireActual('../../../contexts/MdmModuleContext')), { useMdmMetadata: jest.fn(), useMdmIsEditableMode: jest.fn() })); });
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
- uri: 'configuration/entityTypes/HCP/attributes/FirstName',
24
- label: 'First Name',
25
- name: 'FirstName',
26
- type: 'String',
27
- required: true
28
- };
29
- var metadata = {
30
- entityTypes: [
31
- {
32
- uri: 'configuration/entityTypes/HCP',
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
- var component = shallow(React.createElement(Error, { error: error }));
62
- expect(component.text()).toBe('Error 1');
63
- expect(component.find(SmallIconButtonWithTooltip)).toHaveLength(0);
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
- var component = shallow(React.createElement(Error, { error: error }));
78
- expect(component.text()).toBe('Error 1');
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
- var component = shallow(React.createElement(Error, { error: error }));
93
- expect(component.text()).toBe('First Name is required');
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
- var component = shallow(React.createElement(Error, { error: error }));
107
- expect(component.text()).toBe('First Name is required');
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
- var component = shallow(React.createElement(Error, { error: error }));
143
- expect(component.text()).toBe('Error 1_Connection 1 / Reference 1 / Name1');
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
- var component = shallow(React.createElement(Error, { error: error }));
184
- expect(component.text()).toBe('ReferenceType1 > Name Type 1__Error 1_Connection 1 / Reference 1 / Name1');
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
- var component = shallow(React.createElement(Error, { error: error }));
220
- expect(component.text()).toBe('Error 1_Connection 1 / Reference 1');
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
- type: ErrorType.invalid,
225
- uri: 'some uri',
226
- attributeType: attributeType,
227
- attributeTypeUri: 'configuration/entityTypes/HCP/attributes/Name',
228
- parentUri: 'entities/uri$$123',
229
- message: 'Error 1_',
230
- severity: ErrorSeverity.ERROR,
231
- source: ErrorSource.validationService,
232
- path: []
233
- };
234
- useMdmIsEditableMode.mockReturnValue(true);
235
- var component = shallow(React.createElement(Error, { error: error }));
236
- expect(component.text()).toBe('Error 1_');
237
- var button = component.find(SmallIconButtonWithTooltip);
238
- expect(button).toHaveLength(1);
239
- expect(button.prop('tooltipTitle')).toBe('Go to error');
240
- act(function () {
241
- button.simulate('click');
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
- expect(highlightErrorSpy).toBeCalledWith(error);
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
- import React from 'react';
13
- import { shallow, mount } from 'enzyme';
14
- import i18n from 'ui-i18n';
15
- import * as mdmSdk from '@reltio/mdm-sdk';
16
- import AttributesFilterSelector from './AttributesFilterSelector';
17
- import { SimpleDropDownSelector } from '../SimpleDropDownSelector';
18
- jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getFilterOptionsForQueryBuilder: jest.fn() })); });
19
- var defaultProps = {
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 filterOptions = [value];
54
- var setUp = function (props) {
55
- if (props === void 0) { props = defaultProps; }
56
- return shallow(React.createElement(AttributesFilterSelector, __assign({}, props)));
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
- it('should render main components', function () {
60
- jest.spyOn(mdmSdk, 'getFilterOptionsForQueryBuilder').mockReturnValue(['equals']);
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: null,
67
+ filter: 'equals',
95
68
  id: 0,
96
69
  values: []
97
- };
98
- var props = __assign(__assign({}, defaultProps), { rowData: rowData });
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
- mount(React.createElement(AttributesFilterSelector, __assign({}, props)));
105
- expect(props.rowContext.changeFilter).toBeCalledWith(newFilter, rowData.id);
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
  });