@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
@@ -51,227 +51,159 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  var react_1 = __importDefault(require("react"));
54
- var test_utils_1 = require("react-dom/test-utils");
55
- var enzyme_1 = require("enzyme");
56
- var TextField_1 = __importDefault(require("@mui/material/TextField"));
57
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
58
54
  var AttributeSelector_1 = require("./AttributeSelector");
59
- var MultiSelect_1 = require("../MultiSelect");
60
- var test_utils_2 = require("../test-utils");
55
+ var test_utils_1 = require("../test-utils");
61
56
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
62
- var attributes = [
63
- {
64
- label: 'Activity',
65
- name: 'activitywith',
66
- description: 'Activity',
67
- type: 'Reference',
68
- hidden: false,
69
- important: false,
70
- system: false,
71
- searchable: true,
72
- relationshipLabelPattern: '{Name}',
73
- uri: 'configuration/entityTypes/HCP/attributes/activitywith',
74
- referencedAttributeURIs: ['configuration/relationTypes/HasAddress/attributes/AddressType']
75
- },
76
- {
77
- label: 'ActivityTest',
78
- name: 'activitywithTest',
79
- description: 'Activity',
80
- type: 'String',
81
- hidden: false,
82
- important: false,
83
- system: false,
84
- searchable: true,
85
- relationshipLabelPattern: '{Name}',
86
- uri: 'configuration/entityTypes/HCP/attributes/activitywithTest'
87
- }
88
- ];
89
- var metadata = {
90
- entityTypes: [
57
+ var react_2 = require("@testing-library/react");
58
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
59
+ describe('AttributeSelector tests', function () {
60
+ var attributes = [
91
61
  {
92
- uri: 'configuration/entityTypes/Contact',
93
- label: 'Contact',
94
- attributes: attributes
95
- }
96
- ],
97
- relationTypes: [
62
+ label: 'Activity',
63
+ name: 'activitywith',
64
+ type: 'Reference',
65
+ hidden: false,
66
+ uri: 'configuration/entityTypes/HCP/attributes/activitywith',
67
+ referencedAttributeURIs: ['configuration/relationTypes/HasAddress/attributes/AddressType']
68
+ },
98
69
  {
99
- label: 'Relation',
100
- name: 'relation',
101
- description: 'Activity',
70
+ label: 'ActivityTest',
71
+ name: 'activitywithTest',
102
72
  type: 'String',
103
73
  hidden: false,
104
- important: false,
105
- system: false,
106
- searchable: true,
107
- relationshipLabelPattern: '{Name}',
108
- uri: 'configuration/relationTypes/HasAddress',
109
- attributes: [
110
- {
111
- label: 'AddressType',
112
- name: 'relation',
113
- description: 'Activity',
114
- type: 'String',
115
- hidden: false,
116
- important: false,
117
- system: false,
118
- searchable: true,
119
- relationshipLabelPattern: '{Name}',
120
- uri: 'configuration/relationTypes/HasAddress/attributes/AddressType'
121
- }
122
- ]
74
+ uri: 'configuration/entityTypes/HCP/attributes/activitywithTest'
75
+ },
76
+ {
77
+ label: 'ActivityHidden',
78
+ name: 'activityHidden',
79
+ type: 'String',
80
+ hidden: true,
81
+ uri: 'configuration/entityTypes/HCP/attributes/activityHidden'
123
82
  }
124
- ]
125
- };
126
- var defaultProps = {
127
- entityType: {
128
- uri: 'configuration/entityTypes/Contact',
129
- label: 'Contact',
130
- attributes: attributes
131
- },
132
- selectedAttributes: [],
133
- onChange: jest.fn(),
134
- className: 'someclass'
135
- };
136
- var setUp = function (props) {
137
- if (props === void 0) { props = defaultProps; }
138
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: { metadata: metadata } },
139
- react_1.default.createElement(AttributeSelector_1.AttributeSelector, __assign({}, props))));
140
- };
141
- describe('AttributeSelector tests', function () {
83
+ ];
84
+ var metadata = {
85
+ entityTypes: [
86
+ {
87
+ uri: 'configuration/entityTypes/Contact',
88
+ label: 'Contact',
89
+ attributes: attributes
90
+ }
91
+ ],
92
+ relationTypes: [
93
+ {
94
+ label: 'Relation',
95
+ name: 'relation',
96
+ type: 'String',
97
+ hidden: false,
98
+ uri: 'configuration/relationTypes/HasAddress',
99
+ attributes: [
100
+ {
101
+ label: 'AddressType',
102
+ name: 'relation',
103
+ type: 'String',
104
+ hidden: false,
105
+ uri: 'configuration/relationTypes/HasAddress/attributes/AddressType'
106
+ }
107
+ ]
108
+ }
109
+ ]
110
+ };
111
+ var defaultProps = {
112
+ entityType: {
113
+ uri: 'configuration/entityTypes/Contact',
114
+ label: 'Contact',
115
+ attributes: attributes
116
+ },
117
+ selectedAttributes: [],
118
+ onChange: jest.fn(),
119
+ className: 'someclass'
120
+ };
121
+ var setUp = function (props) {
122
+ if (props === void 0) { props = defaultProps; }
123
+ var Providers = function (_a) {
124
+ var children = _a.children;
125
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: { metadata: metadata } }, children));
126
+ };
127
+ var user = user_event_1.default.setup();
128
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(AttributeSelector_1.AttributeSelector, __assign({}, props)), { wrapper: Providers }));
129
+ };
142
130
  it('should render correct default state', function () { return __awaiter(void 0, void 0, void 0, function () {
143
- var attributeOptions, props, wrapper, title;
131
+ var user;
132
+ return __generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0:
135
+ user = setUp(__assign(__assign({}, defaultProps), { title: 'sometitle' })).user;
136
+ expect(react_2.screen.getByText('sometitle')).toBeInTheDocument();
137
+ expect(document.querySelector('.MuiInput-underline')).toBeInTheDocument();
138
+ return [4 /*yield*/, user.click((0, test_utils_1.getMuiIconByName)('ArrowDropDown'))];
139
+ case 1:
140
+ _a.sent();
141
+ expect(react_2.screen.getByText('ActivityTest')).toBeInTheDocument();
142
+ expect(react_2.screen.getByText('Activity')).toBeInTheDocument();
143
+ expect(react_2.screen.getByText('AddressType')).toBeInTheDocument();
144
+ return [2 /*return*/];
145
+ }
146
+ });
147
+ }); });
148
+ it('should render default title if props.title is not defined', function () {
149
+ setUp();
150
+ expect(react_2.screen.getByText('Attribute')).toBeInTheDocument();
151
+ });
152
+ it('should render TextField with disableUnderline if props.disableUnderline is true', function () {
153
+ setUp(__assign(__assign({}, defaultProps), { disableUnderline: true }));
154
+ expect(document.querySelector('.MuiInput-underline')).not.toBeInTheDocument();
155
+ });
156
+ it('should call onChange when new attribute is selected', function () { return __awaiter(void 0, void 0, void 0, function () {
157
+ var newAttributes, onChangeSpy, user;
144
158
  return __generator(this, function (_a) {
145
159
  switch (_a.label) {
146
160
  case 0:
147
- attributeOptions = [
161
+ newAttributes = [
148
162
  {
149
163
  label: 'Activity',
150
164
  value: 'configuration/entityTypes/HCP/attributes/activitywith',
151
165
  attrType: attributes[0],
152
166
  chipLabel: 'Activity',
153
167
  level: 0
154
- },
155
- {
156
- label: 'AddressType',
157
- value: 'configuration/relationTypes/HasAddress/attributes/AddressType',
158
- attrType: __assign(__assign({}, attributes[1]), { label: 'AddressType', name: 'relation', uri: 'configuration/relationTypes/HasAddress/attributes/AddressType' }),
159
- chipLabel: 'Activity / AddressType',
160
- level: 1
161
- },
162
- {
163
- label: 'ActivityTest',
164
- value: 'configuration/entityTypes/HCP/attributes/activitywithTest',
165
- attrType: attributes[1],
166
- chipLabel: 'ActivityTest',
167
- level: 0
168
168
  }
169
169
  ];
170
- props = __assign(__assign({}, defaultProps), { title: 'sometitle' });
171
- wrapper = setUp(props);
172
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
173
- return __generator(this, function (_a) {
174
- switch (_a.label) {
175
- case 0: return [4 /*yield*/, (0, test_utils_2.awaitMockPromises)()];
176
- case 1:
177
- _a.sent();
178
- return [2 /*return*/];
179
- }
180
- });
181
- }); })];
170
+ onChangeSpy = jest.fn();
171
+ user = setUp(__assign(__assign({}, defaultProps), { onChange: onChangeSpy })).user;
172
+ return [4 /*yield*/, user.click((0, test_utils_1.getMuiIconByName)('ArrowDropDown'))];
182
173
  case 1:
183
174
  _a.sent();
184
- wrapper.update();
185
- expect(wrapper.find('.root').prop('className')).toContain(props.className);
186
- title = wrapper.find(Typography_1.default).filterWhere(function (component) { return component.prop('className') === 'title'; });
187
- expect(title.text()).toBe(props.title);
188
- expect(wrapper.find(MultiSelect_1.MultiSelect).length).toBe(1);
189
- expect(wrapper.find(MultiSelect_1.MultiSelect).prop('menuPlacement')).toBe('bottom');
190
- expect(wrapper.find(MultiSelect_1.MultiSelect).prop('menuPortalTarget')).toBe(document.body);
191
- expect(wrapper.find('Select').prop('options')).toStrictEqual(attributeOptions);
192
- expect(wrapper.find(TextField_1.default).prop('InputProps')['disableUnderline']).toBeUndefined();
175
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Activity'))];
176
+ case 2:
177
+ _a.sent();
178
+ expect(onChangeSpy).toHaveBeenCalledWith(newAttributes);
193
179
  return [2 /*return*/];
194
180
  }
195
181
  });
