@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
@@ -118,7 +118,6 @@ describe('CrosswalkRow dnd tests', function () {
118
118
  return __generator(this, function (_a) {
119
119
  onDragStart = jest.fn();
120
120
  setUp(defaultProps, { onDragStart: onDragStart });
121
- react_2.screen.debug(react_2.screen.getByText('Reltio'));
122
121
  react_2.fireEvent.mouseDown(react_2.screen.getByText('Reltio'));
123
122
  expect(onDragStart.mock.calls[0][0].active.data.current.crosswalk).toBe(defaultProps.crosswalk);
124
123
  return [2 /*return*/];
@@ -4,23 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var react_1 = __importDefault(require("react"));
7
- var enzyme_1 = require("enzyme");
8
- var core_1 = require("@react-sigma/core");
9
- var graphology_1 = require("graphology");
7
+ var react_2 = require("@testing-library/react");
10
8
  var SigmaGraphContainer_1 = require("./SigmaGraphContainer");
11
- var SigmaCustomRenderersContainer_1 = require("../SigmaCustomRenderersContainer");
12
9
  var children = react_1.default.createElement("div", { className: "children" }, "children");
13
- var setUp = function () { return (0, enzyme_1.shallow)(react_1.default.createElement(SigmaGraphContainer_1.SigmaGraphContainer, null, children)); };
10
+ var setUp = function () { return (0, react_2.render)(react_1.default.createElement(SigmaGraphContainer_1.SigmaGraphContainer, null, children)); };
14
11
  describe('SigmaGraphContainer behavior', function () {
15
12
  it('should render SigmaContainer with passed children', function () {
16
- var component = setUp();
17
- expect(component.find(core_1.SigmaContainer)).toHaveLength(1);
18
- expect(component.find(core_1.SigmaContainer).prop('graph')).toBe(graphology_1.MultiGraph);
19
- expect(component.find(core_1.SigmaContainer).find(SigmaCustomRenderersContainer_1.SigmaCustomRenderersContainer).find('.children')).toHaveLength(1);
20
- });
21
- it('should render SigmaContainer with initialSettings', function () {
22
- var component = setUp();
23
- expect(component.find(core_1.SigmaContainer)).toHaveLength(1);
24
- expect(component.find(core_1.SigmaContainer).prop('settings')).not.toBeUndefined();
13
+ var container = setUp().container;
14
+ expect(container.querySelector('.sigma-container')).toBeInTheDocument();
15
+ expect(react_2.screen.getByText('children')).toBeInTheDocument();
25
16
  });
26
17
  });
@@ -15,23 +15,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  var react_1 = __importDefault(require("react"));
18
- var enzyme_1 = require("enzyme");
19
- var react_resize_detector_1 = __importDefault(require("react-resize-detector"));
18
+ var react_2 = require("@testing-library/react");
19
+ var jsdom_testing_mocks_1 = require("jsdom-testing-mocks");
20
20
  var core_1 = require("@react-sigma/core");
21
21
  var SigmaGraphResizer_1 = require("./SigmaGraphResizer");
22
22
  jest.mock('@react-sigma/core', function () { return (__assign(__assign({}, jest.requireActual('@react-sigma/core')), { useSigma: jest.fn().mockReturnValue({
23
23
  refresh: jest.fn()
24
24
  }) })); });
25
- var setUp = function () { return (0, enzyme_1.shallow)(react_1.default.createElement(SigmaGraphResizer_1.SigmaGraphResizer, null)); };
25
+ var setUp = function () { return (0, react_2.render)(react_1.default.createElement(SigmaGraphResizer_1.SigmaGraphResizer, null)); };
26
+ var resizeObserver = (0, jsdom_testing_mocks_1.mockResizeObserver)();
26
27
  describe('SigmaGraphResizer behavior', function () {
27
- it('should render ReactResizeDetector', function () {
28
- var component = setUp();
29
- expect(component.find(react_resize_detector_1.default)).toHaveLength(1);
30
- });
31
28
  it('should refresh sigma instance on resize', function () {
32
- var component = setUp();
29
+ var container = setUp().container;
33
30
  expect((0, core_1.useSigma)().refresh).not.toHaveBeenCalled();
34
- component.find(react_resize_detector_1.default).prop('onResize')();
31
+ resizeObserver.mockElementSize(container, {
32
+ contentBoxSize: { inlineSize: 100, blockSize: 100 }
33
+ });
34
+ (0, react_2.act)(function () {
35
+ resizeObserver.resize();
36
+ });
35
37
  expect((0, core_1.useSigma)().refresh).toHaveBeenCalled();
36
38
  });
37
39
  });
@@ -98,7 +98,7 @@ var ZoomSlider = function (_a) {
98
98
  return camera.setState({ ratio: camera.getBoundedRatio(percentsToRatio(newValue)) });
99
99
  };
100
100
  return (react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.container, className) },
101
- react_1.default.createElement(IconButton_1.default, { className: styles.minButton, onClick: function () { return zoomOut(); }, size: "large" },
101
+ react_1.default.createElement(IconButton_1.default, { "data-reltio-id": "zoom-out-button", className: styles.minButton, onClick: function () { return zoomOut(); }, size: "large" },
102
102
  react_1.default.createElement(Remove_1.default, { className: styles.icon })),
103
103
  react_1.default.createElement(Slider_1.default, { slots: {
104
104
  thumb: ZoomSliderThumb
@@ -107,7 +107,7 @@ var ZoomSlider = function (_a) {
107
107
  className: styles.thumb
108
108
  }
109
109
  }, classes: { root: styles.sliderRoot, rail: styles.rail }, track: false, value: value, min: min, max: max, onChange: handleChange }),
110
- react_1.default.createElement(IconButton_1.default, { className: styles.maxButton, onClick: function () { return zoomIn(); }, size: "large" },
110
+ react_1.default.createElement(IconButton_1.default, { "data-reltio-id": "zoom-in-button", className: styles.maxButton, onClick: function () { return zoomIn(); }, size: "large" },
111
111
  react_1.default.createElement(Add_1.default, { className: styles.icon }))));
112
112
  };
113
113
  exports.ZoomSlider = ZoomSlider;
@@ -10,19 +10,51 @@ 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");
54
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
55
+ var react_2 = require("@testing-library/react");
20
56
  var core_1 = require("@react-sigma/core");
21
57
  var ZoomSlider_1 = require("./ZoomSlider");
22
- var IconButton_1 = __importDefault(require("@mui/material/IconButton"));
23
- var Add_1 = __importDefault(require("@mui/icons-material/Add"));
24
- var Remove_1 = __importDefault(require("@mui/icons-material/Remove"));
25
- var Slider_1 = __importDefault(require("@mui/material/Slider"));
26
58
  jest.mock('@react-sigma/core', function () { return (__assign(__assign({}, jest.requireActual('@react-sigma/core')), { useCamera: jest.fn().mockReturnValue({
27
59
  zoomOut: jest.fn(),
28
60
  zoomIn: jest.fn()
@@ -34,28 +66,30 @@ jest.mock('@react-sigma/core', function () { return (__assign(__assign({}, jest.
34
66
  }); }
35
67
  }), useSetSettings: jest.fn().mockReturnValue(jest.fn()), useRegisterEvents: jest.fn().mockReturnValue(jest.fn()) })); });
36
68
  describe('ZoomSlider tests', function () {
69
+ var defaultProps = { className: 'testClass', min: 30, max: 300 };
70
+ var setUp = function (props) {
71
+ if (props === void 0) { props = defaultProps; }
72
+ var user = user_event_1.default.setup();
73
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(ZoomSlider_1.ZoomSlider, __assign({}, props)))), { user: user });
74
+ };
37
75
  it('should render main parts', function () {
38
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ZoomSlider_1.ZoomSlider, { className: "testClass", min: 30, max: 300 }));
39
- expect(component.find(IconButton_1.default)).toHaveLength(2);
40
- expect(component.find(Add_1.default)).toHaveLength(1);
41
- expect(component.find(Remove_1.default)).toHaveLength(1);
42
- var slider = component.find(Slider_1.default);
43
- expect(slider).toHaveLength(1);
44
- expect(slider.props()).toEqual({
45
- slots: { thumb: expect.any(Function) },
46
- classes: { root: 'sliderRoot', rail: 'rail' },
47
- slotProps: { thumb: { className: 'thumb' } },
48
- track: false,
49
- value: 100,
50
- min: 30,
51
- max: 300,
52
- onChange: expect.any(Function)
53
- });
76
+ setUp();
77
+ expect(react_2.screen.getByTestId('zoom-out-button')).toBeInTheDocument();
78
+ expect(react_2.screen.getByTestId('zoom-in-button')).toBeInTheDocument();
79
+ var slider = react_2.screen.getByRole('slider');
80
+ expect(slider).toHaveAttribute('value', '100');
81
+ expect(slider).toHaveAttribute('max', '300');
82
+ expect(slider).toHaveAttribute('min', '30');
83
+ expect(slider).toHaveAttribute('step', '1');
54
84
  });
55
85
  it('should call registerEvents and setSettings', function () {
56
86
  var setSettings = (0, core_1.useSetSettings)();
57
87
  var registerEvents = (0, core_1.useRegisterEvents)();
58
- (0, enzyme_1.mount)(react_1.default.createElement(ZoomSlider_1.ZoomSlider, { className: "testClass", min: 50, max: 200 }));
88
+ var settingsProps = {
89
+ min: 50,
90
+ max: 200
91
+ };
92
+ setUp(__assign(__assign({}, defaultProps), settingsProps));
59
93
  expect(setSettings).toHaveBeenCalledWith({
60
94
  maxCameraRatio: 4,
61
95
  minCameraRatio: 0.25
@@ -64,20 +98,34 @@ describe('ZoomSlider tests', function () {
64
98
  updated: expect.any(Function)
65
99
  });
66
100
  });
67
- it('should call zoomOut on min button click', function () {
68
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ZoomSlider_1.ZoomSlider, { className: "testClass", min: 30, max: 300 }));
69
- var zoomOut = (0, core_1.useCamera)().zoomOut;
70
- (0, test_utils_1.act)(function () {
71
- component.find(IconButton_1.default).at(0).simulate('click');
101
+ it('should call zoomOut on min button click', function () { return __awaiter(void 0, void 0, void 0, function () {
102
+ var user, zoomOut;
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0:
106
+ user = setUp().user;
107
+ zoomOut = (0, core_1.useCamera)().zoomOut;
108
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('zoom-out-button'))];
109
+ case 1:
110
+ _a.sent();
111
+ expect(zoomOut).toHaveBeenCalled();
112
+ return [2 /*return*/];
113
+ }
72
114
  });
73
- expect(zoomOut).toHaveBeenCalled();
74
- });
75
- it('should call zoomIn on max button click', function () {
76
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(ZoomSlider_1.ZoomSlider, { className: "testClass", min: 30, max: 300 }));
77
- var zoomIn = (0, core_1.useCamera)().zoomIn;
78
- (0, test_utils_1.act)(function () {
79
- component.find(IconButton_1.default).at(1).simulate('click');
115
+ }); });
116
+ it('should call zoomIn on max button click', function () { return __awaiter(void 0, void 0, void 0, function () {
117
+ var user, zoomIn;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0:
121
+ user = setUp().user;
122
+ zoomIn = (0, core_1.useCamera)().zoomIn;
123
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('zoom-in-button'))];
124
+ case 1:
125
+ _a.sent();
126
+ expect(zoomIn).toHaveBeenCalled();
127
+ return [2 /*return*/];
128
+ }
80
129
  });
