@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
@@ -10,18 +10,57 @@ 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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["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
- var test_utils_1 = require("react-dom/test-utils");
20
- var Button_1 = __importDefault(require("@mui/material/Button"));
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
21
56
  var AddWorkflowButton_1 = require("./AddWorkflowButton");
22
- var AddWorkflowDialog_1 = require("../AddWorkflowDialog");
23
57
  var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
24
- jest.mock('../AddWorkflowDialog', function () { return ({ AddWorkflowDialog: function () { return null; } }); });
58
+ jest.mock('../hooks/useWorkflowDefinitions', function () { return ({
59
+ useWorkflowDefinitions: jest.fn().mockReturnValue({ definitions: [] })
60
+ }); });
61
+ jest.mock('../hooks/useWorkflowProcessInstance', function () { return ({
62
+ useWorkflowProcessInstance: jest.fn().mockReturnValue({})
63
+ }); });
25
64
  var defaultPermissions = {
26
65
  'workflow:config.definition': {
27
66
  READ: ['alenat']
@@ -43,8 +82,12 @@ var defaultMdmValues = {
43
82
  };
44
83
  var setUp = function (mdmValues) {
45
84
  if (mdmValues === void 0) { mdmValues = defaultMdmValues; }
46
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
47
- react_1.default.createElement(AddWorkflowButton_1.AddWorkflowButton, null)));
85
+ var user = user_event_1.default.setup();
86
+ var Providers = function (_a) {
87
+ var children = _a.children;
88
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues }, children));
89
+ };
90
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(AddWorkflowButton_1.AddWorkflowButton, null), { wrapper: Providers })), { user: user });
48
91
  };
49
92
  describe('AddWorkflowButton tests', function () {
50
93
  it('should not render button if "workflow:data.process" permission is missing', function () {
@@ -54,8 +97,8 @@ describe('AddWorkflowButton tests', function () {
54
97
  }
55
98
  } }) });
56
99
  var mdmValues = __assign(__assign({}, defaultMdmValues), { user: user });
57
- var component = setUp(mdmValues);
58
- expect(component.isEmptyRender()).toBeTruthy();
100
+ setUp(mdmValues);
101
+ expect(react_2.screen.queryByText('Add')).not.toBeInTheDocument();
59
102
  });
60
103
  it('should not render button if "workflow:config.definition" permission is missing', function () {
61
104
  var user = __assign(__assign({}, defaultUser), { userPermissions: __assign(__assign({}, defaultUser.userPermissions), { permissions: {
@@ -64,36 +107,42 @@ describe('AddWorkflowButton tests', function () {
64
107
  }
65
108
  } }) });
66
109
  var mdmValues = __assign(__assign({}, defaultMdmValues), { user: user });
67
- var component = setUp(mdmValues);
68
- expect(component.isEmptyRender()).toBeTruthy();
110
+ setUp(mdmValues);
111
+ expect(react_2.screen.queryByText('Add')).not.toBeInTheDocument();
69
112
  });
70
113
  it('should render main parts correctly if all permissions exists', function () {
71
- var component = setUp();
72
- expect(component.find(Button_1.default)).toHaveLength(1);
73
- expect(component.find(AddWorkflowDialog_1.AddWorkflowDialog)).toHaveLength(1);
114
+ setUp();
115
+ expect(react_2.screen.getByText('Add')).toBeInTheDocument();
74
116
  });
75
- it('handleOpen handler should work correctly', function () {
76
- var component = setUp();
77
- expect(component.find(AddWorkflowDialog_1.AddWorkflowDialog).prop('anchorEl')).toBe(null);
78
- (0, test_utils_1.act)(function () {
79
- var onClick = component.find('.button').at(0).prop('onClick');
80
- if (onClick) {
81
- onClick({ currentTarget: 'currentTarget' });
117
+ it('handleOpen handler should work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
118
+ var user;
119
+ return __generator(this, function (_a) {
120
+ switch (_a.label) {
121
+ case 0:
122
+ user = setUp().user;
123
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Add'))];
124
+ case 1:
125
+ _a.sent();
126
+ expect(react_2.screen.getByText('Add new workflow')).toBeInTheDocument();
127
+ return [2 /*return*/];
82
128
  }
83
129
  });
84
- component.update();
85
- expect(component.find(AddWorkflowDialog_1.AddWorkflowDialog).prop('anchorEl')).toBe('currentTarget');
86
- });
87
- it('handleClose handler should work correctly', function () {
88
- var component = setUp();
89
- (0, test_utils_1.act)(function () {
90
- var onClick = component.find('.button').at(0).prop('onClick');
91
- if (onClick) {
92
- onClick({ currentTarget: 'currentTarget' });
130
+ }); });
131
+ it('handleClose handler should work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
132
+ var user;
133
+ return __generator(this, function (_a) {
134
+ switch (_a.label) {
135
+ case 0:
136
+ user = setUp().user;
137
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Add'))];
138
+ case 1:
139
+ _a.sent();
140
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Cancel'))];
141
+ case 2:
142
+ _a.sent();
143
+ expect(react_2.screen.queryByText('Add new workflow')).not.toBeInTheDocument();
144
+ return [2 /*return*/];
93
145
  }
94
- component.find(AddWorkflowDialog_1.AddWorkflowDialog).prop('onClose')();
95
146
  });
96
- component.update();
97
- expect(component.find(AddWorkflowDialog_1.AddWorkflowDialog).prop('anchorEl')).toBe(null);
98
- });
147
+ }); });
99
148
  });