196
182
  }); });
197
- it('should render default title if props.title is not defined', function () { return __awaiter(void 0, void 0, void 0, function () {
198
- var wrapper, title;
199
- return __generator(this, function (_a) {
200
- wrapper = setUp();
201
- title = wrapper.find(Typography_1.default).filterWhere(function (component) { return component.prop('className') === 'title'; });
202
- expect(title.text()).toBe('Attribute');
203
- return [2 /*return*/];
204
- });
205
- }); });
206
- it('should render TextField with disableUnderline if props.disableUnderline is true', function () { return __awaiter(void 0, void 0, void 0, function () {
207
- var props, wrapper;
208
- return __generator(this, function (_a) {
209
- props = __assign(__assign({}, defaultProps), { disableUnderline: true });
210
- wrapper = setUp(props);
211
- expect(wrapper.find(TextField_1.default).prop('InputProps')['disableUnderline']).toBeTruthy();
212
- return [2 /*return*/];
213
- });
214
- }); });
215
- it('should render MultiSelect with proper placement from props.menuPlacement', function () { return __awaiter(void 0, void 0, void 0, function () {
216
- var props, wrapper;
183
+ it('should render correctly if props.entityType is null', function () { return __awaiter(void 0, void 0, void 0, function () {
184
+ var user;
217
185
  return __generator(this, function (_a) {
218
- props = __assign(__assign({}, defaultProps), { menuPlacement: 'top' });
219
- wrapper = setUp(props);
220
- expect(wrapper.find(MultiSelect_1.MultiSelect).prop('menuPlacement')).toBe('top');
221
- return [2 /*return*/];
186
+ switch (_a.label) {
187
+ case 0:
188
+ user = setUp(__assign(__assign({}, defaultProps), { entityType: null })).user;
189
+ return [4 /*yield*/, user.click((0, test_utils_1.getMuiIconByName)('ArrowDropDown'))];
190
+ case 1:
191
+ _a.sent();
192
+ expect(react_2.screen.queryByRole('menuitem')).not.toBeInTheDocument();
193
+ return [2 /*return*/];
194
+ }
222
195
  });
223
196
  }); });
224
- it('should call onChange when new user is selected', function () {
225
- var newAttributes = [
226
- {
227
- label: 'Activity',
228
- value: 'configuration/entityTypes/HCP/attributes/activitywith',
229
- attrType: {
197
+ it('render selected attributes correctlry', function () {
198
+ setUp(__assign(__assign({}, defaultProps), { selectedAttributes: [
199
+ {
230
200
  label: 'Activity',
231
- name: 'activitywith',
232
- description: 'Activity',
233
- type: 'String',
234
- hidden: false,
235
- important: false,
236
- system: false,
237
- searchable: true,
238
- relationshipLabelPattern: '{Name}',
239
- uri: 'configuration/entityTypes/HCP/attributes/activitywith'
240
- },
241
- chipLabel: 'Activity',
242
- level: 0
243
- },
244
- {
245
- label: 'ActivityTest',
246
- value: 'configuration/entityTypes/HCP/attributes/activitywithTest',
247
- attrType: {
248
- label: 'ActivityTest',
249
- name: 'activitywithTest',
250
- description: 'Activity',
251
- type: 'String',
252
- hidden: false,
253
- important: false,
254
- system: false,
255
- searchable: true,
256
- relationshipLabelPattern: '{Name}',
257
- uri: 'configuration/entityTypes/HCP/attributes/activitywithTest'
258
- },
259
- chipLabel: 'Activity',
260
- level: 0
261
- }
262
- ];
263
- var wrapper = setUp();
264
- var select = wrapper.find(MultiSelect_1.MultiSelect);
265
- select.prop('onChange')(newAttributes);
266
- expect(defaultProps.onChange).toHaveBeenCalledWith(newAttributes);
201
+ value: 'configuration/entityTypes/HCP/attributes/activitywith',
202
+ attrType: attributes[0],
203
+ chipLabel: 'Activity',
204
+ level: 0
205
+ }
206
+ ] }));
207
+ expect(react_2.screen.queryByText('Activity')).toBeInTheDocument();
267
208
  });
268
- it('should render correctly if props.entityType is null', function () { return __awaiter(void 0, void 0, void 0, function () {
269
- var props, wrapper;
270
- return __generator(this, function (_a) {
271
- props = __assign(__assign({}, defaultProps), { entityType: null });
272
- wrapper = setUp(props);
273
- expect(wrapper.find('Select').prop('options')).toStrictEqual([]);
274
- return [2 /*return*/];
275
- });
276
- }); });
277
209
  });
@@ -10,16 +10,54 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
13
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
51
  };
16
52
  Object.defineProperty(exports, "__esModule", { value: true });
17
53
  var react_1 = __importDefault(require("react"));
18
- var enzyme_1 = require("enzyme");
19
54
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
20
55
  var AttributesErrorsPanel_1 = require("./AttributesErrorsPanel");
21
- var ErrorsPanel_1 = require("./components/ErrorsPanel");
22
- var Error_1 = require("./components/Error");
56
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
57
+ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
58
+ var react_2 = require("@testing-library/react");
59
+ var test_utils_1 = require("../test-utils");
60
+ var store_test_data_1 = require("./store.test-data");
23
61
  describe('AttributesErrorsPanel tests', function () {
24
62
  var error = {
25
63
  type: mdm_sdk_1.ErrorType.invalid,
@@ -41,80 +79,99 @@ describe('AttributesErrorsPanel tests', function () {
41
79
  source: mdm_sdk_1.ErrorSource.validationService,
42
80
  path: []
43
81
  };
44
- afterEach(function () {
45
- jest.clearAllMocks();
46
- });
82
+ var setUp = function (props) {
83
+ var Providers = function (_a) {
84
+ var children = _a.children;
85
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: store_test_data_1.store }, children));
86
+ };
87
+ var user = user_event_1.default.setup();
88
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, __assign({}, props)), { wrapper: Providers }));
89
+ };
47
90
  it('should render nothing if there are no errors', function () {
48
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, null));
49
- expect(component.isEmptyRender()).toBe(true);
91
+ var container = setUp().container;
92
+ expect(container).toBeEmptyDOMElement();
50
93
  });