81
- expect(zoomIn).toHaveBeenCalled();
82
- });
130
+ }); });
83
131
  });
@@ -10,18 +10,52 @@ 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");
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
+ var LocalizationProvider_1 = require("@mui/x-date-pickers/LocalizationProvider");
57
+ var AdapterMoment_1 = require("@mui/x-date-pickers/AdapterMoment");
20
58
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
21
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
22
- var DateIntervalSelector_1 = require("../../../DateIntervalSelector");
23
- var CustomDateRangeEditor_1 = require("../../../CustomDateRangeEditor");
24
- var SimpleDropDownSelector_1 = require("../../../SimpleDropDownSelector");
25
59
  var DateRangeSelector_1 = require("./DateRangeSelector");
26
60
  describe('DateRangeSelector tests', function () {
27
61
  var withinValue = {
@@ -30,136 +64,173 @@ describe('DateRangeSelector tests', function () {
30
64
  };
31
65
  var agoValue = {
32
66
  type: mdm_sdk_1.DateRangeTypes.AGO,
33
- period: [4, 'month']
67
+ period: [4, 'months']
34
68
  };
35
69
  var betweenValue = {
36
70
  type: mdm_sdk_1.DateRangeTypes.BETWEEN,
37
- period: [new Date(123), new Date(456)]
71
+ period: [new Date('01/01/2023'), new Date('01/01/2024')]
38
72
  };
39
73
  var defaultProps = {
40
74
  onChange: jest.fn(),
41
- className: 'someclass'
75
+ className: 'someclass',
76
+ value: withinValue
77
+ };
78
+ var setUp = function (props) {
79
+ if (props === void 0) { props = defaultProps; }
80
+ var user = user_event_1.default.setup();
81
+ var Providers = function (_a) {
82
+ var children = _a.children;
83
+ return react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment }, children);
84
+ };
85
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, props)), { wrapper: Providers })), { user: user });
42
86
  };