@@ -55,7 +55,7 @@ var AttributesChanges = function (_a) {
55
55
  var entityUri = (0, ramda_1.ifElse)((0, ramda_1.any)(dcr_1.isCreateEntityOperation), (0, ramda_1.always)((0, dcr_1.getEntityUriForChangeRequest)(dcrUri, entityInfo.uri)), (0, ramda_1.always)((0, mdm_sdk_1.getEntityUriForLink)(entityInfo)))((0, ramda_1.propOr)([], entityInfo.uri, changes));
56
56
  var screen = (0, ramda_1.ifElse)((0, ramda_1.any)(dcr_1.isCreateEntityOperation), (0, ramda_1.always)('dcrReview'), (0, ramda_1.always)('profile'))((0, ramda_1.propOr)([], entityInfo.uri, changes));
57
57
  return (react_1.default.createElement(AttributesChangesContext_1.AttributesChangesContext.Provider, { value: objectsInfo },
58
- react_1.default.createElement("div", { className: styles.container },
58
+ react_1.default.createElement("div", { className: styles.container, "data-reltio-id": "changes-container" },
59
59
  react_1.default.createElement(EntityUriLink_1.EntityUriLink, { className: styles.uri, value: entityUri, screen: screen },
60
60
  react_1.default.createElement("div", { className: styles.label }, (0, mdm_sdk_1.getLabel)(entityInfo.label))),
61
61
  react_1.default.createElement(DCRChangesList_1.DCRChangesList, { changes: itemsToShow }),
@@ -22,7 +22,7 @@ var ChangeView = function (_a) {
22
22
  !(0, ramda_1.isNil)(value) && (react_1.default.createElement("span", { className: styles.difference },
23
23
  value,
24
24
  newValue && oldValue && (react_1.default.createElement(react_1.default.Fragment, null,
25
- react_1.default.createElement(ArrowRightAlt_1.default, { className: styles.arrow }),
25
+ react_1.default.createElement(ArrowRightAlt_1.default, { "data-reltio-id": "arrow-right", className: styles.arrow }),
26
26
  newValue)))),
27
27
  operation && (react_1.default.createElement(Chip_1.default, { variant: "outlined", label: (0, common_1.getOperationLabel)(operation), className: (0, classnames_1.default)(styles.chip, operation) }))));
28
28
  };
@@ -1,38 +1,95 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["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
+ };
2
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
51
  };
5
52
  Object.defineProperty(exports, "__esModule", { value: true });
6
53
  var react_1 = __importDefault(require("react"));
7
- var enzyme_1 = require("enzyme");
8
- var test_utils_1 = require("react-dom/test-utils");
9
- var Link_1 = __importDefault(require("@mui/material/Link"));
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
10
56
  var ShowMoreLink_1 = require("./ShowMoreLink");
11
57
  describe('ShowMoreLink tests', function () {
58
+ afterEach(function () {
59
+ jest.clearAllMocks();
60
+ });
61
+ var onClick = jest.fn();
62
+ var defaultProps = {
63
+ onClick: onClick,
64
+ suggestionsCount: 10,
65
+ isExpanded: false
66
+ };
67
+ var setUp = function (props) {
68
+ if (props === void 0) { props = defaultProps; }
69
+ var user = user_event_1.default.setup();
70
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(ShowMoreLink_1.ShowMoreLink, __assign({}, props)))), { user: user });
71
+ };
12
72
  it('should render main parts in collapsed mode', function () {
13
- var onClick = jest.fn();
14
- var count = 10;
15
- var isExpanded = false;
16
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ShowMoreLink_1.ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
17
- expect(component.find(Link_1.default)).toHaveLength(1);
18
- expect(component.find('.linkLabel').text()).toBe("View ".concat(count, " more suggestions"));
73
+ setUp();
74
+ expect(react_2.screen.getByText("View ".concat(defaultProps.suggestionsCount, " more suggestions"))).toBeInTheDocument();
19
75
  });
20
76
  it('should render main parts in expanded mode', function () {
21
- var onClick = jest.fn();
22
- var count = 10;
23
- var isExpanded = true;
24
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ShowMoreLink_1.ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
25
- expect(component.find(Link_1.default)).toHaveLength(1);
26
- expect(component.find('.linkLabel').text()).toBe('View less suggestions');
77
+ setUp(__assign(__assign({}, defaultProps), { isExpanded: true }));
78
+ expect(react_2.screen.queryByText("View ".concat(defaultProps.suggestionsCount, " more suggestions"))).not.toBeInTheDocument();
79
+ expect(react_2.screen.getByText('View less suggestions')).toBeInTheDocument();
27
80
  });
28
- it('should call onClick after click', function () {
29
- var onClick = jest.fn();
30
- var count = 10;
31
- var isExpanded = true;
32
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ShowMoreLink_1.ShowMoreLink, { onClick: onClick, suggestionsCount: count, isExpanded: isExpanded }));
33
- (0, test_utils_1.act)(function () {
34
- component.find(Link_1.default).simulate('click');
81
+ it('should call onClick after click', function () { return __awaiter(void 0, void 0, void 0, function () {
82
+ var user;
83
+ return __generator(this, function (_a) {
84
+ switch (_a.label) {
85
+ case 0:
86
+ user = setUp(__assign(__assign({}, defaultProps), { isExpanded: true })).user;
87
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button'))];
88
+ case 1:
89
+ _a.sent();
90
+ expect(onClick).toHaveBeenCalled();
91
+ return [2 /*return*/];
92
+ }
35
93
  });
36
- expect(onClick).toHaveBeenCalled();
37
- });
94
+ }); });
38
95
  });
