@reltio/components 1.4.2027 → 1.4.2028

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 (65) hide show
  1. package/cjs/features/crosswalks/CrosswalkRow/DndCrosswalkRow.test.js +0 -1
  2. package/cjs/features/graph/SigmaGraphContainer/SigmaGraphContainer.test.js +5 -14
  3. package/cjs/features/graph/SigmaGraphResizer/SigmaGraphResizer.test.js +11 -9
  4. package/cjs/features/graph/ZoomSlider/ZoomSlider.js +2 -2
  5. package/cjs/features/graph/ZoomSlider/ZoomSlider.test.js +85 -37
  6. package/cjs/features/history/DateRangeSelector/DateRangeSelector.specs.js +188 -117
  7. package/cjs/features/history/HistoryFilterButton/HistoryFilterButton.js +1 -1
  8. package/cjs/features/history/HistoryGraph/components/HistoryCircle/HistoryCircle.specs.js +38 -41
  9. package/cjs/features/history/HistoryGraph/components/HistoryLink/HistoryLink.specs.js +17 -16
  10. package/cjs/features/history/HistoryHeader/HistoryHeader.spec.js +21 -31
  11. package/cjs/features/history/HistoryPanelEmptyState/HistoryPanelEmptyState.specs.js +4 -9
  12. package/cjs/features/history/HistoryRow/HistoryRow.js +1 -1
  13. package/cjs/features/history/HistoryRow/HistoryRow.specs.js +74 -34
  14. package/cjs/features/history/HistoryTree/HistoryTree.js +1 -1
  15. package/cjs/features/history/HistoryView/HistoryView.specs.js +77 -43
  16. package/cjs/features/workflow/AddWorkflowButton/AddWorkflowButton.spec.js +83 -34
  17. package/cjs/features/workflow/AttributesChanges/AttributesChanges.js +1 -1
  18. package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.js +1 -1
  19. package/cjs/features/workflow/AttributesChanges/components/ShowMoreLink/ShowMoreLink.spec.js +81 -24
  20. package/cjs/features/workflow/DueDateField/DueDateField.spec.js +51 -102
  21. package/cjs/features/workflow/PrioritySelector/PrioritySelector.spec.js +62 -133
  22. package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +438 -124
  23. package/cjs/features/workflow/hooks/useChangeRequest.specs.js +17 -27
  24. package/cjs/features/workflow/hooks/useWorkflowColor.specs.js +23 -47
  25. package/features/crosswalks/CrosswalkRow/DndCrosswalkRow.test.js +0 -1
  26. package/features/graph/SigmaGraphContainer/SigmaGraphContainer.test.js +5 -14
  27. package/features/graph/SigmaGraphResizer/SigmaGraphResizer.test.js +11 -9
  28. package/features/graph/ZoomSlider/ZoomSlider.js +2 -2
  29. package/features/graph/ZoomSlider/ZoomSlider.test.js +85 -37
  30. package/features/history/DateRangeSelector/DateRangeSelector.specs.js +188 -117
  31. package/features/history/HistoryFilterButton/HistoryFilterButton.js +1 -1
  32. package/features/history/HistoryGraph/components/HistoryCircle/HistoryCircle.specs.js +38 -41
  33. package/features/history/HistoryGraph/components/HistoryLink/HistoryLink.specs.js +17 -16
  34. package/features/history/HistoryHeader/HistoryHeader.spec.js +21 -31
  35. package/features/history/HistoryPanelEmptyState/HistoryPanelEmptyState.specs.js +4 -9
  36. package/features/history/HistoryRow/HistoryRow.js +1 -1
  37. package/features/history/HistoryRow/HistoryRow.specs.js +74 -34
  38. package/features/history/HistoryTree/HistoryTree.js +1 -1
  39. package/features/history/HistoryView/HistoryView.specs.js +77 -43
  40. package/features/workflow/AddWorkflowButton/AddWorkflowButton.spec.js +83 -34
  41. package/features/workflow/AttributesChanges/AttributesChanges.js +1 -1
  42. package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.js +1 -1
  43. package/features/workflow/AttributesChanges/components/ShowMoreLink/ShowMoreLink.spec.js +81 -24
  44. package/features/workflow/DueDateField/DueDateField.spec.js +51 -102
  45. package/features/workflow/PrioritySelector/PrioritySelector.spec.js +62 -133
  46. package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +439 -125
  47. package/features/workflow/hooks/useChangeRequest.specs.js +17 -24
  48. package/features/workflow/hooks/useWorkflowColor.specs.js +23 -44
  49. package/package.json +1 -1
  50. package/cjs/features/workflow/AttributesChanges/AttributesChanges.spec.d.ts +0 -1
  51. package/cjs/features/workflow/AttributesChanges/AttributesChanges.spec.js +0 -249
  52. package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.d.ts +0 -1
  53. package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.js +0 -44
  54. package/cjs/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.d.ts +0 -1
  55. package/cjs/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.js +0 -38
  56. package/cjs/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.d.ts +0 -1
  57. package/cjs/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.js +0 -218
  58. package/features/workflow/AttributesChanges/AttributesChanges.spec.d.ts +0 -1
  59. package/features/workflow/AttributesChanges/AttributesChanges.spec.js +0 -244
  60. package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.d.ts +0 -1
  61. package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.js +0 -39
  62. package/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.d.ts +0 -1
  63. package/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.js +0 -33
  64. package/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.d.ts +0 -1
  65. package/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.js +0 -213