43
- var options = [
44
- { value: mdm_sdk_1.DateRangeTypes.WITHIN, label: 'Within the last' },
45
- { value: mdm_sdk_1.DateRangeTypes.AGO, label: 'More than' },
46
- { value: mdm_sdk_1.DateRangeTypes.BETWEEN, label: 'Date range' }
47
- ];
48
- afterEach(function () {
49
- jest.clearAllMocks();
50
- });
51
87
  it('should render correct default state if props.value type is DateRangeTypes.WITHIN', function () {
52
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: withinValue })));
53
- expect(wrapper.find('.root').prop('className')).toContain(defaultProps.className);
54
- var title = wrapper.find(Typography_1.default).filterWhere(function (component) { return component.prop('className') === 'title'; });
55
- expect(title.text()).toBe('Date');
56
- expect(wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).props()).toMatchObject({
57
- value: {
58
- value: options[0].value,
59
- label: options[0].label
60
- },
61
- options: options
62
- });
63
- expect(wrapper.find(DateIntervalSelector_1.DateIntervalSelector).prop('interval')).toEqual(withinValue.period);
64
- expect(wrapper.find(CustomDateRangeEditor_1.CustomDateRangeEditor).length).toBe(0);
88
+ setUp();
89
+ expect(react_2.screen.getByText('Date')).toBeInTheDocument();
90
+ expect(react_2.screen.getByText('Within the last')).toBeInTheDocument();
91
+ expect(react_2.screen.getByText('Days')).toBeInTheDocument();
92
+ expect(react_2.screen.getByDisplayValue('5')).toBeInTheDocument();
65
93
  });