@@ -51,10 +51,12 @@ 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 enzyme_1 = require("enzyme");
55
- var test_utils_1 = require("react-dom/test-utils");
54
+ var moment_1 = __importDefault(require("moment"));
55
+ var react_2 = require("@testing-library/react");
56
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
57
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
57
- var DateEditor_1 = require("../../../DateEditor");
58
+ var LocalizationProvider_1 = require("@mui/x-date-pickers/LocalizationProvider");
59
+ var AdapterMoment_1 = require("@mui/x-date-pickers/AdapterMoment");
58
60
  var WorkflowTasksContext_1 = require("../../../contexts/WorkflowTasksContext");
59
61
  var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
60
62
  var errors_1 = require("../helpers/errors");
@@ -63,9 +65,6 @@ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.re
63
65
  jest.mock('../helpers/errors', function () { return ({
64
66
  showWorkflowError: jest.fn()
65
67
  }); });
66
- jest.mock('../../../DateEditor', function () { return ({
67
- DateEditor: function () { return null; }
68
- }); });
69
68
  var updateTaskState = jest.fn();
70
69
  var workflowTaskContextValue = { updateTaskState: updateTaskState };
71
70
  var defaultUser = {
@@ -89,13 +88,15 @@ var defaultMdmValues = {
89
88
  workflowEnvironmentUrl: workflowEnvironmentUrl
90
89
  };
91
90
  var taskId = 'id1';
92
- var dueDate = 1642656471517;
91
+ var dueDate = (0, moment_1.default)('01/20/2022', 'MM/DD/YYYY').valueOf();
93
92
  var defaultProps = { taskId: taskId, dueDate: dueDate };
94
93
  var setUp = function (_a) {
95
94
  var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? defaultProps : _c, _d = _b.mdmValues, mdmValues = _d === void 0 ? defaultMdmValues : _d;
96
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
95
+ var user = user_event_1.default.setup();
96
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
97
97
  react_1.default.createElement(WorkflowTasksContext_1.WorkflowTasksContext.Provider, { value: workflowTaskContextValue },
98
- react_1.default.createElement(DueDateField_1.DueDateField, __assign({}, props)))));
98
+ react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment },
99
+ react_1.default.createElement(DueDateField_1.DueDateField, __assign({}, props))))))), { user: user });
99
100
  };