51
94
  it('should render ErrorsPanel with 2 panels when there are both errors and warnings', function () {
52
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [error, error, warning] }));
53
- expect(component.isEmptyRender()).toBe(false);
54
- var errorsPanel = component.find(ErrorsPanel_1.ErrorsPanel);
55
- expect(errorsPanel.length).toBe(1);
56
- var panels = errorsPanel.prop('panels');
57
- expect(panels.length).toBe(2);
58
- expect(panels[0].title).toBe('2 errors');
59
- expect(panels[0].items).toEqual([error, error]);
60
- expect(panels[1].title).toBe('1 warning');
61
- expect(panels[1].items).toEqual([warning]);
62
- expect(errorsPanel.prop('ErrorComponent')).toBe(Error_1.Error);
95
+ setUp({ attributesWithErrors: [error, error, warning] });
96
+ expect(react_2.screen.getByText('2 errors')).toBeInTheDocument();
97
+ expect(react_2.screen.getAllByText('Error 1')).toHaveLength(2);
98
+ expect(react_2.screen.getByText('1 warning')).toBeInTheDocument();
99
+ expect(react_2.screen.getByText('Warning 1')).toBeInTheDocument();
100
+ expect((0, test_utils_1.getMuiIconByName)('Error')).toBeInTheDocument();
101
+ expect((0, test_utils_1.getMuiIconByName)('Warning')).toBeInTheDocument();
63
102
  });