66
94
  it('should render correct default state if props.value type is DateRangeTypes.AGO', function () {
67
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: agoValue })));
68
- expect(wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('value')).toMatchObject({
69
- value: options[1].value,
70
- label: options[1].label
71
- });
72
- expect(wrapper.find(DateIntervalSelector_1.DateIntervalSelector).prop('interval')).toEqual(agoValue.period);
73
- expect(wrapper.find(CustomDateRangeEditor_1.CustomDateRangeEditor).length).toBe(0);
95
+ setUp(__assign(__assign({}, defaultProps), { value: agoValue }));
96
+ expect(react_2.screen.getByText('Date')).toBeInTheDocument();
97
+ expect(react_2.screen.getByText('More than')).toBeInTheDocument();
98
+ expect(react_2.screen.getByText('Months')).toBeInTheDocument();
99
+ expect(react_2.screen.getByDisplayValue('4')).toBeInTheDocument();
74
100
  });
75
101
  it('should render correct default state if props.value type is DateRangeTypes.BETWEEN', function () {
76
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: betweenValue })));
77
- expect(wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('value')).toMatchObject({
78
- value: options[2].value,
79
- label: options[2].label
80
- });
81
- expect(wrapper.find(CustomDateRangeEditor_1.CustomDateRangeEditor).prop('values')).toEqual(betweenValue.period);
82
- expect(wrapper.find(DateIntervalSelector_1.DateIntervalSelector).length).toBe(0);
102
+ setUp(__assign(__assign({}, defaultProps), { value: betweenValue }));
103
+ expect(react_2.screen.getByText('Date')).toBeInTheDocument();
104
+ expect(react_2.screen.getByText('Date range')).toBeInTheDocument();
105
+ expect(react_2.screen.getByDisplayValue('01/01/2023 — 01/01/2024')).toBeInTheDocument();
83
106
  });