100
101
  describe('DueDateField tests', function () {
101
102
  beforeAll(function () {
@@ -105,13 +106,9 @@ describe('DueDateField tests', function () {
105
106
  jest.clearAllMocks();
106
107
  });
107
108
  it('should render DateEditor', function () {
108
- var component = setUp();
109
- expect(component.find(DateEditor_1.DateEditor).length).toBe(1);
110
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
111
- disabled: false,
112
- label: 'Due date',
113
- value: dueDate
114
- });
109
+ setUp();
110
+ expect(react_2.screen.getByText('Due date')).toBeInTheDocument();
111
+ expect(react_2.screen.getByDisplayValue((0, moment_1.default)(dueDate).format('MM/DD/YYYY'))).toBeInTheDocument();
115
112
  });
116
113
  it('should disable DateEditor if user has no permissions to update task', function () {
117
114
  var user = __assign(__assign({}, defaultUser), { userPermissions: __assign(__assign({}, defaultUser.userPermissions), { permissions: {
@@ -120,123 +117,75 @@ describe('DueDateField tests', function () {
120
117
  }
121
118
  } }) });
122
119
  var mdmValues = __assign(__assign({}, defaultMdmValues), { user: user });
123
- var component = setUp({ mdmValues: mdmValues });
124
- expect(component.find(DateEditor_1.DateEditor).length).toBe(1);
125
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
126
- disabled: true
127
- });
120
+ setUp({ mdmValues: mdmValues });
121
+ expect(react_2.screen.getByPlaceholderText('MM/DD/YYYY')).toBeDisabled();
128
122
  });
129
123
  it('should disable DateEditor if task is closed', function () {
130
124
  var props = __assign(__assign({}, defaultProps), { isTaskOpen: false });
131
- var component = setUp({ props: props });
132
- expect(component.find(DateEditor_1.DateEditor).length).toBe(1);
133
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
134
- disabled: true
135
- });
125
+ setUp({ props: props });
126
+ expect(react_2.screen.getByPlaceholderText('MM/DD/YYYY')).toBeDisabled();
136
127
  });