64
103
  it('should render ErrorsPanel with only error panel when there are only error(s)', function () {
65
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [error] }));
66
- var errorsPanel = component.find(ErrorsPanel_1.ErrorsPanel);
67
- expect(errorsPanel.length).toBe(1);
68
- var panels = errorsPanel.prop('panels');
69
- expect(panels.length).toBe(1);
70
- expect(panels[0].title).toBe('1 error');
71
- expect(panels[0].items).toEqual([error]);
72
- expect(errorsPanel.prop('ErrorComponent')).toBe(Error_1.Error);
104
+ setUp({ attributesWithErrors: [error] });
105
+ expect(react_2.screen.getAllByRole('region')).toHaveLength(1);
106
+ expect(react_2.screen.getByText('1 error')).toBeInTheDocument();
107
+ expect(react_2.screen.getByText('Error 1')).toBeInTheDocument();
73
108
  });
74
109
  it('should render ErrorsPanel with only warning panel when there are only warning(s)', function () {
75
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [warning, warning] }));
76
- var errorsPanel = component.find(ErrorsPanel_1.ErrorsPanel);
77
- expect(errorsPanel.length).toBe(1);
78
- var panels = errorsPanel.prop('panels');
79
- expect(panels.length).toBe(1);
80
- expect(panels[0].title).toBe('2 warnings');
81
- expect(panels[0].items).toEqual([warning, warning]);
82
- expect(errorsPanel.prop('ErrorComponent')).toBe(Error_1.Error);
83
- });
84
- it('should toggle panels', function () {
85
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [error, warning] }));
86
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe(null);
87
- component.find(ErrorsPanel_1.ErrorsPanel).prop('onToggle')('error')({}, true);
88
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe('error');
89
- component.find(ErrorsPanel_1.ErrorsPanel).prop('onToggle')('warning')({}, true);
90
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe('warning');
91
- component.find(ErrorsPanel_1.ErrorsPanel).prop('onToggle')('warning')({}, false);
92
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe(null);
93
- });
94
- it('should expand error panel on new errors appearing', function () {
95
- var component = (0, enzyme_1.mount)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, null));
96
- expect(component.find(ErrorsPanel_1.ErrorsPanel).length).toBe(0);
97
- component.setProps({ attributesWithErrors: [error, warning] });
98
- expect(component.find(ErrorsPanel_1.ErrorsPanel).length).toBe(1);
99
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe('errors');
100
- component.find(ErrorsPanel_1.ErrorsPanel).prop('onToggle')('error')({}, false);
101
- component.update();
102
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe(null);
103
- component.setProps({ attributesWithErrors: [__assign(__assign({}, error), { message: 'new message' }), warning] });
104
- component.update();
105
- expect(component.find(ErrorsPanel_1.ErrorsPanel).length).toBe(1);
106
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe('errors');
107
- });
108
- it('should not expand error panel after error deactivating', function () {
109
- var component = (0, enzyme_1.mount)(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, null));
110
- expect(component.find(ErrorsPanel_1.ErrorsPanel).length).toBe(0);
111
- component.setProps({ attributesWithErrors: [error, warning] });
112
- expect(component.find(ErrorsPanel_1.ErrorsPanel).length).toBe(1);
113
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe('errors');
114
- component.find(ErrorsPanel_1.ErrorsPanel).prop('onToggle')('error')({}, false);
115
- component.update();
116
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe(null);
117
- component.setProps({ attributesWithErrors: [__assign(__assign({}, error), { deactivated: true }), warning] });
118
- expect(component.find(ErrorsPanel_1.ErrorsPanel).prop('expandedPanelId')).toBe(null);
110
+ setUp({ attributesWithErrors: [warning, warning] });
111
+ expect(react_2.screen.getAllByRole('region')).toHaveLength(1);
112
+ expect(react_2.screen.getByText('2 warnings')).toBeInTheDocument();
113
+ expect(react_2.screen.getAllByText('Warning 1')).toHaveLength(2);
119
114
  });