84
107
  it('should render proper default value if props.value is null', function () {
85
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: null })));
86
- expect(wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('value')).toMatchObject({
87
- value: options[0].value,
88
- label: options[0].label
89
- });
90
- expect(wrapper.find(DateIntervalSelector_1.DateIntervalSelector).prop('interval')).toEqual([null, 'hours']);
91
- expect(wrapper.find(CustomDateRangeEditor_1.CustomDateRangeEditor).length).toBe(0);
108
+ setUp(__assign(__assign({}, defaultProps), { value: null }));
109
+ expect(react_2.screen.getByText('Date')).toBeInTheDocument();
110
+ expect(react_2.screen.getByText('Within the last')).toBeInTheDocument();
111
+ expect(react_2.screen.getByText('Hours')).toBeInTheDocument();
92
112
  });
93
- it('should call props.onChange with proper parameters when type is changed to ago', function () {
94
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: null })));
95
- (0, test_utils_1.act)(function () {
96
- wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('onChange')({ value: mdm_sdk_1.DateRangeTypes.AGO });
113
+ it('should call props.onChange with proper parameters when type is changed to ago', function () { return __awaiter(void 0, void 0, void 0, function () {
114
+ var user, newValue;
115
+ return __generator(this, function (_a) {
116
+ switch (_a.label) {
117
+ case 0:
118
+ user = setUp().user;
119
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Within the last'))];
120
+ case 1:
121
+ _a.sent();
122
+ return [4 /*yield*/, user.click(react_2.screen.getByText('More than'))];
123
+ case 2:
124
+ _a.sent();
125
+ newValue = {
126
+ type: mdm_sdk_1.DateRangeTypes.AGO,
127
+ period: [5, 'days']
128
+ };
129
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
130
+ return [2 /*return*/];
131
+ }
97
132
  });
98
- wrapper.update();
99
- var newValue = {
100
- type: mdm_sdk_1.DateRangeTypes.AGO,
101
- period: [null, 'hours']
102
- };
103
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
104
- });
105
- it('should call props.onChange with proper parameters when type is changed to within', function () {
106
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: betweenValue })));
107
- (0, test_utils_1.act)(function () {
108
- wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('onChange')({ value: mdm_sdk_1.DateRangeTypes.WITHIN });
133
+ }); });
134
+ it('should call props.onChange with proper parameters when type is changed to within', function () { return __awaiter(void 0, void 0, void 0, function () {
135
+ var user, newValue;
136
+ return __generator(this, function (_a) {
137
+ switch (_a.label) {
138
+ case 0:
139
+ user = setUp(__assign(__assign({}, defaultProps), { value: betweenValue })).user;
140
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Date range'))];
141
+ case 1:
142
+ _a.sent();
143
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Within the last'))];
144
+ case 2:
145
+ _a.sent();
146
+ newValue = {
147
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
148
+ period: [null, 'hours']
149
+ };
150
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
151
+ return [2 /*return*/];
152
+ }
109
153
  });
110
- wrapper.update();
111
- var newValue = {
112
- type: mdm_sdk_1.DateRangeTypes.WITHIN,
113
- period: [null, 'hours']
114
- };
115
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
116
- });
117
- it('should call props.onChange with proper parameters when type is changed to between', function () {
118
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: null })));
119
- (0, test_utils_1.act)(function () {
120
- wrapper.find(SimpleDropDownSelector_1.SimpleDropDownSelector).prop('onChange')({ value: mdm_sdk_1.DateRangeTypes.BETWEEN });
154
+ }); });
155
+ it('should call props.onChange with proper parameters when type is changed to between', function () { return __awaiter(void 0, void 0, void 0, function () {
156
+ var user, newValue;
157
+ return __generator(this, function (_a) {
158
+ switch (_a.label) {
159
+ case 0:
160
+ user = setUp().user;
161
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Within the last'))];
162
+ case 1:
163
+ _a.sent();
164
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Date range'))];
165
+ case 2:
166
+ _a.sent();
167
+ newValue = {
168
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
169
+ period: [null, null]
170
+ };
171
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
172
+ return [2 /*return*/];
173
+ }
121
174
  });
122
- wrapper.update();
123
- var newValue = {
124
- type: mdm_sdk_1.DateRangeTypes.BETWEEN,
125
- period: [null, null]
126
- };
127
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
128
- });
129
- it('should call props.onChange when within period is changed', function () {
130
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: withinValue })));
131
- (0, test_utils_1.act)(function () {
132
- wrapper.find(DateIntervalSelector_1.DateIntervalSelector).prop('onChange')([3, 'days']);
175
+ }); });
176
+ it('should call props.onChange when within period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
177
+ var user, newValue;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ user = setUp().user;
182
+ return [4 /*yield*/, user.type(react_2.screen.getByDisplayValue('5'), '1')];
183
+ case 1:
184
+ _a.sent();
185
+ newValue = {
186
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
187
+ period: [51, 'days']
188
+ };
189
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
190
+ return [2 /*return*/];
191
+ }
133
192
  });
