@reltio/components 1.4.1988 → 1.4.1989

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.
@@ -119,6 +119,23 @@ describe('useEditorContext tests', function () {
119
119
  }
120
120
  });
121
121
  }); });
122
+ it('should return getSuggestions which passes request error through', function () { return __awaiter(void 0, void 0, void 0, function () {
123
+ var error, fieldName, dataTypeDefinition, result;
124
+ return __generator(this, function (_a) {
125
+ switch (_a.label) {
126
+ case 0:
127
+ error = { errorCode: 403, errorMessage: 'Access is denied' };
128
+ mdm_sdk_1.getFacetedAttributeData.mockRejectedValue(error);
129
+ fieldName = 'attributes.TextField';
130
+ dataTypeDefinition = { type: mdm_sdk_1.DataTypes.TYPE_TYPEAHEAD };
131
+ result = setUp({ fieldName: fieldName, dataTypeDefinition: dataTypeDefinition }).result;
132
+ return [4 /*yield*/, expect(result.current.getSuggestions('value', 100, 0)).rejects.toMatchObject(error)];
133
+ case 1:
134
+ _a.sent();
135
+ return [2 /*return*/];
136
+ }
137
+ });
138
+ }); });
122
139
  it('should return getLookups which dispatches an action for "Lookup" type', function () { return __awaiter(void 0, void 0, void 0, function () {
123
140
  var response, fieldName, dataTypeDefinition, result;
124
141
  return __generator(this, function (_a) {
@@ -174,6 +174,22 @@ describe('TagsEditor tests', function () {
174
174
  }
175
175
  });
176
176
  }); });
177
+ it('should catch and handle error in getFacetedAttributeData', function () { return __awaiter(void 0, void 0, void 0, function () {
178
+ var user;
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0:
182
+ jest.clearAllMocks();
183
+ mdm_sdk_1.getFacetedAttributeData.mockRejectedValue({ errorCode: 403, errorMessage: 'Access is denied' });
184
+ user = setUp().user;
185
+ return [4 /*yield*/, user.type(react_2.screen.getByRole('textbox'), 'new value')];
186
+ case 1:
187
+ _a.sent();
188
+ expect(react_2.screen.queryByRole('menuitem')).not.toBeInTheDocument();
189
+ return [2 /*return*/];
190
+ }
191
+ });
192
+ }); });
177
193
  it('should call onChange with correct params after click to suggestion', function () { return __awaiter(void 0, void 0, void 0, function () {
178
194
  var onChange, user;
179
195
  return __generator(this, function (_a) {
@@ -137,13 +137,24 @@ var TypeaheadEditor = function (_a) {
137
137
  var value = multiple === true && !(0, ramda_1.isNil)(valueProp) ? (0, mdm_sdk_1.wrapInArrayIfNeeded)(valueProp) : valueProp;
138
138
  var isFocused = function () { var _a; return ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === document.activeElement; };
139
139
  var fetchSuggestions = (0, react_1.useCallback)(function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
140
- var response;
140
+ var response, error_1;
141
141
  var value = _b.value;
142
142
  return __generator(this, function (_c) {
143
143
  switch (_c.label) {
144
- case 0: return [4 /*yield*/, safePromise(getSuggestions(value.trim(), pageSizeForRequest))];
144
+ case 0:
145
+ response = [];
146
+ _c.label = 1;
145
147
  case 1:
148
+ _c.trys.push([1, 3, , 4]);
149
+ return [4 /*yield*/, safePromise(getSuggestions(value.trim(), pageSizeForRequest))];
150
+ case 2:
146
151
  response = _c.sent();
152
+ return [3 /*break*/, 4];
153
+ case 3:
154
+ error_1 = _c.sent();
155
+ console.warn(error_1);
156
+ return [3 /*break*/, 4];
157
+ case 4:
147
158
  setSuggestions(response);
148
159
  setPlaceholderVisibility((0, ramda_1.isEmpty)(response) && isFocused());
149
160
  return [2 /*return*/];
@@ -154,24 +165,28 @@ var TypeaheadEditor = function (_a) {
154
165
  getSuggestions
155
166
  ]);
156
167
  var handleLoadMoreSuggestions = (0, react_1.useCallback)(function () { return __awaiter(void 0, void 0, void 0, function () {
157
- var response_1;
168
+ var response_1, error_2;
158
169
  return __generator(this, function (_a) {
159
170
  switch (_a.label) {
160
171
  case 0:
161
172
  setNextPageIsLoading(true);
162
173
  _a.label = 1;
163
174
  case 1:
164
- _a.trys.push([1, , 3, 4]);
175
+ _a.trys.push([1, 3, 4, 5]);
165
176
  return [4 /*yield*/, getSuggestions(inputValue, pageSizeForRequest, pageNumber + 1)];
166
177
  case 2:
167
178
  response_1 = _a.sent();
168
179
  setSuggestions(function (prevSuggestions) { return __spreadArray(__spreadArray([], prevSuggestions, true), response_1, true); });
169
180
  setPageNumber(function (prevPageNumber) { return prevPageNumber + 1; });
170
- return [3 /*break*/, 4];
181
+ return [3 /*break*/, 5];
171
182
  case 3:
183
+ error_2 = _a.sent();
184
+ console.warn(error_2);
185
+ return [3 /*break*/, 5];
186
+ case 4:
172
187
  setNextPageIsLoading(false);
173
188
  return [7 /*endfinally*/];
174
- case 4: return [2 /*return*/];
189
+ case 5: return [2 /*return*/];
175
190
  }
176
191
  });
177
192
  }); }, [getSuggestions, inputValue, pageNumber, pageSizeForRequest]);
@@ -222,6 +222,27 @@ describe('TypeaheadEditor', function () {
222
222
  }
223
223
  });
224
224
  }); });
225
+ it('should catch error in getSuggestions', function () { return __awaiter(void 0, void 0, void 0, function () {
226
+ var getSuggestions, user, input;
227
+ return __generator(this, function (_a) {
228
+ switch (_a.label) {
229
+ case 0:
230
+ getSuggestions = function () { return Promise.reject({ errorCode: 403, errorMessage: 'Access is denied' }); };
231
+ user = setUp(__assign(__assign({}, defaultSingleProps), { getSuggestions: getSuggestions })).user;
232
+ input = react_2.screen.getByRole('textbox');
233
+ return [4 /*yield*/, user.click(input)];
234
+ case 1:
235
+ _a.sent();
236
+ return [4 /*yield*/, user.type(input, 'e')];
237
+ case 2:
238
+ _a.sent();
239
+ return [4 /*yield*/, react_2.screen.findByText('No results found')];
240
+ case 3:
241
+ _a.sent();
242
+ return [2 /*return*/];
243
+ }
244
+ });
245
+ }); });
225
246
  describe('single mode', function () {
226
247
  it('should set input value after click on suggestion item', function () { return __awaiter(void 0, void 0, void 0, function () {
227
248
  var user, input;
@@ -89,7 +89,8 @@ var HistoryTree = function (_a) {
89
89
  var handleHistoryCircleMouseOver = function (uri, timestamp, index) {
90
90
  if ((0, ramda_1.isNil)(graphData.rows[index].label)) {
91
91
  var options = { time: timestamp, select: 'crosswalks' };
92
- (0, mdm_sdk_1.getEntity)(uri, options).then(function (_a) {
92
+ (0, mdm_sdk_1.getEntity)(uri, options)
93
+ .then(function (_a) {
93
94
  var crosswalks = _a.crosswalks;
94
95
  var label = crosswalks
95
96
  ? (0, ramda_1.uniqBy)((0, ramda_1.prop)('type'), crosswalks)
@@ -101,6 +102,9 @@ var HistoryTree = function (_a) {
101
102
  .join(', ')
102
103
  : ui_i18n_1.default.text('No data');
103
104
  setGraphData(function (prevGraphData) { return (__assign(__assign({}, prevGraphData), { rows: prevGraphData.rows.map(function (row) { return (row.index === index ? __assign(__assign({}, row), { label: label }) : row); }) })); });
105
+ })
106
+ .catch(function (error) {
107
+ console.warn(error);
104
108
  });
105
109
  }
106
110
  };
@@ -114,6 +114,23 @@ describe('useEditorContext tests', function () {
114
114
  }
115
115
  });
116
116
  }); });
117
+ it('should return getSuggestions which passes request error through', function () { return __awaiter(void 0, void 0, void 0, function () {
118
+ var error, fieldName, dataTypeDefinition, result;
119
+ return __generator(this, function (_a) {
120
+ switch (_a.label) {
121
+ case 0:
122
+ error = { errorCode: 403, errorMessage: 'Access is denied' };
123
+ getFacetedAttributeData.mockRejectedValue(error);
124
+ fieldName = 'attributes.TextField';
125
+ dataTypeDefinition = { type: DataTypes.TYPE_TYPEAHEAD };
126
+ result = setUp({ fieldName: fieldName, dataTypeDefinition: dataTypeDefinition }).result;
127
+ return [4 /*yield*/, expect(result.current.getSuggestions('value', 100, 0)).rejects.toMatchObject(error)];
128
+ case 1:
129
+ _a.sent();
130
+ return [2 /*return*/];
131
+ }
132
+ });
133
+ }); });
117
134
  it('should return getLookups which dispatches an action for "Lookup" type', function () { return __awaiter(void 0, void 0, void 0, function () {
118
135
  var response, fieldName, dataTypeDefinition, result;
119
136
  return __generator(this, function (_a) {
@@ -169,6 +169,22 @@ describe('TagsEditor tests', function () {
169
169
  }
170
170
  });
171
171
  }); });
172
+ it('should catch and handle error in getFacetedAttributeData', function () { return __awaiter(void 0, void 0, void 0, function () {
173
+ var user;
174
+ return __generator(this, function (_a) {
175
+ switch (_a.label) {
176
+ case 0:
177
+ jest.clearAllMocks();
178
+ getFacetedAttributeData.mockRejectedValue({ errorCode: 403, errorMessage: 'Access is denied' });
179
+ user = setUp().user;
180
+ return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'new value')];
181
+ case 1:
182
+ _a.sent();
183
+ expect(screen.queryByRole('menuitem')).not.toBeInTheDocument();
184
+ return [2 /*return*/];
185
+ }
186
+ });
187
+ }); });
172
188
  it('should call onChange with correct params after click to suggestion', function () { return __awaiter(void 0, void 0, void 0, function () {
173
189
  var onChange, user;
174
190
  return __generator(this, function (_a) {
@@ -108,13 +108,24 @@ export var TypeaheadEditor = function (_a) {
108
108
  var value = multiple === true && !isNil(valueProp) ? wrapInArrayIfNeeded(valueProp) : valueProp;
109
109
  var isFocused = function () { var _a; return ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('input')) === document.activeElement; };
110
110
  var fetchSuggestions = useCallback(function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
111
- var response;
111
+ var response, error_1;
112
112
  var value = _b.value;
113
113
  return __generator(this, function (_c) {
114
114
  switch (_c.label) {
115
- case 0: return [4 /*yield*/, safePromise(getSuggestions(value.trim(), pageSizeForRequest))];
115
+ case 0:
116
+ response = [];
117
+ _c.label = 1;
116
118
  case 1:
119
+ _c.trys.push([1, 3, , 4]);
120
+ return [4 /*yield*/, safePromise(getSuggestions(value.trim(), pageSizeForRequest))];
121
+ case 2:
117
122
  response = _c.sent();
123
+ return [3 /*break*/, 4];
124
+ case 3:
125
+ error_1 = _c.sent();
126
+ console.warn(error_1);
127
+ return [3 /*break*/, 4];
128
+ case 4:
118
129
  setSuggestions(response);
119
130
  setPlaceholderVisibility(isEmpty(response) && isFocused());
120
131
  return [2 /*return*/];
@@ -125,24 +136,28 @@ export var TypeaheadEditor = function (_a) {
125
136
  getSuggestions
126
137
  ]);
127
138
  var handleLoadMoreSuggestions = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
128
- var response_1;
139
+ var response_1, error_2;
129
140
  return __generator(this, function (_a) {
130
141
  switch (_a.label) {
131
142
  case 0:
132
143
  setNextPageIsLoading(true);
133
144
  _a.label = 1;
134
145
  case 1:
135
- _a.trys.push([1, , 3, 4]);
146
+ _a.trys.push([1, 3, 4, 5]);
136
147
  return [4 /*yield*/, getSuggestions(inputValue, pageSizeForRequest, pageNumber + 1)];
137
148
  case 2:
138
149
  response_1 = _a.sent();
139
150
  setSuggestions(function (prevSuggestions) { return __spreadArray(__spreadArray([], prevSuggestions, true), response_1, true); });
140
151
  setPageNumber(function (prevPageNumber) { return prevPageNumber + 1; });
141
- return [3 /*break*/, 4];
152
+ return [3 /*break*/, 5];
142
153
  case 3:
154
+ error_2 = _a.sent();
155
+ console.warn(error_2);
156
+ return [3 /*break*/, 5];
157
+ case 4:
143
158
  setNextPageIsLoading(false);
144
159
  return [7 /*endfinally*/];
145
- case 4: return [2 /*return*/];
160
+ case 5: return [2 /*return*/];
146
161
  }
147
162
  });
148
163
  }); }, [getSuggestions, inputValue, pageNumber, pageSizeForRequest]);
@@ -217,6 +217,27 @@ describe('TypeaheadEditor', function () {
217
217
  }
218
218
  });
219
219
  }); });
220
+ it('should catch error in getSuggestions', function () { return __awaiter(void 0, void 0, void 0, function () {
221
+ var getSuggestions, user, input;
222
+ return __generator(this, function (_a) {
223
+ switch (_a.label) {
224
+ case 0:
225
+ getSuggestions = function () { return Promise.reject({ errorCode: 403, errorMessage: 'Access is denied' }); };
226
+ user = setUp(__assign(__assign({}, defaultSingleProps), { getSuggestions: getSuggestions })).user;
227
+ input = screen.getByRole('textbox');
228
+ return [4 /*yield*/, user.click(input)];
229
+ case 1:
230
+ _a.sent();
231
+ return [4 /*yield*/, user.type(input, 'e')];
232
+ case 2:
233
+ _a.sent();
234
+ return [4 /*yield*/, screen.findByText('No results found')];
235
+ case 3:
236
+ _a.sent();
237
+ return [2 /*return*/];
238
+ }
239
+ });
240
+ }); });
220
241
  describe('single mode', function () {
221
242
  it('should set input value after click on suggestion item', function () { return __awaiter(void 0, void 0, void 0, function () {
222
243
  var user, input;
@@ -60,7 +60,8 @@ export var HistoryTree = function (_a) {
60
60
  var handleHistoryCircleMouseOver = function (uri, timestamp, index) {
61
61
  if (isNil(graphData.rows[index].label)) {
62
62
  var options = { time: timestamp, select: 'crosswalks' };
63
- getEntity(uri, options).then(function (_a) {
63
+ getEntity(uri, options)
64
+ .then(function (_a) {
64
65
  var crosswalks = _a.crosswalks;
65
66
  var label = crosswalks
66
67
  ? uniqBy(prop('type'), crosswalks)
@@ -72,6 +73,9 @@ export var HistoryTree = function (_a) {
72
73
  .join(', ')
73
74
  : i18n.text('No data');
74
75
  setGraphData(function (prevGraphData) { return (__assign(__assign({}, prevGraphData), { rows: prevGraphData.rows.map(function (row) { return (row.index === index ? __assign(__assign({}, row), { label: label }) : row); }) })); });
76
+ })
77
+ .catch(function (error) {
78
+ console.warn(error);
75
79
  });
76
80
  }
77
81
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1988",
3
+ "version": "1.4.1989",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -8,7 +8,7 @@
8
8
  "@fluentui/react-context-selector": "^9.1.26",
9
9
  "@react-google-maps/api": "2.7.0",
10
10
  "@react-sigma/core": "3.4.0",
11
- "@reltio/mdm-sdk": "^1.4.1886",
11
+ "@reltio/mdm-sdk": "^1.4.1887",
12
12
  "d3-cloud": "^1.2.5",
13
13
  "d3-geo": "^2.0.1",
14
14
  "d3-hierarchy": "^2.0.0",