@@ -9,9 +9,46 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["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
+ };
12
48
  import React from 'react';
13
49
  import i18n from 'ui-i18n';
14
- import { shallow } from 'enzyme';
50
+ import { render, screen } from '@testing-library/react';
51
+ import userEvent from '@testing-library/user-event';
15
52
  import { HistoryChangeTypes } from '../types';
16
53
  import { getActivityLabel } from '../../activity-log';
17
54
  import { getContributorColor } from '@reltio/mdm-sdk';
@@ -25,7 +62,7 @@ describe('HistoryRow tests', function () {
25
62
  timestamp: 1622451175422
26
63
  };
27
64
  var onClick = jest.fn();
28
- var props = {
65
+ var defaultProps = {
29
66
  change: change,
30
67
  isCurrent: false,
31
68
  isSelected: false,
@@ -34,44 +71,47 @@ describe('HistoryRow tests', function () {
34
71
  beforeAll(function () {
35
72
  jest.clearAllMocks();
36
73
  });
74
+ var setUp = function (props) {
75
+ if (props === void 0) { props = defaultProps; }
76
+ var user = userEvent.setup();
77
+ return __assign(__assign({}, render(React.createElement(HistoryRow, __assign({}, props)))), { user: user });
78
+ };
37
79
  it('should render correctly', function () {
38
- var wrapper = shallow(React.createElement(HistoryRow, __assign({}, props)));
39
- expect(getContributorColor).toHaveBeenCalledWith(props.change.uri);
40
- expect(wrapper.find('.historyRow').length).toBe(1);
41
- var header = wrapper.find('.rowHeader');
42
- expect(header.length).toBe(1);
43
- expect(header.find('.badge').length).toBe(1);
44
- var headerTitle = header.find('.title');
45
- expect(headerTitle.text()).toBe(getActivityLabel(props.change.type));
46
- expect(headerTitle.hasClass('bold')).toBe(false);
47
- expect(header.find('.date').text()).toBe(i18n.date(props.change.timestamp, 'L LT'));
48
- expect(wrapper.find('.historyRow > .title').length).toBe(0);
49
- expect(wrapper.find('.user').text()).toBe(props.change.user);
50
- expect(wrapper.hasClass('selected')).toBeFalsy();
80
+ setUp();
81
+ expect(getContributorColor).toHaveBeenCalledWith(defaultProps.change.uri);
82
+ expect(screen.getByText(getActivityLabel(defaultProps.change.type))).toBeInTheDocument();
83
+ expect(screen.getByText(i18n.date(defaultProps.change.timestamp, 'L LT'))).toBeInTheDocument();
84
+ expect(screen.getByText(defaultProps.change.user)).toBeInTheDocument();
85
+ expect(screen.queryByText('Current view')).not.toBeInTheDocument();
86
+ expect(screen.getByTestId('history-row')).not.toHaveClass('selected');
87
+ expect(screen.getByTestId('history-row-header')).not.toHaveClass('bold');
51
88
  });
52
89
  it('should render correct current row if isCurrent === true', function () {
53
- var wrapper = shallow(React.createElement(HistoryRow, __assign({}, props, { isCurrent: true })));
54
- var header = wrapper.find('.rowHeader');
55
- expect(header.length).toBe(1);
56
- expect(header.find('.badge').length).toBe(1);
57
- var headerTitle = header.find('.title');
58
- expect(headerTitle.text()).toBe('Current view');
59
- expect(headerTitle.hasClass('bold')).toBe(true);
60
- expect(header.find('.date').length).toBe(0);
90
+ setUp(__assign(__assign({}, defaultProps), { isCurrent: true }));
91
+ expect(screen.getByText('Current view')).toBeInTheDocument();
92
+ expect(screen.getByTestId('history-row-header')).toHaveClass('bold');
93
+ expect(screen.queryByText(i18n.date(defaultProps.change.timestamp, 'L LT'))).not.toBeInTheDocument();
61
94
  });
62
95
  it('should show match rules if change.matchGroups is not empty', function () {
63
- var wrapper = shallow(React.createElement(HistoryRow, __assign({}, props, { change: __assign(__assign({}, change), { matchGroups: ['first', 'second'] }) })));
64
- var matchRules = wrapper.find('.historyRow > .title');
65
- expect(matchRules.length).toBe(1);
66
- expect(matchRules.text()).toBe('Match rule: first, second');
96
+ setUp(__assign(__assign({}, defaultProps), { change: __assign(__assign({}, change), { matchGroups: ['first', 'second'] }) }));
97
+ expect(screen.getByText('Match rule: first, second')).toBeInTheDocument();
67
98
  });
68
99
  it('should render correctly if isSelected === true', function () {
69
- var wrapper = shallow(React.createElement(HistoryRow, __assign({}, props, { isSelected: true })));
70
- expect(wrapper.hasClass('selected')).toBeTruthy();
71
- });
72
- it('should call props.onClick when click on the row', function () {
73
- var wrapper = shallow(React.createElement(HistoryRow, __assign({}, props)));
74
- wrapper.simulate('click');
75
- expect(onClick).toHaveBeenCalled();
100
+ setUp(__assign(__assign({}, defaultProps), { isSelected: true }));
101
+ expect(screen.getByTestId('history-row')).toHaveClass('selected');
76
102
  });
103
+ it('should call props.onClick when click on the row', function () { return __awaiter(void 0, void 0, void 0, function () {
104
+ var user;
105
+ return __generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0:
108
+ user = setUp().user;
109
+ return [4 /*yield*/, user.click(screen.getByTestId('history-row'))];
110
+ case 1:
111
+ _a.sent();
112
+ expect(onClick).toHaveBeenCalled();
113
+ return [2 /*return*/];
114
+ }
115
+ });
116
+ }); });
77
117
  });
