@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.
- package/cjs/features/crosswalks/CrosswalkRow/DndCrosswalkRow.test.js +0 -1
- package/cjs/features/graph/SigmaGraphContainer/SigmaGraphContainer.test.js +5 -14
- package/cjs/features/graph/SigmaGraphResizer/SigmaGraphResizer.test.js +11 -9
- package/cjs/features/graph/ZoomSlider/ZoomSlider.js +2 -2
- package/cjs/features/graph/ZoomSlider/ZoomSlider.test.js +85 -37
- package/cjs/features/history/DateRangeSelector/DateRangeSelector.specs.js +188 -117
- package/cjs/features/history/HistoryFilterButton/HistoryFilterButton.js +1 -1
- package/cjs/features/history/HistoryGraph/components/HistoryCircle/HistoryCircle.specs.js +38 -41
- package/cjs/features/history/HistoryGraph/components/HistoryLink/HistoryLink.specs.js +17 -16
- package/cjs/features/history/HistoryHeader/HistoryHeader.spec.js +21 -31
- package/cjs/features/history/HistoryPanelEmptyState/HistoryPanelEmptyState.specs.js +4 -9
- package/cjs/features/history/HistoryRow/HistoryRow.js +1 -1
- package/cjs/features/history/HistoryRow/HistoryRow.specs.js +74 -34
- package/cjs/features/history/HistoryTree/HistoryTree.js +1 -1
- package/cjs/features/history/HistoryView/HistoryView.specs.js +77 -43
- package/cjs/features/workflow/AddWorkflowButton/AddWorkflowButton.spec.js +83 -34
- package/cjs/features/workflow/AttributesChanges/AttributesChanges.js +1 -1
- package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.js +1 -1
- package/cjs/features/workflow/AttributesChanges/components/ShowMoreLink/ShowMoreLink.spec.js +81 -24
- package/cjs/features/workflow/DueDateField/DueDateField.spec.js +51 -102
- package/cjs/features/workflow/PrioritySelector/PrioritySelector.spec.js +62 -133
- package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +438 -124
- package/cjs/features/workflow/hooks/useChangeRequest.specs.js +17 -27
- package/cjs/features/workflow/hooks/useWorkflowColor.specs.js +23 -47
- package/features/crosswalks/CrosswalkRow/DndCrosswalkRow.test.js +0 -1
- package/features/graph/SigmaGraphContainer/SigmaGraphContainer.test.js +5 -14
- package/features/graph/SigmaGraphResizer/SigmaGraphResizer.test.js +11 -9
- package/features/graph/ZoomSlider/ZoomSlider.js +2 -2
- package/features/graph/ZoomSlider/ZoomSlider.test.js +85 -37
- package/features/history/DateRangeSelector/DateRangeSelector.specs.js +188 -117
- package/features/history/HistoryFilterButton/HistoryFilterButton.js +1 -1
- package/features/history/HistoryGraph/components/HistoryCircle/HistoryCircle.specs.js +38 -41
- package/features/history/HistoryGraph/components/HistoryLink/HistoryLink.specs.js +17 -16
- package/features/history/HistoryHeader/HistoryHeader.spec.js +21 -31
- package/features/history/HistoryPanelEmptyState/HistoryPanelEmptyState.specs.js +4 -9
- package/features/history/HistoryRow/HistoryRow.js +1 -1
- package/features/history/HistoryRow/HistoryRow.specs.js +74 -34
- package/features/history/HistoryTree/HistoryTree.js +1 -1
- package/features/history/HistoryView/HistoryView.specs.js +77 -43
- package/features/workflow/AddWorkflowButton/AddWorkflowButton.spec.js +83 -34
- package/features/workflow/AttributesChanges/AttributesChanges.js +1 -1
- package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.js +1 -1
- package/features/workflow/AttributesChanges/components/ShowMoreLink/ShowMoreLink.spec.js +81 -24
- package/features/workflow/DueDateField/DueDateField.spec.js +51 -102
- package/features/workflow/PrioritySelector/PrioritySelector.spec.js +62 -133
- package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +439 -125
- package/features/workflow/hooks/useChangeRequest.specs.js +17 -24
- package/features/workflow/hooks/useWorkflowColor.specs.js +23 -44
- package/package.json +1 -1
- package/cjs/features/workflow/AttributesChanges/AttributesChanges.spec.d.ts +0 -1
- package/cjs/features/workflow/AttributesChanges/AttributesChanges.spec.js +0 -249
- package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.d.ts +0 -1
- package/cjs/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.js +0 -44
- package/cjs/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.d.ts +0 -1
- package/cjs/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.js +0 -38
- package/cjs/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.d.ts +0 -1
- package/cjs/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.js +0 -218
- package/features/workflow/AttributesChanges/AttributesChanges.spec.d.ts +0 -1
- package/features/workflow/AttributesChanges/AttributesChanges.spec.js +0 -244
- package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.d.ts +0 -1
- package/features/workflow/AttributesChanges/components/ChangeView/ChangeView.spec.js +0 -39
- package/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.d.ts +0 -1
- package/features/workflow/AttributesChanges/components/DCRChangesList/DCRChangesList.spec.js +0 -33
- package/features/workflow/AttributesChanges/components/DiffRenderer/DiffRenderer.spec.d.ts +0 -1
- 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
|
|
19
|
-
var
|
|
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('../
|
|
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
|
-
|
|
47
|
-
|
|
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
|
-
|
|
58
|
-
expect(
|
|
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
|
-
|
|
68
|
-
expect(
|
|
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
|
-
|
|
72
|
-
expect(
|
|
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
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
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
|
};
|
package/cjs/features/workflow/AttributesChanges/components/ShowMoreLink/ShowMoreLink.spec.js
CHANGED
|
@@ -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
|
|
8
|
-
var
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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
|
|
55
|
-
var
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
109
|
-
expect(
|
|
110
|
-
expect(
|
|
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
|
-
|
|
124
|
-
expect(
|
|
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
|
-
|
|
132
|
-
expect(
|
|
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
|
|
129
|
+
var user, newDate, newDueDate;
|
|
139
130
|
return __generator(this, function (_a) {
|
|
140
131
|
switch (_a.label) {
|
|
141
132
|
case 0:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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:
|
|
144
|
+
dueDate: newDueDate
|
|
160
145
|
});
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
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.
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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:
|
|
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
|
}
|