@truedat/core 8.7.0 → 8.7.1
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/package.json +3 -3
- package/src/components/AddMemberForm.js +3 -3
- package/src/components/Alert.js +3 -3
- package/src/components/AlertExporter.js +4 -4
- package/src/components/AvailableFilters.js +5 -5
- package/src/components/CSVFileModal.js +1 -1
- package/src/components/CardGroupsAccordion.js +4 -4
- package/src/components/CatalogMenu.js +2 -2
- package/src/components/CommentsForm.js +1 -1
- package/src/components/DomainSearchFilter.js +9 -9
- package/src/components/DomainSelector.js +1 -1
- package/src/components/FilterDropdown.js +5 -5
- package/src/components/FilterMultilevelDropdown.js +9 -9
- package/src/components/GlossaryMenu.js +10 -7
- package/src/components/Graph.js +199 -127
- package/src/components/GroupActions.js +2 -2
- package/src/components/Hierarchy.js +1 -1
- package/src/components/HierarchyFilterDropdown.js +7 -7
- package/src/components/HierarchySelector.js +1 -1
- package/src/components/LanguagesTabs.js +2 -2
- package/src/components/OptionGroup.js +8 -9
- package/src/components/QualityMenu.js +6 -8
- package/src/components/ResourceMembers.js +3 -3
- package/src/components/SearchFilterDropdown.js +3 -3
- package/src/components/SidebarToggle.js +1 -1
- package/src/components/Submenu.js +46 -27
- package/src/components/SystemsLoader.js +1 -1
- package/src/components/TemplatesLoader.js +1 -1
- package/src/components/TreeSelector.js +2 -2
- package/src/components/UploadJob.js +3 -3
- package/src/components/UploadJobBreadcrumbs.js +4 -1
- package/src/components/UploadJobParser.js +4 -3
- package/src/components/UploadModal.js +1 -1
- package/src/components/UserFilter.js +1 -1
- package/src/components/UserFilters.js +2 -2
- package/src/components/__tests__/ArrayDecorator.spec.js +2 -2
- package/src/components/__tests__/CardGroupsAccordion.spec.js +6 -6
- package/src/components/__tests__/CatalogMenu.spec.js +1 -1
- package/src/components/__tests__/DateTime.spec.js +1 -1
- package/src/components/__tests__/DomainSearchFilter.spec.js +2 -2
- package/src/components/__tests__/DomainSearchFilterItem.spec.js +7 -7
- package/src/components/__tests__/DomainSelector.spec.js +3 -3
- package/src/components/__tests__/DropdownMenuItem.spec.js +3 -3
- package/src/components/__tests__/FilterDropdown.spec.js +11 -11
- package/src/components/__tests__/FilterMultilevelDropdown.spec.js +2 -2
- package/src/components/__tests__/GlossaryMenu.spec.js +2 -2
- package/src/components/__tests__/Graph.spec.js +12 -4
- package/src/components/__tests__/GroupActions.spec.js +4 -4
- package/src/components/__tests__/Hierarchy.spec.js +1 -1
- package/src/components/__tests__/HierarchyFilterDropdown.spec.js +5 -5
- package/src/components/__tests__/HierarchyNodeFinder.spec.js +4 -4
- package/src/components/__tests__/HierarchySelector.spec.js +7 -5
- package/src/components/__tests__/Markdown.spec.js +22 -8
- package/src/components/__tests__/ModalSaveFilter.spec.js +1 -1
- package/src/components/__tests__/Pagination.spec.js +2 -2
- package/src/components/__tests__/ResourceMembers.spec.js +4 -4
- package/src/components/__tests__/SearchDateFilter.spec.js +10 -5
- package/src/components/__tests__/SearchFilterDropdown.spec.js +1 -1
- package/src/components/__tests__/SelectedFilters.spec.js +7 -7
- package/src/components/__tests__/SideMenu.spec.js +1 -1
- package/src/components/__tests__/Submenu.spec.js +1 -1
- package/src/components/__tests__/TemplateSelector.spec.js +5 -5
- package/src/components/__tests__/TreeSelector.spec.js +23 -24
- package/src/components/__tests__/UploadJob.spec.js +1 -3
- package/src/components/__tests__/UploadJobBreadcrumbs.spec.js +4 -4
- package/src/components/__tests__/UploadJobParser.spec.js +42 -38
- package/src/components/__tests__/UploadModal.spec.js +9 -9
- package/src/components/__tests__/UserFilters.spec.js +1 -1
- package/src/components/graph/ColoredEdge.js +29 -23
- package/src/components/graph/edgeLayout.js +4 -1
- package/src/hooks/__tests__/useActiveRoutes.spec.js +32 -18
- package/src/hooks/useAclEntries.js +2 -2
- package/src/hooks/useActiveRoutes.js +14 -6
- package/src/hooks/useAuthorized.js +3 -3
- package/src/hooks/useHierarchies.js +8 -8
- package/src/hooks/useLocales.js +3 -3
- package/src/hooks/useMessages.js +1 -1
- package/src/hooks/useOnScreen.js +1 -1
- package/src/hooks/useUploadJobs.js +2 -8
- package/src/hooks/useUserFilters.js +1 -1
- package/src/i18n/components/LangProvider.js +6 -6
- package/src/i18n/components/Languages.js +4 -4
- package/src/i18n/components/MessageForm.js +24 -13
- package/src/i18n/components/Messages.js +5 -5
- package/src/i18n/components/__tests__/I18nRoutes.spec.js +1 -1
- package/src/messages/index.js +1 -1
- package/src/reducers/comments.js +3 -3
- package/src/router/__tests__/ProtectedRoute.spec.js +1 -1
- package/src/routes.js +1 -1
- package/src/routesTree.js +6 -1
- package/src/routines.js +2 -2
- package/src/search/FilterDropdown.js +1 -1
- package/src/search/FilterMultilevelDropdown.js +10 -10
- package/src/search/FilterQueryDropdown.js +4 -4
- package/src/search/HierarchyFilterDropdown.js +7 -7
- package/src/search/SearchContext.js +19 -19
- package/src/search/SearchDateFilter.js +12 -2
- package/src/search/SearchFilters.js +1 -1
- package/src/search/SearchSelectedFilters.js +1 -1
- package/src/search/SearchWidget.js +6 -2
- package/src/search/UserFilter.js +1 -1
- package/src/search/UserFilters.js +4 -4
- package/src/search/__tests__/FilterDropdown.spec.js +3 -3
- package/src/search/__tests__/FilterQueryDropdown.spec.js +20 -18
- package/src/search/__tests__/ModalSaveFilter.spec.js +2 -2
- package/src/search/__tests__/SearchContext.spec.js +42 -42
- package/src/search/__tests__/SearchSelectedFilters.spec.js +21 -17
- package/src/search/__tests__/SearchWidget.spec.js +4 -4
- package/src/selectors/__tests__/getRiSubscopes.spec.js +1 -1
- package/src/selectors/__tests__/makeSearchQuerySelector.spec.js +2 -2
- package/src/selectors/getConceptSubscope.js +1 -1
- package/src/selectors/getDashboardConfig.js +3 -3
- package/src/selectors/getMessage.js +3 -3
- package/src/selectors/getRecipients.js +3 -3
- package/src/selectors/getRiSubscopes.js +2 -2
- package/src/selectors/getSidemenuGlossarySubscopes.js +1 -1
- package/src/selectors/makeActiveFiltersSelector.js +2 -2
- package/src/selectors/makeDateFiltersSelector.js +1 -1
- package/src/selectors/makeSearchQuerySelector.js +10 -10
- package/src/selectors/makeTagOptionsSelector.js +1 -4
- package/src/selectors/subscopedTemplates.js +2 -2
- package/src/services/columnPredicate.js +1 -1
- package/src/services/dateFilterFormatter.js +1 -1
- package/src/services/fieldType.js +1 -1
- package/src/services/formRules.js +16 -13
- package/src/services/getHierarchyOptions.js +2 -2
- package/src/services/message.js +7 -8
- package/src/services/operators.js +5 -5
- package/src/services/sort.js +2 -2
- package/src/services/swr.js +1 -1
- package/src/services/tree.js +2 -2
|
@@ -148,7 +148,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
148
148
|
<SearchContextProvider {...searchProps} defaultFilters={{}}>
|
|
149
149
|
<ChildComponent />
|
|
150
150
|
</SearchContextProvider>,
|
|
151
|
-
renderOpts
|
|
151
|
+
renderOpts,
|
|
152
152
|
);
|
|
153
153
|
await findByText(/Child Component/);
|
|
154
154
|
expect(container).toMatchSnapshot();
|
|
@@ -171,7 +171,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
171
171
|
<SearchContextProvider {...props}>
|
|
172
172
|
<ChildComponent />
|
|
173
173
|
</SearchContextProvider>,
|
|
174
|
-
renderOpts
|
|
174
|
+
renderOpts,
|
|
175
175
|
);
|
|
176
176
|
|
|
177
177
|
jest.runAllTimers();
|
|
@@ -179,7 +179,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
179
179
|
expect(triggerFiltersSpy).toHaveBeenCalledWith(
|
|
180
180
|
expect.objectContaining({
|
|
181
181
|
link_structures: true,
|
|
182
|
-
})
|
|
182
|
+
}),
|
|
183
183
|
);
|
|
184
184
|
jest.useRealTimers();
|
|
185
185
|
});
|
|
@@ -206,7 +206,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
206
206
|
<SearchContextProvider {...props}>
|
|
207
207
|
<ChildComponent />
|
|
208
208
|
</SearchContextProvider>,
|
|
209
|
-
renderOpts
|
|
209
|
+
renderOpts,
|
|
210
210
|
);
|
|
211
211
|
|
|
212
212
|
jest.runAllTimers();
|
|
@@ -214,7 +214,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
214
214
|
expect(triggerSearchSpy).toHaveBeenCalledWith(
|
|
215
215
|
expect.objectContaining({
|
|
216
216
|
link_structures: true,
|
|
217
|
-
})
|
|
217
|
+
}),
|
|
218
218
|
);
|
|
219
219
|
jest.useRealTimers();
|
|
220
220
|
});
|
|
@@ -244,7 +244,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
244
244
|
>
|
|
245
245
|
<ChildComponent />
|
|
246
246
|
</SearchContextProvider>,
|
|
247
|
-
renderOpts
|
|
247
|
+
renderOpts,
|
|
248
248
|
);
|
|
249
249
|
|
|
250
250
|
jest.runAllTimers();
|
|
@@ -253,14 +253,14 @@ describe("<SearchContextProvider />", () => {
|
|
|
253
253
|
expect.objectContaining({
|
|
254
254
|
must: expect.objectContaining({ domain_ids: ["100"] }),
|
|
255
255
|
must_not: expect.objectContaining({ domain_ids: ["200"] }),
|
|
256
|
-
})
|
|
256
|
+
}),
|
|
257
257
|
);
|
|
258
258
|
|
|
259
259
|
expect(triggerFiltersSpy).toHaveBeenCalledWith(
|
|
260
260
|
expect.objectContaining({
|
|
261
261
|
must: expect.objectContaining({ domain_ids: ["100"] }),
|
|
262
262
|
must_not: expect.objectContaining({ domain_ids: ["200"] }),
|
|
263
|
-
})
|
|
263
|
+
}),
|
|
264
264
|
);
|
|
265
265
|
jest.useRealTimers();
|
|
266
266
|
});
|
|
@@ -293,20 +293,20 @@ describe("<SearchContextProvider />", () => {
|
|
|
293
293
|
>
|
|
294
294
|
<ContextConsumer onSearchChangeSpy={jest.fn()} />
|
|
295
295
|
</SearchContextProvider>,
|
|
296
|
-
renderOpts
|
|
296
|
+
renderOpts,
|
|
297
297
|
);
|
|
298
298
|
|
|
299
299
|
jest.runAllTimers();
|
|
300
300
|
|
|
301
301
|
await waitFor(() =>
|
|
302
302
|
expect(
|
|
303
|
-
rendered.getByText(/grouped:\[\["main",\["status","taxonomy"\]\]\]/i)
|
|
304
|
-
).toBeInTheDocument()
|
|
303
|
+
rendered.getByText(/grouped:\[\["main",\["status","taxonomy"\]\]\]/i),
|
|
304
|
+
).toBeInTheDocument(),
|
|
305
305
|
);
|
|
306
306
|
await waitFor(() =>
|
|
307
307
|
expect(
|
|
308
|
-
rendered.getByText(/available:\["status","taxonomy","internal"\]/i)
|
|
309
|
-
).toBeInTheDocument()
|
|
308
|
+
rendered.getByText(/available:\["status","taxonomy","internal"\]/i),
|
|
309
|
+
).toBeInTheDocument(),
|
|
310
310
|
);
|
|
311
311
|
jest.useRealTimers();
|
|
312
312
|
});
|
|
@@ -322,7 +322,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
322
322
|
<SearchContextProvider {...searchProps}>
|
|
323
323
|
<ContextConsumer onSearchChangeSpy={onSearchChangeSpy} />
|
|
324
324
|
</SearchContextProvider>,
|
|
325
|
-
renderOpts
|
|
325
|
+
renderOpts,
|
|
326
326
|
);
|
|
327
327
|
|
|
328
328
|
jest.runAllTimers();
|
|
@@ -332,53 +332,53 @@ describe("<SearchContextProvider />", () => {
|
|
|
332
332
|
await user.click(rendered.getByText(/toggle-filter-draft/i));
|
|
333
333
|
await waitFor(() =>
|
|
334
334
|
expect(
|
|
335
|
-
rendered.getByText(/active:\{"status":\["draft"\]\}/i)
|
|
336
|
-
).toBeInTheDocument()
|
|
335
|
+
rendered.getByText(/active:\{"status":\["draft"\]\}/i),
|
|
336
|
+
).toBeInTheDocument(),
|
|
337
337
|
);
|
|
338
338
|
|
|
339
339
|
await user.click(rendered.getByText(/toggle-filter-draft/i));
|
|
340
340
|
await waitFor(() =>
|
|
341
341
|
expect(
|
|
342
|
-
rendered.getByText(/active:\{"status":\[\]\}/i)
|
|
343
|
-
).toBeInTheDocument()
|
|
342
|
+
rendered.getByText(/active:\{"status":\[\]\}/i),
|
|
343
|
+
).toBeInTheDocument(),
|
|
344
344
|
);
|
|
345
345
|
|
|
346
346
|
await user.click(rendered.getByText(/replace-filter-array/i));
|
|
347
347
|
await waitFor(() =>
|
|
348
348
|
expect(
|
|
349
|
-
rendered.getByText(/active:\{"status":\["draft","published"\]\}/i)
|
|
350
|
-
).toBeInTheDocument()
|
|
349
|
+
rendered.getByText(/active:\{"status":\["draft","published"\]\}/i),
|
|
350
|
+
).toBeInTheDocument(),
|
|
351
351
|
);
|
|
352
352
|
|
|
353
353
|
await user.click(rendered.getByText(/remove-filter-status/i));
|
|
354
354
|
await waitFor(() =>
|
|
355
|
-
expect(rendered.getByText(/active:\{\}/i)).toBeInTheDocument()
|
|
355
|
+
expect(rendered.getByText(/active:\{\}/i)).toBeInTheDocument(),
|
|
356
356
|
);
|
|
357
357
|
|
|
358
358
|
await user.click(rendered.getByText(/toggle-hidden-taxonomy/i));
|
|
359
359
|
await waitFor(() =>
|
|
360
360
|
expect(
|
|
361
|
-
rendered.getByText(/hidden:\{"taxonomy":\["10"\]\}/i)
|
|
362
|
-
).toBeInTheDocument()
|
|
361
|
+
rendered.getByText(/hidden:\{"taxonomy":\["10"\]\}/i),
|
|
362
|
+
).toBeInTheDocument(),
|
|
363
363
|
);
|
|
364
364
|
|
|
365
365
|
await user.click(rendered.getByText(/toggle-hidden-taxonomy/i));
|
|
366
366
|
await waitFor(() =>
|
|
367
367
|
expect(
|
|
368
|
-
rendered.getByText(/hidden:\{"taxonomy":\[\]\}/i)
|
|
369
|
-
).toBeInTheDocument()
|
|
368
|
+
rendered.getByText(/hidden:\{"taxonomy":\[\]\}/i),
|
|
369
|
+
).toBeInTheDocument(),
|
|
370
370
|
);
|
|
371
371
|
|
|
372
372
|
await user.click(rendered.getByText(/replace-hidden-array/i));
|
|
373
373
|
await waitFor(() =>
|
|
374
374
|
expect(
|
|
375
|
-
rendered.getByText(/hidden:\{"taxonomy":\["10","20"\]\}/i)
|
|
376
|
-
).toBeInTheDocument()
|
|
375
|
+
rendered.getByText(/hidden:\{"taxonomy":\["10","20"\]\}/i),
|
|
376
|
+
).toBeInTheDocument(),
|
|
377
377
|
);
|
|
378
378
|
|
|
379
379
|
await user.click(rendered.getByText(/remove-hidden-taxonomy/i));
|
|
380
380
|
await waitFor(() =>
|
|
381
|
-
expect(rendered.getByText(/hidden:\{\}/i)).toBeInTheDocument()
|
|
381
|
+
expect(rendered.getByText(/hidden:\{\}/i)).toBeInTheDocument(),
|
|
382
382
|
);
|
|
383
383
|
|
|
384
384
|
await waitFor(() => expect(onSearchChangeSpy).toHaveBeenCalled());
|
|
@@ -396,7 +396,7 @@ describe("<SearchContextProvider />", () => {
|
|
|
396
396
|
<SearchContextProvider {...searchProps}>
|
|
397
397
|
<ContextConsumer onSearchChangeSpy={onSearchChangeSpy} />
|
|
398
398
|
</SearchContextProvider>,
|
|
399
|
-
renderOpts
|
|
399
|
+
renderOpts,
|
|
400
400
|
);
|
|
401
401
|
|
|
402
402
|
jest.runAllTimers();
|
|
@@ -408,45 +408,45 @@ describe("<SearchContextProvider />", () => {
|
|
|
408
408
|
|
|
409
409
|
await user.click(rendered.getByText(/sort-status/i));
|
|
410
410
|
await waitFor(() =>
|
|
411
|
-
expect(rendered.getByText(/sort-column:status/i)).toBeInTheDocument()
|
|
411
|
+
expect(rendered.getByText(/sort-column:status/i)).toBeInTheDocument(),
|
|
412
412
|
);
|
|
413
413
|
await waitFor(() =>
|
|
414
414
|
expect(
|
|
415
|
-
rendered.getByText(/sort-direction:ascending/i)
|
|
416
|
-
).toBeInTheDocument()
|
|
415
|
+
rendered.getByText(/sort-direction:ascending/i),
|
|
416
|
+
).toBeInTheDocument(),
|
|
417
417
|
);
|
|
418
418
|
|
|
419
419
|
await user.click(rendered.getByText(/sort-status/i));
|
|
420
420
|
await waitFor(() =>
|
|
421
421
|
expect(
|
|
422
|
-
rendered.getByText(/sort-direction:descending/i)
|
|
423
|
-
).toBeInTheDocument()
|
|
422
|
+
rendered.getByText(/sort-direction:descending/i),
|
|
423
|
+
).toBeInTheDocument(),
|
|
424
424
|
);
|
|
425
425
|
|
|
426
426
|
await user.click(rendered.getByText(/set-query/i));
|
|
427
427
|
await waitFor(() =>
|
|
428
|
-
expect(rendered.getByText(/sort-column:_score/i)).toBeInTheDocument()
|
|
428
|
+
expect(rendered.getByText(/sort-column:_score/i)).toBeInTheDocument(),
|
|
429
429
|
);
|
|
430
430
|
await waitFor(() =>
|
|
431
431
|
expect(
|
|
432
|
-
rendered.getByText(/sort-direction:descending/i)
|
|
433
|
-
).toBeInTheDocument()
|
|
432
|
+
rendered.getByText(/sort-direction:descending/i),
|
|
433
|
+
).toBeInTheDocument(),
|
|
434
434
|
);
|
|
435
435
|
await waitFor(() =>
|
|
436
|
-
expect(rendered.getByText(/query:abc/i)).toBeInTheDocument()
|
|
436
|
+
expect(rendered.getByText(/query:abc/i)).toBeInTheDocument(),
|
|
437
437
|
);
|
|
438
438
|
|
|
439
439
|
await user.click(rendered.getByText(/clean-query/i));
|
|
440
440
|
await waitFor(() =>
|
|
441
|
-
expect(rendered.getByText(/sort-column:name\.raw/i)).toBeInTheDocument()
|
|
441
|
+
expect(rendered.getByText(/sort-column:name\.raw/i)).toBeInTheDocument(),
|
|
442
442
|
);
|
|
443
443
|
await waitFor(() =>
|
|
444
444
|
expect(
|
|
445
|
-
rendered.getByText(/sort-direction:ascending/i)
|
|
446
|
-
).toBeInTheDocument()
|
|
445
|
+
rendered.getByText(/sort-direction:ascending/i),
|
|
446
|
+
).toBeInTheDocument(),
|
|
447
447
|
);
|
|
448
448
|
await waitFor(() =>
|
|
449
|
-
expect(rendered.getByText(/^query:$/i)).toBeInTheDocument()
|
|
449
|
+
expect(rendered.getByText(/^query:$/i)).toBeInTheDocument(),
|
|
450
450
|
);
|
|
451
451
|
await waitFor(() => expect(onSearchChangeSpy).toHaveBeenCalled());
|
|
452
452
|
jest.useRealTimers();
|
|
@@ -119,14 +119,14 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
119
119
|
useSearchContext.mockReturnValue(
|
|
120
120
|
buildContext({
|
|
121
121
|
userFiltersType: "business_concept_user_filters",
|
|
122
|
-
})
|
|
122
|
+
}),
|
|
123
123
|
);
|
|
124
124
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
125
125
|
await waitForLoad(rendered);
|
|
126
126
|
|
|
127
127
|
expect(rendered.getByTestId("user-filters")).toHaveAttribute(
|
|
128
128
|
"data-domain-id",
|
|
129
|
-
"123"
|
|
129
|
+
"123",
|
|
130
130
|
);
|
|
131
131
|
});
|
|
132
132
|
|
|
@@ -135,14 +135,14 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
135
135
|
useSearchContext.mockReturnValue(
|
|
136
136
|
buildContext({
|
|
137
137
|
userFiltersType: "business_concept_user_filters",
|
|
138
|
-
})
|
|
138
|
+
}),
|
|
139
139
|
);
|
|
140
140
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
141
141
|
await waitForLoad(rendered);
|
|
142
142
|
|
|
143
143
|
expect(rendered.getByTestId("user-filters")).toHaveAttribute(
|
|
144
144
|
"data-domain-id",
|
|
145
|
-
"null"
|
|
145
|
+
"null",
|
|
146
146
|
);
|
|
147
147
|
});
|
|
148
148
|
|
|
@@ -154,18 +154,18 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
154
154
|
activeFilterName: "taxonomy",
|
|
155
155
|
activeFilterValues: [{ id: 1 }, { id: 2 }],
|
|
156
156
|
useDomainSearchFilter: true,
|
|
157
|
-
})
|
|
157
|
+
}),
|
|
158
158
|
);
|
|
159
159
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
160
160
|
await waitForLoad(rendered);
|
|
161
161
|
|
|
162
162
|
expect(rendered.getByTestId("domain-search-filter")).toHaveAttribute(
|
|
163
163
|
"data-filter",
|
|
164
|
-
"taxonomy"
|
|
164
|
+
"taxonomy",
|
|
165
165
|
);
|
|
166
166
|
expect(rendered.getByTestId("domain-search-filter")).toHaveAttribute(
|
|
167
167
|
"data-options-size",
|
|
168
|
-
"2"
|
|
168
|
+
"2",
|
|
169
169
|
);
|
|
170
170
|
});
|
|
171
171
|
|
|
@@ -175,12 +175,14 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
175
175
|
selectedFilters: ["taxonomy"],
|
|
176
176
|
filterTypes: { taxonomy: "domain" },
|
|
177
177
|
useDomainSearchFilter: false,
|
|
178
|
-
})
|
|
178
|
+
}),
|
|
179
179
|
);
|
|
180
180
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
181
181
|
await waitForLoad(rendered);
|
|
182
182
|
|
|
183
|
-
expect(
|
|
183
|
+
expect(
|
|
184
|
+
rendered.getByTestId("filter-multilevel-dropdown"),
|
|
185
|
+
).toBeInTheDocument();
|
|
184
186
|
});
|
|
185
187
|
|
|
186
188
|
it("renders hierarchy dropdown for hierarchy filter type", async () => {
|
|
@@ -188,12 +190,14 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
188
190
|
buildContext({
|
|
189
191
|
selectedFilters: ["hierarchy_field"],
|
|
190
192
|
filterTypes: { hierarchy_field: "hierarchy" },
|
|
191
|
-
})
|
|
193
|
+
}),
|
|
192
194
|
);
|
|
193
195
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
194
196
|
await waitForLoad(rendered);
|
|
195
197
|
|
|
196
|
-
expect(
|
|
198
|
+
expect(
|
|
199
|
+
rendered.getByTestId("hierarchy-filter-dropdown"),
|
|
200
|
+
).toBeInTheDocument();
|
|
197
201
|
});
|
|
198
202
|
|
|
199
203
|
it("renders query dropdown when active filter options length is greater than or equal to eight", async () => {
|
|
@@ -203,7 +207,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
203
207
|
filterTypes: { status: "term" },
|
|
204
208
|
activeFilterName: "status",
|
|
205
209
|
activeFilterValues: ["a", "b", "c", "d", "e", "f", "g", "h"],
|
|
206
|
-
})
|
|
210
|
+
}),
|
|
207
211
|
);
|
|
208
212
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
209
213
|
await waitForLoad(rendered);
|
|
@@ -218,7 +222,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
218
222
|
filterTypes: { status: "term" },
|
|
219
223
|
activeFilterName: "status",
|
|
220
224
|
activeFilterValues: ["a", "b", "c"],
|
|
221
|
-
})
|
|
225
|
+
}),
|
|
222
226
|
);
|
|
223
227
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
224
228
|
await waitForLoad(rendered);
|
|
@@ -233,7 +237,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
233
237
|
selectedFilters: ["status"],
|
|
234
238
|
filterTypes: { status: "term" },
|
|
235
239
|
userFiltersType: "business_concept_user_filters",
|
|
236
|
-
})
|
|
240
|
+
}),
|
|
237
241
|
);
|
|
238
242
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
239
243
|
await waitForLoad(rendered);
|
|
@@ -241,7 +245,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
241
245
|
expect(resetFilters).toHaveBeenCalledTimes(0);
|
|
242
246
|
expect(rendered.getByTestId("user-filters")).toHaveAttribute(
|
|
243
247
|
"data-selected-user-filter",
|
|
244
|
-
"undefined"
|
|
248
|
+
"undefined",
|
|
245
249
|
);
|
|
246
250
|
|
|
247
251
|
await user.click(rendered.getByText(/clear filters/i));
|
|
@@ -249,7 +253,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
249
253
|
expect(resetFilters).toHaveBeenCalledTimes(1);
|
|
250
254
|
expect(rendered.getByTestId("user-filters")).toHaveAttribute(
|
|
251
255
|
"data-selected-user-filter",
|
|
252
|
-
""
|
|
256
|
+
"",
|
|
253
257
|
);
|
|
254
258
|
});
|
|
255
259
|
|
|
@@ -259,7 +263,7 @@ describe("<SearchSelectedFilters />", () => {
|
|
|
259
263
|
selectedFilters: ["status"],
|
|
260
264
|
filterTypes: { status: "term" },
|
|
261
265
|
userFiltersType: "business_concept_user_filters",
|
|
262
|
-
})
|
|
266
|
+
}),
|
|
263
267
|
);
|
|
264
268
|
const rendered = render(<SearchSelectedFilters />, renderOpts);
|
|
265
269
|
await waitForLoad(rendered);
|
|
@@ -38,7 +38,7 @@ describe("<SearchWidget/>", () => {
|
|
|
38
38
|
<SearchContextWrapper props={searchProps}>
|
|
39
39
|
<SearchWidget />
|
|
40
40
|
</SearchContextWrapper>,
|
|
41
|
-
renderOpts
|
|
41
|
+
renderOpts,
|
|
42
42
|
);
|
|
43
43
|
expect(container).toMatchSnapshot();
|
|
44
44
|
});
|
|
@@ -48,7 +48,7 @@ describe("<SearchWidget/>", () => {
|
|
|
48
48
|
<SearchContextWrapper props={searchProps}>
|
|
49
49
|
<SearchWidget dateFilter={true} />
|
|
50
50
|
</SearchContextWrapper>,
|
|
51
|
-
renderOpts
|
|
51
|
+
renderOpts,
|
|
52
52
|
);
|
|
53
53
|
expect(container).toMatchSnapshot();
|
|
54
54
|
});
|
|
@@ -58,7 +58,7 @@ describe("<SearchWidget/>", () => {
|
|
|
58
58
|
<SearchContextWrapper props={searchProps}>
|
|
59
59
|
<SearchWidget />
|
|
60
60
|
</SearchContextWrapper>,
|
|
61
|
-
renderOpts
|
|
61
|
+
renderOpts,
|
|
62
62
|
);
|
|
63
63
|
|
|
64
64
|
userEvent.type(await getByRole("textbox"), "3");
|
|
@@ -81,7 +81,7 @@ describe("<SearchWidget/>", () => {
|
|
|
81
81
|
<SearchContextWrapper props={newSearchProps}>
|
|
82
82
|
<SearchWidget {...props} />
|
|
83
83
|
</SearchContextWrapper>,
|
|
84
|
-
renderOpts
|
|
84
|
+
renderOpts,
|
|
85
85
|
);
|
|
86
86
|
expect(queryByText(/Weeks/)).toBeInTheDocument();
|
|
87
87
|
});
|
|
@@ -88,7 +88,7 @@ describe("selectors: makeSearchQuerySelector", () => {
|
|
|
88
88
|
"conceptQuery",
|
|
89
89
|
"conceptActiveFilters",
|
|
90
90
|
undefined,
|
|
91
|
-
{ useDomainSearchFilter: true }
|
|
91
|
+
{ useDomainSearchFilter: true },
|
|
92
92
|
);
|
|
93
93
|
|
|
94
94
|
it("maps must.taxonomy to must.domain_ids", () => {
|
|
@@ -108,7 +108,7 @@ describe("selectors: makeSearchQuerySelector", () => {
|
|
|
108
108
|
"conceptQuery",
|
|
109
109
|
"conceptActiveFilters",
|
|
110
110
|
undefined,
|
|
111
|
-
{ useDomainSearchFilter: false }
|
|
111
|
+
{ useDomainSearchFilter: false },
|
|
112
112
|
);
|
|
113
113
|
|
|
114
114
|
it("keeps must.taxonomy", () => {
|
|
@@ -8,15 +8,15 @@ const configSelector = (field) =>
|
|
|
8
8
|
content: _.conformsTo({
|
|
9
9
|
[field]: _.isNumber,
|
|
10
10
|
}),
|
|
11
|
-
})
|
|
11
|
+
}),
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
export const getDashboardConfig = createSelector(
|
|
15
15
|
_.propOr({}, "systemConfigurations"),
|
|
16
|
-
configSelector("dashboard_id")
|
|
16
|
+
configSelector("dashboard_id"),
|
|
17
17
|
);
|
|
18
18
|
|
|
19
19
|
export const getQualityDashboardConfig = createSelector(
|
|
20
20
|
_.propOr({}, "systemConfigurations"),
|
|
21
|
-
configSelector("quality_dashboard_id")
|
|
21
|
+
configSelector("quality_dashboard_id"),
|
|
22
22
|
);
|
|
@@ -26,7 +26,7 @@ export const getMessage = createSelector(
|
|
|
26
26
|
dqMessage,
|
|
27
27
|
ieMessage,
|
|
28
28
|
imMessage,
|
|
29
|
-
cxMessage
|
|
29
|
+
cxMessage,
|
|
30
30
|
) =>
|
|
31
31
|
_.defaultTo(
|
|
32
32
|
{},
|
|
@@ -42,6 +42,6 @@ export const getMessage = createSelector(
|
|
|
42
42
|
coreMessage,
|
|
43
43
|
imMessage,
|
|
44
44
|
cxMessage,
|
|
45
|
-
])
|
|
46
|
-
)
|
|
45
|
+
]),
|
|
46
|
+
),
|
|
47
47
|
);
|
|
@@ -13,7 +13,7 @@ const usersAsOptions = (users) =>
|
|
|
13
13
|
text: _.prop("full_name")(u),
|
|
14
14
|
value: `user_${_.prop("id")(u)}`,
|
|
15
15
|
icon: "user",
|
|
16
|
-
}))
|
|
16
|
+
})),
|
|
17
17
|
)(users);
|
|
18
18
|
|
|
19
19
|
const groupsAsOptions = (groups) =>
|
|
@@ -25,10 +25,10 @@ const groupsAsOptions = (groups) =>
|
|
|
25
25
|
text: _.prop("alias")(g) || _.prop("name")(g),
|
|
26
26
|
value: `group_${_.prop("id")(g)}`,
|
|
27
27
|
icon: "group",
|
|
28
|
-
}))
|
|
28
|
+
})),
|
|
29
29
|
)(groups);
|
|
30
30
|
|
|
31
31
|
export const getRecipients = createSelector(
|
|
32
32
|
[getUsers, getGroups],
|
|
33
|
-
(users, groups) => [...usersAsOptions(users), ...groupsAsOptions(groups)]
|
|
33
|
+
(users, groups) => [...usersAsOptions(users), ...groupsAsOptions(groups)],
|
|
34
34
|
);
|
|
@@ -8,10 +8,10 @@ export const makeActiveFiltersSelector = (activeFiltersProp) => {
|
|
|
8
8
|
_.prop(activeFiltersProp),
|
|
9
9
|
(_state, props) => _.propOr(defaultFilters, "defaultFilters")(props),
|
|
10
10
|
(activeFilters, defaultFilters) =>
|
|
11
|
-
defaultFilters ? { ...defaultFilters, ...activeFilters } : activeFilters
|
|
11
|
+
defaultFilters ? { ...defaultFilters, ...activeFilters } : activeFilters,
|
|
12
12
|
);
|
|
13
13
|
return createSelectorCreator(lruMemoize, _.isEqual)(
|
|
14
14
|
activeFiltersSelector,
|
|
15
|
-
_.identity
|
|
15
|
+
_.identity,
|
|
16
16
|
);
|
|
17
17
|
};
|
|
@@ -14,7 +14,7 @@ import { makeDateFiltersSelector } from "./makeDateFiltersSelector";
|
|
|
14
14
|
|
|
15
15
|
export const queryPropsSelector = createSelectorCreator(lruMemoize, isEqual)(
|
|
16
16
|
(_state, props) => pick(["defaultFilters", "linkable", "pageSize"])(props),
|
|
17
|
-
identity
|
|
17
|
+
identity,
|
|
18
18
|
);
|
|
19
19
|
|
|
20
20
|
export const makeSearchFiltersSelector = (activeFiltersProp, dateFilterProp) =>
|
|
@@ -24,19 +24,19 @@ export const makeSearchFiltersSelector = (activeFiltersProp, dateFilterProp) =>
|
|
|
24
24
|
(activeFilters, activeDateFilters) => {
|
|
25
25
|
const must = omitBy(isEmpty)(activeFilters);
|
|
26
26
|
return { ...must, ...activeDateFilters };
|
|
27
|
-
}
|
|
27
|
+
},
|
|
28
28
|
);
|
|
29
29
|
|
|
30
30
|
export const makeSearchQuerySelector = (
|
|
31
31
|
queryProp,
|
|
32
32
|
activeFiltersProp,
|
|
33
33
|
dateFilterProp,
|
|
34
|
-
options = {}
|
|
34
|
+
options = {},
|
|
35
35
|
) => {
|
|
36
36
|
const { useDomainSearchFilter = false } = options;
|
|
37
37
|
const searchFiltersSelector = makeSearchFiltersSelector(
|
|
38
38
|
activeFiltersProp,
|
|
39
|
-
dateFilterProp
|
|
39
|
+
dateFilterProp,
|
|
40
40
|
);
|
|
41
41
|
const searchQuerySelector = createSelector(
|
|
42
42
|
prop(queryProp),
|
|
@@ -47,10 +47,10 @@ export const makeSearchQuerySelector = (
|
|
|
47
47
|
const shouldUseDomainSearchFilter =
|
|
48
48
|
useDomainSearchFilter || ownProps?.useDomainSearchFilter;
|
|
49
49
|
const mapDomainFilterKey = (key) =>
|
|
50
|
-
shouldUseDomainSearchFilter && key === "taxonomy"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
shouldUseDomainSearchFilter && key === "taxonomy" ? "domain_ids" : key;
|
|
51
|
+
const filters = mapKeys(mapDomainFilterKey)(
|
|
52
|
+
omitBy(isEmpty)(activeFilters),
|
|
53
|
+
);
|
|
54
54
|
const q = trim(query)
|
|
55
55
|
? {
|
|
56
56
|
must: filters,
|
|
@@ -60,10 +60,10 @@ export const makeSearchQuerySelector = (
|
|
|
60
60
|
}
|
|
61
61
|
: { must: filters, page: page - 1, sort: sort };
|
|
62
62
|
return getSearchPayload(q, ownProps);
|
|
63
|
-
}
|
|
63
|
+
},
|
|
64
64
|
);
|
|
65
65
|
return createSelectorCreator(lruMemoize, isEqual)(
|
|
66
66
|
searchQuerySelector,
|
|
67
|
-
identity
|
|
67
|
+
identity,
|
|
68
68
|
);
|
|
69
69
|
};
|
|
@@ -11,8 +11,5 @@ const createDeepSelector = createSelectorCreator(lruMemoize, _.isEqual);
|
|
|
11
11
|
export const makeTagOptionsSelector = (targetType) =>
|
|
12
12
|
createDeepSelector(
|
|
13
13
|
_.prop("relationTags"),
|
|
14
|
-
_.flow(
|
|
15
|
-
_.filter(_.pathEq("value.target_type", targetType)),
|
|
16
|
-
tagsToOptions
|
|
17
|
-
)
|
|
14
|
+
_.flow(_.filter(_.pathEq("value.target_type", targetType)), tagsToOptions),
|
|
18
15
|
);
|
|
@@ -6,11 +6,11 @@ export const getSubscopes = (allTemplates, mainScope) => {
|
|
|
6
6
|
_.filter({ scope: mainScope }),
|
|
7
7
|
_.map("subscope"),
|
|
8
8
|
_.uniq,
|
|
9
|
-
_.filter((el) => el !== null)
|
|
9
|
+
_.filter((el) => el !== null),
|
|
10
10
|
)(allTemplates);
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
export const makeGetSubscopes = (mainScope) =>
|
|
14
14
|
createSelector(_.prop("allTemplates"), (allTemplates) =>
|
|
15
|
-
getSubscopes(allTemplates, mainScope)
|
|
15
|
+
getSubscopes(allTemplates, mainScope),
|
|
16
16
|
);
|