@truedat/dq 4.48.6 → 4.48.7
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/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/dq",
|
|
3
|
-
"version": "4.48.
|
|
3
|
+
"version": "4.48.7",
|
|
4
4
|
"description": "Truedat Web Data Quality Module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"jsnext:main": "src/index.js",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
90
|
"@apollo/client": "^3.6.4",
|
|
91
|
-
"@truedat/core": "4.48.
|
|
92
|
-
"@truedat/df": "4.48.
|
|
91
|
+
"@truedat/core": "4.48.7",
|
|
92
|
+
"@truedat/df": "4.48.7",
|
|
93
93
|
"axios": "^0.19.2",
|
|
94
94
|
"graphql": "^15.5.3",
|
|
95
95
|
"path-to-regexp": "^1.7.0",
|
|
@@ -110,5 +110,5 @@
|
|
|
110
110
|
"react-dom": ">= 16.8.6 < 17",
|
|
111
111
|
"semantic-ui-react": ">= 0.88.2 < 2.1"
|
|
112
112
|
},
|
|
113
|
-
"gitHead": "
|
|
113
|
+
"gitHead": "f4a20ecf51eb101c2c25facfec48ee8cd0e621a3"
|
|
114
114
|
}
|
|
@@ -207,126 +207,133 @@ describe("<NewRuleImplementation> NewRuleImplementation doSubmit", () => {
|
|
|
207
207
|
});
|
|
208
208
|
});
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
210
|
+
it("doSubmit: unique across fields operator", async () => {
|
|
211
|
+
const expectedRuleImplementation = {
|
|
212
|
+
...expectedRuleImplementationBase,
|
|
213
|
+
validations: [
|
|
214
|
+
{
|
|
215
|
+
modifier: null,
|
|
216
|
+
operator: { name: "unique", value_type: "field_list" },
|
|
217
|
+
population: [],
|
|
218
|
+
structure: {
|
|
219
|
+
id: 11127109,
|
|
220
|
+
parent_index: 4,
|
|
221
|
+
name: "EMAIL",
|
|
222
|
+
type: "VARCHAR2",
|
|
223
|
+
},
|
|
224
|
+
value: [
|
|
225
|
+
{
|
|
226
|
+
fields: [
|
|
227
|
+
{
|
|
228
|
+
id: 11127109,
|
|
229
|
+
name: "EMAIL",
|
|
230
|
+
parent_index: 4,
|
|
231
|
+
path: undefined,
|
|
232
|
+
type: "VARCHAR2",
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
id: 11127116,
|
|
236
|
+
name: "PHONE_NUMBER",
|
|
237
|
+
parent_index: 4,
|
|
238
|
+
path: undefined,
|
|
239
|
+
type: "VARCHAR2",
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
],
|
|
244
|
+
value_modifier: [],
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
const { queryByText, getByRole, findByRole, findByTestId } = render(
|
|
250
|
+
<NewRuleImplementation {...props} />,
|
|
251
|
+
renderOptsImplementationEdit
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
// Information Form
|
|
255
|
+
|
|
256
|
+
await waitFor(() => {
|
|
257
|
+
expect(queryByText(/Template/)).toBeTruthy();
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
userEvent.click(await findByRole("option", { name: "template1" }));
|
|
261
|
+
|
|
262
|
+
await waitFor(() => {
|
|
263
|
+
expect(getByRole("button", { name: "Next" })).toBeEnabled();
|
|
264
|
+
});
|
|
265
|
+
userEvent.click(await getByRole("button", { name: "Next" }));
|
|
266
|
+
|
|
267
|
+
// Dataset Form
|
|
268
|
+
|
|
269
|
+
await waitFor(() => {
|
|
270
|
+
expect(getByRole("button", { name: "Next" })).toBeEnabled();
|
|
271
|
+
});
|
|
272
|
+
userEvent.click(await getByRole("button", { name: "Next" }));
|
|
273
|
+
|
|
274
|
+
// Population Form
|
|
275
|
+
|
|
276
|
+
await waitFor(() => {
|
|
277
|
+
expect(getByRole("button", { name: "Next" })).toBeEnabled();
|
|
278
|
+
});
|
|
279
|
+
userEvent.click(await getByRole("button", { name: "Next" }));
|
|
280
|
+
|
|
281
|
+
// Validations Form
|
|
282
|
+
|
|
283
|
+
userEvent.click(await findByRole("button", { name: "add-condition-row" }));
|
|
284
|
+
|
|
285
|
+
const row = await findByTestId("row-0");
|
|
286
|
+
|
|
287
|
+
const field = row.querySelector('div[label="Field"]');
|
|
288
|
+
const operator = row.querySelector('div[label="Operator"]');
|
|
289
|
+
|
|
290
|
+
userEvent.click(field);
|
|
291
|
+
const fieldOptions = await within(field).findByRole("listbox");
|
|
292
|
+
const emailFieldOption = within(fieldOptions).getByText("EMAIL");
|
|
293
|
+
userEvent.click(emailFieldOption);
|
|
294
|
+
const selectedField = fieldOptions.querySelector(".selected>span");
|
|
295
|
+
expect(within(selectedField).queryByText(/EMAIL/)).toBeInTheDocument();
|
|
296
|
+
|
|
297
|
+
userEvent.click(operator);
|
|
298
|
+
const operatorOptions = await within(operator).findByRole("listbox");
|
|
299
|
+
const uniqueAcrossFieldsOperatorOption = within(operatorOptions).getByText(
|
|
300
|
+
"unique across fields"
|
|
301
|
+
);
|
|
302
|
+
userEvent.click(uniqueAcrossFieldsOperatorOption);
|
|
303
|
+
const selectedOperator = operatorOptions.querySelector(".selected>span");
|
|
304
|
+
expect(
|
|
305
|
+
within(selectedOperator).queryByText(/unique across fields/)
|
|
306
|
+
).toBeInTheDocument();
|
|
307
|
+
|
|
308
|
+
const updatedRow = await findByTestId("row-0");
|
|
309
|
+
const value = updatedRow.querySelector('div[label="Value"]');
|
|
310
|
+
userEvent.click(value);
|
|
311
|
+
const valueOptions = await within(value).findByRole("listbox");
|
|
312
|
+
const valueEmailFieldOption = within(valueOptions).getByText("EMAIL");
|
|
313
|
+
const valuePhoneNumberFieldOption =
|
|
314
|
+
within(valueOptions).getByText("PHONE_NUMBER");
|
|
315
|
+
|
|
316
|
+
userEvent.click(valueEmailFieldOption);
|
|
317
|
+
userEvent.click(valuePhoneNumberFieldOption);
|
|
318
|
+
|
|
319
|
+
const selectedFieldValues = updatedRow.querySelectorAll(".label");
|
|
320
|
+
|
|
321
|
+
const selectedFieldTexts = [...selectedFieldValues].map(
|
|
322
|
+
(selectedFieldValue) => selectedFieldValue.text
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
expect(_.difference(selectedFieldTexts, ["EMAIL", "PHONE_NUMBER"])).toEqual(
|
|
326
|
+
[]
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
await waitFor(() => {
|
|
330
|
+
expect(getByRole("button", { name: "Save" })).toBeEnabled();
|
|
331
|
+
});
|
|
332
|
+
userEvent.click(await getByRole("button", { name: "Save" }));
|
|
333
|
+
|
|
334
|
+
expect(dispatch).toHaveBeenCalledWith({
|
|
335
|
+
...ruleImplementationLoaderActions.updateRuleImplementation(),
|
|
336
|
+
payload: { rule_implementation: expectedRuleImplementation },
|
|
337
|
+
});
|
|
338
|
+
});
|
|
332
339
|
});
|