115
+ it('should toggle panels, error expand by default', function () { return __awaiter(void 0, void 0, void 0, function () {
116
+ var user, expandButtons, errorExpandButton, warningExpandButton;
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0:
120
+ user = setUp({ attributesWithErrors: [error, warning] }).user;
121
+ expandButtons = react_2.screen.getAllByRole('button');
122
+ errorExpandButton = expandButtons[0];
123
+ warningExpandButton = expandButtons[1];
124
+ expect(errorExpandButton).toHaveAttribute('aria-expanded', 'true');
125
+ return [4 /*yield*/, user.click(errorExpandButton)];
126
+ case 1:
127
+ _a.sent();
128
+ expect(errorExpandButton).toHaveAttribute('aria-expanded', 'false');
129
+ expect(warningExpandButton).toHaveAttribute('aria-expanded', 'false');
130
+ return [4 /*yield*/, user.click(warningExpandButton)];
131
+ case 2:
132
+ _a.sent();
133
+ expect(warningExpandButton).toHaveAttribute('aria-expanded', 'true');
134
+ return [2 /*return*/];
135
+ }
136
+ });
137
+ }); });
138
+ it('should expand error panel on new errors appearing', function () { return __awaiter(void 0, void 0, void 0, function () {
139
+ var _a, user, rerender, errorExpandButton;
140
+ return __generator(this, function (_b) {
141
+ switch (_b.label) {
142
+ case 0:
143
+ _a = setUp(), user = _a.user, rerender = _a.rerender;
144
+ expect(react_2.screen.queryByRole('region')).not.toBeInTheDocument();
145
+ rerender(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [error, warning] }));
146
+ errorExpandButton = react_2.screen.getByRole('button', { expanded: true });
147
+ expect((0, react_2.within)(errorExpandButton).getByText('1 error')).toBeInTheDocument();
148
+ expect(react_2.screen.getByText('Error 1')).toBeInTheDocument();
149
+ return [4 /*yield*/, user.click(errorExpandButton)];
150
+ case 1:
151
+ _b.sent();
152
+ expect(errorExpandButton).toHaveAttribute('aria-expanded', 'false');
153
+ rerender(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [__assign(__assign({}, error), { message: 'new message' }), warning] }));
154
+ expect(errorExpandButton).toHaveAttribute('aria-expanded', 'true');
155
+ expect((0, react_2.within)(errorExpandButton).getByText('1 error')).toBeInTheDocument();
156
+ expect(react_2.screen.getByText('new message')).toBeInTheDocument();
157
+ return [2 /*return*/];
158
+ }
159
+ });
160
+ }); });
161
+ it('should not expand error panel after error deactivating', function () { return __awaiter(void 0, void 0, void 0, function () {
162
+ var _a, user, rerender, errorExpandButton;
163
+ return __generator(this, function (_b) {
164
+ switch (_b.label) {
165
+ case 0:
166
+ _a = setUp({ attributesWithErrors: [error, warning] }), user = _a.user, rerender = _a.rerender;
167
+ errorExpandButton = react_2.screen.getByRole('button', { expanded: true });
168
+ return [4 /*yield*/, user.click(errorExpandButton)];
169
+ case 1:
170
+ _b.sent();
171
+ rerender(react_1.default.createElement(AttributesErrorsPanel_1.AttributesErrorsPanel, { attributesWithErrors: [__assign(__assign({}, error), { deactivated: true }), warning] }));
172
+ expect(errorExpandButton).toHaveAttribute('aria-expanded', 'false');
173
+ return [2 /*return*/];
174
+ }
175
+ });
176
+ }); });
120
177
  });