137
128
  it('should update task on API and UI side on onChange prop calling', function () { return __awaiter(void 0, void 0, void 0, function () {
138
- var component, newDate;
129
+ var user, newDate, newDueDate;
139
130
  return __generator(this, function (_a) {
140
131
  switch (_a.label) {
141
132
  case 0:
142
- component = setUp();
143
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
144
- disabled: false
145
- });
146
- newDate = new Date();
147
- (0, test_utils_1.act)(function () {
148
- component.find(DateEditor_1.DateEditor).prop('onChange')(newDate);
149
- });
150
- component.update();
151
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
152
- disabled: true
153
- });
133
+ user = setUp().user;
134
+ newDate = '01/20/2023';
135
+ newDueDate = new Date(newDate).getTime();
136
+ return [4 /*yield*/, user.type(react_2.screen.getByPlaceholderText('MM/DD/YYYY'), newDate)];
137
+ case 1:
138
+ _a.sent();
154
139
  expect(mdm_sdk_1.updateDueDateForTask).toHaveBeenCalledWith({
155
140
  workflowPath: workflowPath,
156
141
  environment: workflowEnvironmentUrl,
157
142
  tenant: tenant.id,
158
143
  taskId: taskId,
159
- dueDate: newDate.getTime()
144
+ dueDate: newDueDate
160
145
  });
161
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
162
- return __generator(this, function (_a) {
163
- switch (_a.label) {
164
- case 0: return [4 /*yield*/, Promise.resolve()];
165
- case 1:
166
- _a.sent();
167
- return [2 /*return*/];
168
- }
169
- });
170
- }); })];
146
+ expect(updateTaskState).toHaveBeenCalledWith(taskId, { dueDate: newDueDate });
147
+ return [2 /*return*/];
148
+ }
149
+ });
150
+ }); });
151
+ it('should do nothing in case of updating with previous value', function () { return __awaiter(void 0, void 0, void 0, function () {
152
+ var user;
153
+ return __generator(this, function (_a) {
154
+ switch (_a.label) {
155
+ case 0:
156
+ user = setUp().user;
157
+ return [4 /*yield*/, user.click(react_2.screen.getByPlaceholderText('MM/DD/YYYY'))];
171
158
  case 1:
172
159
  _a.sent();
173
- component.update();
174
- expect(updateTaskState).toHaveBeenCalledWith(taskId, { dueDate: newDate.getTime() });
175
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
176
- disabled: false
177
- });
160
+ return [4 /*yield*/, user.paste((0, moment_1.default)(dueDate).format('MM/DD/YYYY'))];
161
+ case 2:
162
+ _a.sent();
163
+ expect(mdm_sdk_1.updateDueDateForTask).not.toHaveBeenCalled();
164
+ expect(updateTaskState).not.toHaveBeenCalled();
178
165
  return [2 /*return*/];
179
166
  }
180
167
  });
181
168
  }); });
182
- it('should do nothing in case of updating with previous value', function () {
183
- var component = setUp();
184
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
185
- disabled: false
186
- });
187
- var newDate = new Date(dueDate);
188
- (0, test_utils_1.act)(function () {
189
- component.find(DateEditor_1.DateEditor).prop('onChange')(newDate);
190
- });
191
- component.update();
192
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
193
- disabled: false
194
- });
195
- expect(mdm_sdk_1.updateDueDateForTask).not.toHaveBeenCalled();
196
- expect(updateTaskState).not.toHaveBeenCalled();
197
- });
198
169
  it('should show error if update request was unsuccessful', function () { return __awaiter(void 0, void 0, void 0, function () {
199
- var component, newDate;
170
+ var user, newDate, newDueDate;
200
171
  return __generator(this, function (_a) {
201
172
  switch (_a.label) {
202
173
  case 0:
203
- mdm_sdk_1.updateDueDateForTask.mockReturnValue(Promise.reject('error!'));
204
- component = setUp();
205
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
206
- disabled: false
207
- });
208
- newDate = new Date();
209
- (0, test_utils_1.act)(function () {
210
- component.find(DateEditor_1.DateEditor).prop('onChange')(newDate);
211
- });
212
- component.update();
213
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
214
- disabled: true
215
- });
174
+ mdm_sdk_1.updateDueDateForTask.mockRejectedValue('error!');
175
+ user = setUp().user;
176
+ newDate = '01/20/2023';
177
+ newDueDate = new Date(newDate).getTime();
178
+ return [4 /*yield*/, user.type(react_2.screen.getByPlaceholderText('MM/DD/YYYY'), newDate)];
179
+ case 1:
180
+ _a.sent();
216
181
  expect(mdm_sdk_1.updateDueDateForTask).toHaveBeenCalledWith({
217
182
  workflowPath: workflowPath,
218
183
  environment: workflowEnvironmentUrl,
219
184
  tenant: tenant.id,
220
185
  taskId: taskId,
221
- dueDate: newDate.getTime()
186
+ dueDate: newDueDate
222
187
  });
223
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
224
- return __generator(this, function (_a) {
225
- switch (_a.label) {
226
- case 0: return [4 /*yield*/, Promise.resolve()];
227
- case 1:
228
- _a.sent();
229
- return [2 /*return*/];
230
- }
231
- });
232
- }); })];
233
- case 1:
234
- _a.sent();
235
- component.update();
236
188
  expect(updateTaskState).not.toHaveBeenCalled();
237
- expect(component.find(DateEditor_1.DateEditor).props()).toMatchObject({
238
- disabled: false
239
- });
240
189
  expect(errors_1.showWorkflowError).toHaveBeenCalledWith('error!');
241
190
  return [2 /*return*/];
242
191
  }