@@ -97,7 +97,7 @@ export var HistoryTree = function (_a) {
97
97
  setSelectedIndex(index);
98
98
  }
99
99
  };
100
- return (React.createElement("div", { className: styles.historyTree },
100
+ return (React.createElement("div", { className: styles.historyTree, "data-reltio-id": "history-tree" },
101
101
  isLoading && React.createElement(LinearLoadIndicator, null),
102
102
  React.createElement("div", { className: classnames(styles.graph, (_b = {}, _b[styles.shadow] = isScrollable, _b)), onScroll: handleGraphScroll, ref: graphRef },
103
103
  React.createElement(HistoryGraph, { onHistoryCircleMouseOver: handleHistoryCircleMouseOver, graphData: graphData }),
@@ -9,19 +9,47 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["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
+ };
12
48
  import React from 'react';
13
- import { mount } from 'enzyme';
14
- import { act } from 'react-dom/test-utils';
49
+ import { render, screen } from '@testing-library/react';
50
+ import userEvent from '@testing-library/user-event';
15
51
  import * as useHistoryTreeHook from '../hooks/useHistoryTree';
16
- import { ContributorsPanel } from '../ContributorsPanel';
17
- import { HistoryTree } from '../HistoryTree';
18
52
  import HistoryView from './HistoryView';
19
- jest.mock('../HistoryTree', function () { return ({
20
- HistoryTree: function () { return null; }
21
- }); });
22
- jest.mock('../ContributorsPanel', function () { return ({
23
- ContributorsPanel: function () { return null; }
24
- }); });
25
53
  describe('HistoryView tests', function () {
26
54
  var historyWithTotal = {
27
55
  total: 2,
@@ -38,7 +66,7 @@ describe('HistoryView tests', function () {
38
66
  }
39
67
  ]
40
68
  };
41
- var props = {
69
+ var defaultProps = {
42
70
  isLoading: false,
43
71
  canLoadMore: false,
44
72
  onLoadMore: jest.fn(),
@@ -60,38 +88,44 @@ describe('HistoryView tests', function () {
60
88
  var useHistoryTreeMock = jest
61
89
  .spyOn(useHistoryTreeHook, 'useHistoryTree')
62
90
  .mockReturnValue({ historyData: historyData, findPreviousChange: findPreviousChange });
63
- it('should render correct default state', function () {
64
- var wrapper = mount(React.createElement(HistoryView, __assign({}, props)));
65
- expect(useHistoryTreeMock).toHaveBeenCalledWith({
66
- entityUri: props.entityUri,
67
- historyChanges: props.historyWithTotal.changes,
68
- selectedUris: props.contributorsUris
69
- });
70
- expect(wrapper.find(ContributorsPanel).length).toBe(1);
71
- expect(wrapper.find(ContributorsPanel).props()).toMatchObject({
72
- values: props.contributorsUris,
73
- selectedValues: props.contributorsUris,
74
- entityUri: props.entityUri
75
- });
76
- expect(wrapper.find(HistoryTree).length).toBe(1);
77
- expect(wrapper.find(HistoryTree).props()).toMatchObject({
78
- historyData: historyData,
79
- isLoading: props.isLoading,
80
- onLoadMore: props.onLoadMore,
81
- canLoadMore: props.canLoadMore,
82
- entityUri: props.entityUri,
83
- historyEvent: props.historyEvent,
84
- findPreviousChange: findPreviousChange
91
+ var setUp = function (props) {
92
+ if (props === void 0) { props = defaultProps; }
93
+ var user = userEvent.setup();
94
+ return __assign(__assign({}, render(React.createElement(HistoryView, __assign({}, props)))), { user: user });
95
+ };
96
+ it('should render correct default state', function () { return __awaiter(void 0, void 0, void 0, function () {
97
+ var contributorItems;
98
+ return __generator(this, function (_a) {
99
+ setUp();
100
+ expect(useHistoryTreeMock).toHaveBeenCalledWith({
101
+ entityUri: defaultProps.entityUri,
102
+ historyChanges: defaultProps.historyWithTotal.changes,
103
+ selectedUris: defaultProps.contributorsUris
104
+ });
105
+ contributorItems = screen.getAllByTestId('reltio-contributor-item');
106
+ expect(contributorItems).toHaveLength(4);
107
+ expect(contributorItems[0]).toHaveAttribute('data-reltio-contributor', 'entities/uri0000');
108
+ expect(contributorItems[1]).toHaveAttribute('data-reltio-contributor', 'entities/uri1111');
109
+ expect(contributorItems[2]).toHaveAttribute('data-reltio-contributor', 'entities/uri2222');
110
+ expect(contributorItems[3]).toHaveAttribute('data-reltio-contributor', 'entities/uri3333');
111
+ expect(screen.getByTestId('history-tree')).toBeInTheDocument();
112
+ expect(screen.getByTestId('reltio-history-graph')).toBeInTheDocument();
113
+ return [2 /*return*/];
85
114
  });
86
- });
87
- it('should render ContributorsPanel with new selectedValues when call ContributorsPanel onSelectValues prop', function () {
88
- var wrapper = mount(React.createElement(HistoryView, __assign({}, props)));
89
- expect(wrapper.find(ContributorsPanel).prop('selectedValues').sort()).toEqual(props.contributorsUris.sort());
90
- var newSelectedValues = ['entities/uri2222', 'entities/uri3333'];
91
- act(function () {
92
- wrapper.find(ContributorsPanel).prop('onSelectValues')(newSelectedValues);
115
+ }); });
116
+ it('should render ContributorsPanel with new selectedValues when call ContributorsPanel onSelectValues prop', function () { return __awaiter(void 0, void 0, void 0, function () {
117
+ var user, contributorItems;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0:
121
+ user = setUp().user;
122
+ contributorItems = screen.getAllByTestId('reltio-contributor-item');
123
+ return [4 /*yield*/, user.click(contributorItems[2])];
124
+ case 1:
125
+ _a.sent();
126
+ expect(contributorItems[2]).toHaveClass('inactive');
127
+ return [2 /*return*/];
128
+ }
93
129
  });
94
- wrapper.update();
95
- expect(wrapper.find(ContributorsPanel).prop('selectedValues').sort()).toEqual(newSelectedValues.sort());
96
- });
130
+ }); });
97
131
  });
@@ -9,14 +9,53 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["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
+ };
12
48
  import React from 'react';
13
- import { mount } from 'enzyme';
14
- import { act } from 'react-dom/test-utils';
15
- import Button from '@mui/material/Button';
49
+ import { render, screen } from '@testing-library/react';
50
+ import userEvent from '@testing-library/user-event';
16
51
  import { AddWorkflowButton } from './AddWorkflowButton';
17
- import { AddWorkflowDialog } from '../AddWorkflowDialog';
18
52
  import { MdmModuleProvider } from '../../../contexts/MdmModuleContext';
19
- jest.mock('../AddWorkflowDialog', function () { return ({ AddWorkflowDialog: function () { return null; } }); });
53
+ jest.mock('../hooks/useWorkflowDefinitions', function () { return ({
54
+ useWorkflowDefinitions: jest.fn().mockReturnValue({ definitions: [] })
55
+ }); });
56
+ jest.mock('../hooks/useWorkflowProcessInstance', function () { return ({
57
+ useWorkflowProcessInstance: jest.fn().mockReturnValue({})
58
+ }); });
20
59
  var defaultPermissions = {
21
60
  'workflow:config.definition': {
22
61
  READ: ['alenat']
@@ -38,8 +77,12 @@ var defaultMdmValues = {
38
77
  };
39
78
  var setUp = function (mdmValues) {
40
79
  if (mdmValues === void 0) { mdmValues = defaultMdmValues; }
41
- return mount(React.createElement(MdmModuleProvider, { values: mdmValues },
42
- React.createElement(AddWorkflowButton, null)));
80
+ var user = userEvent.setup();
81
+ var Providers = function (_a) {
82
+ var children = _a.children;
83
+ return (React.createElement(MdmModuleProvider, { values: mdmValues }, children));
84
+ };
85
+ return __assign(__assign({}, render(React.createElement(AddWorkflowButton, null), { wrapper: Providers })), { user: user });
43
86
  };
44
87
  describe('AddWorkflowButton tests', function () {
45
88
  it('should not render button if "workflow:data.process" permission is missing', function () {
@@ -49,8 +92,8 @@ describe('AddWorkflowButton tests', function () {
49
92
  }
50
93
  } }) });
51
94
  var mdmValues = __assign(__assign({}, defaultMdmValues), { user: user });
52
- var component = setUp(mdmValues);
53
- expect(component.isEmptyRender()).toBeTruthy();
95
+ setUp(mdmValues);
96
+ expect(screen.queryByText('Add')).not.toBeInTheDocument();
54
97
  });
55
98
  it('should not render button if "workflow:config.definition" permission is missing', function () {
56
99
  var user = __assign(__assign({}, defaultUser), { userPermissions: __assign(__assign({}, defaultUser.userPermissions), { permissions: {
@@ -59,36 +102,42 @@ describe('AddWorkflowButton tests', function () {
59
102
  }
60
103
  } }) });
61
104
  var mdmValues = __assign(__assign({}, defaultMdmValues), { user: user });
62
- var component = setUp(mdmValues);
63
- expect(component.isEmptyRender()).toBeTruthy();
105
+ setUp(mdmValues);
106
+ expect(screen.queryByText('Add')).not.toBeInTheDocument();
64
107
  });
65
108
  it('should render main parts correctly if all permissions exists', function () {
66
- var component = setUp();
67
- expect(component.find(Button)).toHaveLength(1);
68
- expect(component.find(AddWorkflowDialog)).toHaveLength(1);
109
+ setUp();
110
+ expect(screen.getByText('Add')).toBeInTheDocument();
69
111
  });
70
- it('handleOpen handler should work correctly', function () {
71
- var component = setUp();
72
- expect(component.find(AddWorkflowDialog).prop('anchorEl')).toBe(null);
73
- act(function () {
74
- var onClick = component.find('.button').at(0).prop('onClick');
75
- if (onClick) {
76
- onClick({ currentTarget: 'currentTarget' });
112
+ it('handleOpen handler should work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
113
+ var user;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0:
117
+ user = setUp().user;
118
+ return [4 /*yield*/, user.click(screen.getByText('Add'))];
119
+ case 1:
120
+ _a.sent();
121
+ expect(screen.getByText('Add new workflow')).toBeInTheDocument();
122
+ return [2 /*return*/];
77
123
  }
78
124
  });
79
- component.update();
80
- expect(component.find(AddWorkflowDialog).prop('anchorEl')).toBe('currentTarget');
81
- });
82
- it('handleClose handler should work correctly', function () {
83
- var component = setUp();
84
- act(function () {
85
- var onClick = component.find('.button').at(0).prop('onClick');
86
- if (onClick) {
87
- onClick({ currentTarget: 'currentTarget' });
125
+ }); });
126
+ it('handleClose handler should work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
127
+ var user;
128
+ return __generator(this, function (_a) {
129
+ switch (_a.label) {
130
+ case 0:
131
+ user = setUp().user;
132
+ return [4 /*yield*/, user.click(screen.getByText('Add'))];
133
+ case 1:
134
+ _a.sent();
135
+ return [4 /*yield*/, user.click(screen.getByText('Cancel'))];
136
+ case 2:
137
+ _a.sent();
138
+ expect(screen.queryByText('Add new workflow')).not.toBeInTheDocument();
139
+ return [2 /*return*/];
88
140
  }
89
- component.find(AddWorkflowDialog).prop('onClose')();
90
141
  });
91
- component.update();
92
- expect(component.find(AddWorkflowDialog).prop('anchorEl')).toBe(null);
93
- });
142
+ }); });
94
143
  });
@@ -26,7 +26,7 @@ export var AttributesChanges = function (_a) {
26
26
  var entityUri = ifElse(any(isCreateEntityOperation), always(getEntityUriForChangeRequest(dcrUri, entityInfo.uri)), always(getEntityUriForLink(entityInfo)))(propOr([], entityInfo.uri, changes));
27
27
  var screen = ifElse(any(isCreateEntityOperation), always('dcrReview'), always('profile'))(propOr([], entityInfo.uri, changes));
28
28
  return (React.createElement(AttributesChangesContext.Provider, { value: objectsInfo },
29
- React.createElement("div", { className: styles.container },
29
+ React.createElement("div", { className: styles.container, "data-reltio-id": "changes-container" },
30
30
  React.createElement(EntityUriLink, { className: styles.uri, value: entityUri, screen: screen },
31
31
  React.createElement("div", { className: styles.label }, getLabel(entityInfo.label))),
32
32
  React.createElement(DCRChangesList, { changes: itemsToShow }),
@@ -16,7 +16,7 @@ export var ChangeView = function (_a) {
16
16
  !isNil(value) && (React.createElement("span", { className: styles.difference },
17
17
  value,
18
18
  newValue && oldValue && (React.createElement(React.Fragment, null,
19
- React.createElement(ArrowRightAltIcon, { className: styles.arrow }),
19
+ React.createElement(ArrowRightAltIcon, { "data-reltio-id": "arrow-right", className: styles.arrow }),
20
20
  newValue)))),
21
21
  operation && (React.createElement(Chip, { variant: "outlined", label: getOperationLabel(operation), className: classnames(styles.chip, operation) }))));
22
22
  };
@@ -1,33 +1,90 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["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
+ };
1
48
  import React from 'react';
2
- import { shallow } from 'enzyme';
3
- import { act } from 'react-dom/test-utils';
4
- import Link from '@mui/material/Link';
49
+ import { render, screen } from '@testing-library/react';
50
+ import userEvent from '@testing-library/user-event';
5
51
  import { ShowMoreLink } from './ShowMoreLink';
6
52
  describe('ShowMoreLink tests', function () {
53
+ afterEach(function () {
54
+ jest.clearAllMocks();
55
+ });
56
+ var onClick = jest.fn();
57
+ var defaultProps = {
58
+ onClick: onClick,
59
+ suggestionsCount: 10,
60
+ isExpanded: false
61
+ };
62
+ var setUp = function (props) {
63
+ if (props === void 0) { props = defaultProps; }
64
+ var user = userEvent.setup();
65
+ return __assign(__assign({}, render(React.createElement(ShowMoreLink, __assign({}, props)))), { user: user });
66
+ };
7
67
  it('should render main parts in collapsed mode', function () {
8
- var onClick = jest.fn();
9
- var count = 10;
10
- var isExpanded = false;
11
- var component = shallow(React.createElement(ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
12
- expect(component.find(Link)).toHaveLength(1);
13
- expect(component.find('.linkLabel').text()).toBe("View ".concat(count, " more suggestions"));
68
+ setUp();
69
+ expect(screen.getByText("View ".concat(defaultProps.suggestionsCount, " more suggestions"))).toBeInTheDocument();
14
70
  });
15
71
  it('should render main parts in expanded mode', function () {
16
- var onClick = jest.fn();
17
- var count = 10;
18
- var isExpanded = true;
19
- var component = shallow(React.createElement(ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
20
- expect(component.find(Link)).toHaveLength(1);
21
- expect(component.find('.linkLabel').text()).toBe('View less suggestions');
72
+ setUp(__assign(__assign({}, defaultProps), { isExpanded: true }));
73
+ expect(screen.queryByText("View ".concat(defaultProps.suggestionsCount, " more suggestions"))).not.toBeInTheDocument();
74
+ expect(screen.getByText('View less suggestions')).toBeInTheDocument();
22
75
  });
23
- it('should call onClick after click', function () {
24
- var onClick = jest.fn();
25
- var count = 10;
26
- var isExpanded = true;
27
- var component = shallow(React.createElement(ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
28
- act(function () {
29
- component.find(Link).simulate('click');
76
+ it('should call onClick after click', function () { return __awaiter(void 0, void 0, void 0, function () {
77
+ var user;
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
80
+ case 0:
81
+ user = setUp(__assign(__assign({}, defaultProps), { isExpanded: true })).user;
82
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
83
+ case 1:
84
+ _a.sent();
85
+ expect(onClick).toHaveBeenCalled();
86
+ return [2 /*return*/];
87
+ }
30
88
  });
31
- expect(onClick).toHaveBeenCalled();
32
- });
89
+ }); });
33
90
  });