134
- wrapper.update();
135
- var newValue = {
136
- type: mdm_sdk_1.DateRangeTypes.WITHIN,
137
- period: [3, 'days']
138
- };
139
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
140
- });
141
- it('should call props.onChange when ago period is changed', function () {
142
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: agoValue })));
143
- (0, test_utils_1.act)(function () {
144
- wrapper.find(DateIntervalSelector_1.DateIntervalSelector).prop('onChange')([3, 'days']);
193
+ }); });
194
+ it('should call props.onChange when ago period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
195
+ var user, newValue;
196
+ return __generator(this, function (_a) {
197
+ switch (_a.label) {
198
+ case 0:
199
+ user = setUp(__assign(__assign({}, defaultProps), { value: agoValue })).user;
200
+ return [4 /*yield*/, user.type(react_2.screen.getByDisplayValue('4'), '1')];
201
+ case 1:
202
+ _a.sent();
203
+ newValue = {
204
+ type: mdm_sdk_1.DateRangeTypes.AGO,
205
+ period: [41, 'months']
206
+ };
207
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
208
+ return [2 /*return*/];
209
+ }
145
210
  });
146
- wrapper.update();
147
- var newValue = {
148
- type: mdm_sdk_1.DateRangeTypes.AGO,
149
- period: [3, 'days']
150
- };
151
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
152
- });
153
- it('should call props.onChange when between period is changed', function () {
154
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, { value: betweenValue })));
155
- (0, test_utils_1.act)(function () {
156
- wrapper.find(CustomDateRangeEditor_1.CustomDateRangeEditor).prop('onChange')([new Date(234), new Date(567)]);
211
+ }); });
212
+ it('should call props.onChange when between period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
213
+ var user, newValue;
214
+ return __generator(this, function (_a) {
215
+ switch (_a.label) {
216
+ case 0:
217
+ user = setUp(__assign(__assign({}, defaultProps), { value: betweenValue })).user;
218
+ return [4 /*yield*/, user.click(react_2.screen.getByDisplayValue('01/01/2023 01/01/2024'))];
219
+ case 1:
220
+ _a.sent();
221
+ return [4 /*yield*/, user.type(react_2.screen.getByDisplayValue('01/01/2023'), '01/01/2022')];
222
+ case 2:
223
+ _a.sent();
224
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Update'))];
225
+ case 3:
226
+ _a.sent();
227
+ newValue = {
228
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
229
+ period: [new Date('01/01/2022'), new Date('01/01/2024')]
230
+ };
231
+ expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
232
+ return [2 /*return*/];
233
+ }
157
234
  });
158
- wrapper.update();
159
- var newValue = {
160
- type: mdm_sdk_1.DateRangeTypes.BETWEEN,
161
- period: [new Date(234), new Date(567)]
162
- };
163
- expect(defaultProps.onChange).toHaveBeenCalledWith(newValue);
164
- });
235
+ }); });
165
236
  });
@@ -92,7 +92,7 @@ var HistoryFilterButton = function (_a) {
92
92
  setCurrentValue(__assign({}, constants_1.DEFAULT_HISTORY_FILTER));
93
93
  }, []);
94
94
  return (react_1.default.createElement(react_1.default.Fragment, null,
95
- react_1.default.createElement(SmallIconButton_1.SmallIconButton, { ref: buttonRef, color: buttonColor, icon: FilterList_1.default, size: "L", onClick: togglePopup, className: className }),
95
+ react_1.default.createElement(SmallIconButton_1.SmallIconButton, { ref: buttonRef, color: buttonColor, icon: FilterList_1.default, size: "L", onClick: togglePopup, className: className, "data-reltio-id": "history-filter-button" }),
96
96
  react_1.default.createElement(Popover_1.default, { classes: { paper: styles.popup }, open: isOpen, anchorEl: buttonRef.current, onClose: togglePopup, anchorOrigin: {
97
97
  vertical: 'bottom',
98
98
  horizontal: 'right'