@reltio/components 1.4.1906 → 1.4.1908

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 (101) hide show
  1. package/cjs/ActionsPanel/ActionsPanel.test.js +133 -49
  2. package/cjs/AttributeListItem/AttributeListItem.spec.js +147 -118
  3. package/cjs/AttributeSelector/AttributeSelector.specs.js +125 -193
  4. package/cjs/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  5. package/cjs/AttributesErrorsPanel/components/Error/Error.specs.js +96 -90
  6. package/cjs/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  7. package/cjs/AttributesErrorsPanel/store.test-data.js +29 -0
  8. package/cjs/AttributesFilterSelector/AttributesFilterSelector.test.js +127 -105
  9. package/cjs/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  10. package/cjs/AttributesValuesEditor/AttributesValuesEditor.test.js +92 -88
  11. package/cjs/AttributesView/AttributesView.test.js +67 -34
  12. package/cjs/AutoSizeList/AutoSizeList.test.js +81 -59
  13. package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +15 -31
  14. package/cjs/BarChart/BarChart.test.js +128 -65
  15. package/cjs/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  16. package/cjs/BasicViewContent/BasicViewContent.test.js +7 -9
  17. package/cjs/BlobRenderer/BlobRenderer.test.js +28 -9
  18. package/cjs/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  19. package/cjs/BubbleChart/BubbleChart.test.js +111 -87
  20. package/cjs/CloudChart/CloudChart.test.js +95 -36
  21. package/cjs/CollaborationItem/CollaborationItem.test.js +67 -30
  22. package/cjs/CollaborationItem/components/Comment/Comment.test.js +221 -189
  23. package/cjs/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -81
  24. package/cjs/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  25. package/cjs/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  26. package/cjs/CollapseButton/CollapseButton.test.js +74 -15
  27. package/cjs/CollapseRowButton/CollapseRowButton.test.js +82 -24
  28. package/cjs/ColorBar/ColorBar.test.js +13 -15
  29. package/cjs/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  30. package/cjs/CommentsContainer/CommentsContainer.test.js +282 -211
  31. package/cjs/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +183 -122
  32. package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  33. package/cjs/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  34. package/cjs/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  35. package/cjs/ConnectionEditor/ConnectionEditor.test.js +299 -282
  36. package/cjs/contexts/MdmModuleContext/context.d.ts +3 -1
  37. package/cjs/contexts/MdmModuleContext/hooks.d.ts +2 -1
  38. package/esm/ActionsPanel/ActionsPanel.test.js +133 -49
  39. package/esm/AttributeListItem/AttributeListItem.spec.js +149 -97
  40. package/esm/AttributeSelector/AttributeSelector.specs.js +125 -193
  41. package/esm/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  42. package/esm/AttributesErrorsPanel/components/Error/Error.specs.js +98 -72
  43. package/esm/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  44. package/esm/AttributesErrorsPanel/store.test-data.js +26 -0
  45. package/esm/AttributesFilterSelector/AttributesFilterSelector.test.js +129 -84
  46. package/esm/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  47. package/esm/AttributesValuesEditor/AttributesValuesEditor.test.js +94 -67
  48. package/esm/AttributesView/AttributesView.test.js +67 -34
  49. package/esm/AutoSizeList/AutoSizeList.test.js +81 -59
  50. package/esm/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +16 -32
  51. package/esm/BarChart/BarChart.test.js +128 -65
  52. package/esm/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  53. package/esm/BasicViewContent/BasicViewContent.test.js +7 -9
  54. package/esm/BlobRenderer/BlobRenderer.test.js +28 -9
  55. package/esm/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  56. package/esm/BubbleChart/BubbleChart.test.js +111 -87
  57. package/esm/CloudChart/CloudChart.test.js +95 -36
  58. package/esm/CollaborationItem/CollaborationItem.test.js +67 -30
  59. package/esm/CollaborationItem/components/Comment/Comment.test.js +221 -189
  60. package/esm/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -58
  61. package/esm/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  62. package/esm/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  63. package/esm/CollapseButton/CollapseButton.test.js +74 -15
  64. package/esm/CollapseRowButton/CollapseRowButton.test.js +82 -24
  65. package/esm/ColorBar/ColorBar.test.js +13 -15
  66. package/esm/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  67. package/esm/CommentsContainer/CommentsContainer.test.js +282 -211
  68. package/esm/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +182 -101
  69. package/esm/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  70. package/esm/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  71. package/esm/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  72. package/esm/ConnectionEditor/ConnectionEditor.test.js +300 -283
  73. package/esm/contexts/MdmModuleContext/context.d.ts +3 -1
  74. package/esm/contexts/MdmModuleContext/hooks.d.ts +2 -1
  75. package/package.json +2 -2
  76. package/cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -100
  77. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  78. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -46
  79. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  80. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.js +0 -27
  81. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  82. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -27
  83. package/cjs/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  84. package/cjs/CollaborationItem/components/Avatar/Avatar.test.js +0 -15
  85. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  86. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -80
  87. package/esm/ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts +0 -1
  88. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts +0 -1
  89. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -95
  90. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  91. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -41
  92. package/esm/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  93. package/esm/AvatarWithFallback/AvatarWithFallback.specs.js +0 -22
  94. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  95. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -22
  96. package/esm/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  97. package/esm/CollaborationItem/components/Avatar/Avatar.test.js +0 -10
  98. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  99. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -55
  100. /package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts → AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
  101. /package/{cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts → esm/AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
@@ -10,159 +10,241 @@ 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;
24
+ return g = { next: verb(0), "throw": verb(1), "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 ui_i18n_1 = __importDefault(require("ui-i18n"));
20
- var test_utils_1 = require("react-dom/test-utils");
21
- var Popover_1 = __importDefault(require("@mui/material/Popover"));
22
- var Button_1 = __importDefault(require("@mui/material/Button"));
23
- var FilterList_1 = __importDefault(require("@mui/icons-material/FilterList"));
24
- var Divider_1 = __importDefault(require("@mui/material/Divider"));
25
- var Typography_1 = __importDefault(require("@mui/material/Typography"));
26
54
  var AttributesFiltersButton_1 = __importDefault(require("./AttributesFiltersButton"));
27
- var AttributesFiltersBuilder_1 = require("../AttributesFiltersBuilder");
28
- var ActionButtons_1 = require("./components/ActionButtons");
29
- var test_utils_2 = require("../test-utils");
30
- var EmptyStub_1 = require("../EmptyStub");
31
- jest.mock('../AttributesFiltersBuilder', function () { return ({
32
- AttributesFiltersBuilder: jest.fn(function () { return null; })
33
- }); });
34
- var defaultProps = {
35
- filters: [],
36
- attributesTypesGroups: [],
37
- onChange: jest.fn()
38
- };
39
- var setUp = function (props) {
40
- if (props === void 0) { props = defaultProps; }
41
- return (0, enzyme_1.shallow)(react_1.default.createElement(AttributesFiltersButton_1.default, __assign({}, props)));
42
- };
55
+ var test_utils_1 = require("../test-utils");
56
+ var react_2 = require("@testing-library/react");
57
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
58
+ var metadata_test_data_1 = require("../AttributesFiltersBuilder/metadata.test-data");
59
+ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
60
+ var attributes_test_data_1 = require("../AttributesFiltersBuilder/attributes.test-data");
43
61
  describe('AttributesFiltersButton tests', function () {
44
- beforeAll(function () {
45
- AttributesFiltersBuilder_1.AttributesFiltersBuilder.mockImplementation(EmptyStub_1.EmptyStub);
46
- });
47
- it('should render main components', function () {
48
- var component = setUp();
49
- expect(component.find(Button_1.default)).toHaveLength(1);
50
- expect(component.find(Button_1.default).prop('color')).toBe('inherit');
51
- expect(component.find(FilterList_1.default)).toHaveLength(1);
52
- expect(component.find(FilterList_1.default).prop('color')).toBe('inherit');
53
- expect(component.find(Popover_1.default)).toHaveLength(1);
54
- expect(component.find(Typography_1.default)).toHaveLength(1);
55
- expect(component.find(AttributesFiltersBuilder_1.AttributesFiltersBuilder)).toHaveLength(1);
56
- expect(component.find(Divider_1.default)).toHaveLength(1);
57
- expect(component.find(ActionButtons_1.ActionButtons)).toHaveLength(1);
58
- expect(component.find(Popover_1.default).prop('open')).toBe(false);
59
- expect(component.find(AttributesFiltersBuilder_1.AttributesFiltersBuilder).props()).toMatchObject({
60
- attributesTypesGroups: defaultProps.attributesTypesGroups,
61
- filters: defaultProps.filters,
62
- onChange: expect.any(Function)
63
- });
64
- expect(component.find(ActionButtons_1.ActionButtons).props()).toMatchObject({
65
- onApply: expect.any(Function),
66
- onCancel: expect.any(Function),
67
- onClear: expect.any(Function)
62
+ var mdmValues = {
63
+ metadata: metadata_test_data_1.metadata,
64
+ tenant: {
65
+ id: 't1',
66
+ name: 't1'
67
+ },
68
+ lookups: {},
69
+ globalSearchRequestOptions: {}
70
+ };
71
+ var defaultProps = {
72
+ filters: [],
73
+ attributesTypesGroups: attributes_test_data_1.attributesTypesGroups,
74
+ onChange: jest.fn()
75
+ };
76
+ var setUp = function (props) {
77
+ if (props === void 0) { props = defaultProps; }
78
+ var user = user_event_1.default.setup();
79
+ var Providers = function (_a) {
80
+ var children = _a.children;
81
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues }, children));
82
+ };
83
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(AttributesFiltersButton_1.default, __assign({}, props)), { wrapper: Providers }));
84
+ };
85
+ it('should render main components', function () { return __awaiter(void 0, void 0, void 0, function () {
86
+ var user, button;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0:
90
+ user = setUp().user;
91
+ button = react_2.screen.getByRole('button');
92
+ expect(button).toHaveClass('MuiButton-colorInherit');
93
+ expect((0, test_utils_1.getMuiIconByName)('FilterList')).not.toHaveClass('MuiSvgIcon-colorPrimary');
94
+ return [4 /*yield*/, user.click(button)];
95
+ case 1:
96
+ _a.sent();
97
+ expect(react_2.screen.getByRole('presentation')).toBeInTheDocument();
98
+ expect(react_2.screen.getByText('Filter')).toBeInTheDocument();
99
+ expect(react_2.screen.getByText('Clear all')).toBeInTheDocument();
100
+ expect(react_2.screen.getByText('Apply')).toBeInTheDocument();
101
+ return [2 /*return*/];
102
+ }
68
103
  });
69
- expect(component.find(Typography_1.default).text()).toBe(ui_i18n_1.default.text('Filter'));
70
- });
104
+ }); });
71
105
  it('should set color prop to button and FilterIcon as "primary" if some not empty filter is applied', function () {
72
- var component = setUp(__assign(__assign({}, defaultProps), { filters: [{ fieldName: 'fieldName', filter: 'exists' }] }));
73
- expect(component.find(Button_1.default)).toHaveLength(1);
74
- expect(component.find(Button_1.default).prop('color')).toBe('primary');
75
- expect(component.find(FilterList_1.default)).toHaveLength(1);
76
- expect(component.find(FilterList_1.default).prop('color')).toBe('primary');
106
+ setUp(__assign(__assign({}, defaultProps), { filters: [{ fieldName: 'fieldName', filter: 'exists' }] }));
107
+ expect(react_2.screen.getByRole('button')).toHaveClass('MuiButton-textPrimary');
108
+ expect((0, test_utils_1.getMuiIconByName)('FilterList')).toHaveClass('MuiSvgIcon-colorPrimary');
77
109
  });
78
110
  it('should set color prop to button and FilterIcon as "primary" if prop isFiltersApplied = true', function () {
79
- var component = setUp(__assign(__assign({}, defaultProps), { filters: [], isFiltersApplied: true }));
80
- expect(component.find(Button_1.default)).toHaveLength(1);
81
- expect(component.find(Button_1.default).prop('color')).toBe('primary');
82
- expect(component.find(FilterList_1.default)).toHaveLength(1);
83
- expect(component.find(FilterList_1.default).prop('color')).toBe('primary');
111
+ setUp(__assign(__assign({}, defaultProps), { filters: [], isFiltersApplied: true }));
112
+ expect(react_2.screen.getByRole('button')).toHaveClass('MuiButton-textPrimary');
113
+ expect((0, test_utils_1.getMuiIconByName)('FilterList')).toHaveClass('MuiSvgIcon-colorPrimary');
84
114
  });
85
115
  it('should set color prop to button and FilterIcon as "inherit" if some empty filter is applied', function () {
86
- var component = setUp(__assign(__assign({}, defaultProps), { filters: [{ fieldName: 'fieldName', filter: 'equals', values: [] }] }));
87
- expect(component.find(Button_1.default)).toHaveLength(1);
88
- expect(component.find(Button_1.default).prop('color')).toBe('inherit');
89
- expect(component.find(FilterList_1.default)).toHaveLength(1);
90
- expect(component.find(FilterList_1.default).prop('color')).toBe('inherit');
116
+ setUp(__assign(__assign({}, defaultProps), { filters: [{ fieldName: 'fieldName', filter: 'equals', values: [] }] }));
117
+ expect(react_2.screen.getByRole('button')).toHaveClass('MuiButton-colorInherit');
118
+ expect((0, test_utils_1.getMuiIconByName)('FilterList')).not.toHaveClass('MuiSvgIcon-colorPrimary');
91
119
  });
92
120
  it('should set color prop to button and FilterIcon as "inherit" if prop isFiltersApplied = false', function () {
93
- var component = setUp(__assign(__assign({}, defaultProps), { filters: [], isFiltersApplied: false }));
94
- expect(component.find(Button_1.default)).toHaveLength(1);
95
- expect(component.find(Button_1.default).prop('color')).toBe('inherit');
96
- expect(component.find(FilterList_1.default)).toHaveLength(1);
97
- expect(component.find(FilterList_1.default).prop('color')).toBe('inherit');
98
- });
99
- it('should open Popover after filter button clicking', function () {
100
- var event = {};
101
- var component = setUp();
102
- component.find(Button_1.default).prop('onClick')(event);
103
- (0, test_utils_2.rerenderWrapper)(component);
104
- expect(component.find(Popover_1.default).prop('open')).toBe(true);
105
- });
106
- it('should close Popover after cancel button clicking', function () {
107
- var event = {};
108
- var component = setUp();
109
- component.find(Button_1.default).prop('onClick')(event);
110
- (0, test_utils_2.rerenderWrapper)(component);
111
- expect(component.find(Popover_1.default).prop('open')).toBe(true);
112
- component.find(ActionButtons_1.ActionButtons).prop('onCancel')();
113
- (0, test_utils_2.rerenderWrapper)(component);
114
- expect(component.find(Popover_1.default).prop('open')).toBe(false);
121
+ setUp(__assign(__assign({}, defaultProps), { filters: [], isFiltersApplied: false }));
122
+ expect(react_2.screen.getByRole('button')).toHaveClass('MuiButton-colorInherit');
123
+ expect((0, test_utils_1.getMuiIconByName)('FilterList')).not.toHaveClass('MuiSvgIcon-colorPrimary');
115
124
  });
116
- it('should call onChange prop after apply button clicking', function () {
117
- var newFilters = [{ filedName: 'fieldName', filter: 'filter', values: ['1'] }];
118
- var event = {};
119
- var component = setUp();
120
- component.find(Button_1.default).prop('onClick')(event);
121
- (0, test_utils_2.rerenderWrapper)(component);
122
- expect(component.find(Popover_1.default).prop('open')).toBe(true);
123
- component.find(AttributesFiltersBuilder_1.AttributesFiltersBuilder).prop('onChange')(newFilters);
124
- (0, test_utils_2.rerenderWrapper)(component);
125
- component.find(ActionButtons_1.ActionButtons).prop('onApply')();
126
- (0, test_utils_2.rerenderWrapper)(component);
127
- expect(defaultProps.onChange).toBeCalledWith(newFilters);
128
- });
129
- it('should clear filters after clear all button clicking', function () {
130
- var event = {};
131
- var component = setUp({
132
- filters: [{ fieldName: 'fieldName', filter: 'filter', values: ['1'] }],
133
- attributesTypesGroups: [],
134
- onChange: jest.fn()
125
+ it('should close Popover after cancel button clicking', function () { return __awaiter(void 0, void 0, void 0, function () {
126
+ var user, button;
127
+ return __generator(this, function (_a) {
128
+ switch (_a.label) {
129
+ case 0:
130
+ user = setUp().user;
131
+ button = react_2.screen.getByRole('button');
132
+ return [4 /*yield*/, user.click(button)];
133
+ case 1:
134
+ _a.sent();
135
+ expect(react_2.screen.getByRole('presentation')).toBeInTheDocument();
136
+ return [4 /*yield*/, user.click(button)];
137
+ case 2:
138
+ _a.sent();
139
+ expect(react_2.screen.queryByRole('presentation')).not.toBeInTheDocument();
140
+ return [2 /*return*/];
141
+ }
135
142
  });
136
- component.find(Button_1.default).prop('onClick')(event);
137
- (0, test_utils_2.rerenderWrapper)(component);
138
- expect(component.find(Popover_1.default).prop('open')).toBe(true);
139
- component.find(ActionButtons_1.ActionButtons).prop('onClear')();
140
- (0, test_utils_2.rerenderWrapper)(component);
141
- expect(component.find(AttributesFiltersBuilder_1.AttributesFiltersBuilder).props()).toMatchObject({
142
- attributesTypesGroups: defaultProps.attributesTypesGroups,
143
- filters: [],
144
- onChange: expect.any(Function)
143
+ }); });
144
+ it('should close Popover after cancel button clicking', function () { return __awaiter(void 0, void 0, void 0, function () {
145
+ var onCancelSpy, user;
146
+ return __generator(this, function (_a) {
147
+ switch (_a.label) {
148
+ case 0:
149
+ onCancelSpy = jest.fn();
150
+ user = setUp(__assign(__assign({}, defaultProps), { onCancel: onCancelSpy })).user;
151
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button'))];
152
+ case 1:
153
+ _a.sent();
154
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Cancel'))];
155
+ case 2:
156
+ _a.sent();
157
+ expect(onCancelSpy).toHaveBeenCalled();
158
+ expect(react_2.screen.queryByRole('presentation')).not.toBeInTheDocument();
159
+ return [2 /*return*/];
160
+ }
145
161
  });
146
- });
147
- it('should render options', function () {
148
- var ChildrenComponent = function () { return react_1.default.createElement("div", { className: "childrenComponent" }, "children"); };
149
- var component = (0, enzyme_1.mount)(react_1.default.createElement(AttributesFiltersButton_1.default, __assign({}, defaultProps),
150
- react_1.default.createElement(ChildrenComponent, null)));
151
- var event = {};
152
- (0, test_utils_1.act)(function () {
153
- component.find(Button_1.default).prop('onClick')(event);
162
+ }); });
163
+ it('should call onChange prop after apply button clicking', function () { return __awaiter(void 0, void 0, void 0, function () {
164
+ var onApplySpy, onChangeSpy, user, rows, editor, input;
165
+ return __generator(this, function (_a) {
166
+ switch (_a.label) {
167
+ case 0:
168
+ onApplySpy = jest.fn();
169
+ onChangeSpy = jest.fn();
170
+ user = setUp(__assign(__assign({}, defaultProps), { onApply: onApplySpy, onChange: onChangeSpy, filters: [{ fieldName: 'attributes.Int', filter: 'equals', values: [['TestValue']] }] })).user;
171
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button'))];
172
+ case 1:
173
+ _a.sent();
174
+ rows = react_2.screen.getAllByTestId('query-builder-row');
175
+ editor = (0, react_2.within)(rows[0]).getByTestId('filter-value-editor');
176
+ input = (0, react_2.within)(editor).getByRole('textbox');
177
+ return [4 /*yield*/, user.type(input, '12{Enter}')];
178
+ case 2:
179
+ _a.sent();
180
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Apply'))];
181
+ case 3:
182
+ _a.sent();
183
+ expect(onChangeSpy).toBeCalledWith([
184
+ {
185
+ fieldName: 'attributes.Int',
186
+ filter: 'equals',
187
+ values: [['TestValue', '12']]
188
+ }
189
+ ]);
190
+ expect(onApplySpy).toHaveBeenCalled();
191
+ expect(react_2.screen.queryByRole('presentation')).not.toBeInTheDocument();
192
+ return [2 /*return*/];
193
+ }
154
194
  });
155
- (0, test_utils_2.rerenderWrapper)(component);
156
- var childrenComponent = component.find('.childrenComponent');
157
- expect(childrenComponent).toHaveLength(1);
158
- });
159
- it('should call onTogglePopup prop when open Popover', function () {
160
- var onTogglePopup = jest.fn();
161
- var event = {};
162
- var component = setUp(__assign(__assign({}, defaultProps), { onTogglePopup: onTogglePopup }));
163
- component.find(Button_1.default).prop('onClick')(event);
164
- (0, test_utils_2.rerenderWrapper)(component);
165
- expect(component.find(Popover_1.default).prop('open')).toBe(true);
166
- expect(onTogglePopup).toBeCalledWith(true);
167
- });
195
+ }); });
196
+ it('should clear filters after clear all button clicking', function () { return __awaiter(void 0, void 0, void 0, function () {
197
+ var onClearSpy, user;
198
+ return __generator(this, function (_a) {
199
+ switch (_a.label) {
200
+ case 0:
201
+ onClearSpy = jest.fn();
202
+ user = setUp(__assign(__assign({}, defaultProps), { onClear: onClearSpy, filters: [{ fieldName: 'attributes.Int', filter: 'equals', values: [['TestValue']] }] })).user;
203
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button'))];
204
+ case 1:
205
+ _a.sent();
206
+ expect(react_2.screen.getByText('TestValue')).toBeInTheDocument();
207
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Clear all'))];
208
+ case 2:
209
+ _a.sent();
210
+ expect(react_2.screen.queryByText('TestValue')).not.toBeInTheDocument();
211
+ expect(onClearSpy).toHaveBeenCalled();
212
+ return [2 /*return*/];
213
+ }
214
+ });
215
+ }); });
216
+ it('should render children ', function () { return __awaiter(void 0, void 0, void 0, function () {
217
+ var user;
218
+ return __generator(this, function (_a) {
219
+ switch (_a.label) {
220
+ case 0:
221
+ user = setUp(__assign(__assign({}, defaultProps), { children: react_1.default.createElement("div", null, "children") })).user;
222
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button'))];
223
+ case 1:
224
+ _a.sent();
225
+ expect(react_2.screen.getByText('children')).toBeInTheDocument();
226
+ return [2 /*return*/];
227
+ }
228
+ });
229
+ }); });
230
+ it('should call onTogglePopup prop when open Popover', function () { return __awaiter(void 0, void 0, void 0, function () {
231
+ var onTogglePopup, user, popupButton;
232
+ return __generator(this, function (_a) {
233
+ switch (_a.label) {
234
+ case 0:
235
+ onTogglePopup = jest.fn();
236
+ user = setUp(__assign(__assign({}, defaultProps), { onTogglePopup: onTogglePopup })).user;
237
+ popupButton = react_2.screen.getByRole('button');
238
+ return [4 /*yield*/, user.click(popupButton)];
239
+ case 1:
240
+ _a.sent();
241
+ expect(onTogglePopup).toHaveBeenLastCalledWith(true);
242
+ return [4 /*yield*/, user.click(popupButton)];
243
+ case 2:
244
+ _a.sent();
245
+ expect(onTogglePopup).toHaveBeenLastCalledWith(false);
246
+ return [2 /*return*/];
247
+ }
248
+ });
249
+ }); });
168
250
  });
@@ -10,107 +10,111 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
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;
24
+ return g = { next: verb(0), "throw": verb(1), "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 };
18
47
  }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || function (mod) {
30
- if (mod && mod.__esModule) return mod;
31
- var result = {};
32
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
- __setModuleDefault(result, mod);
34
- return result;
35
48
  };
36
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
37
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
51
  };
39
52
  Object.defineProperty(exports, "__esModule", { value: true });
40
53
  var react_1 = __importDefault(require("react"));
41
- var enzyme_1 = require("enzyme");
42
- var mdmSdk = __importStar(require("@reltio/mdm-sdk"));
43
54
  var AttributesValuesEditor_1 = __importDefault(require("./AttributesValuesEditor"));
44
- var FilterValueEditor_1 = require("../FilterValueEditor");
45
- jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { checkIfOptionHasValues: jest.fn().mockReturnValue(true) })); });
46
- var defaultProps = {
47
- rowData: {
48
- attribute: {
49
- attrType: {},
50
- entityTypeUri: '',
51
- fieldName: 'attribute',
52
- groupName: '',
53
- title: '',
54
- uri: ''
55
- },
56
- filter: 'filter',
57
- id: 0,
58
- values: []
59
- },
60
- rowContext: {
61
- attributesGroup: [],
62
- entityType: {
63
- uri: 'configuration/entityTypes/HCA',
64
- label: 'HCA',
65
- attributes: []
66
- },
67
- addNewFilter: jest.fn(),
68
- addRowAfterIndex: jest.fn(),
69
- changeFilter: jest.fn(),
70
- duplicateRow: jest.fn(),
71
- removeRow: jest.fn(),
72
- attributeSelectorItemsGroups: []
73
- }
74
- };
75
- var setUp = function (props) {
76
- if (props === void 0) { props = defaultProps; }
77
- return (0, enzyme_1.shallow)(react_1.default.createElement(AttributesValuesEditor_1.default, __assign({}, props)));
78
- };
55
+ var react_2 = require("@testing-library/react");
56
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
79
57
  describe('AttributesValuesEditor tests', function () {
80
- it('should render main components', function () {
81
- var rowData = defaultProps.rowData;
82
- var editorFilter = {
83
- fieldName: rowData.attribute.fieldName,
84
- filter: rowData.filter,
58
+ var defaultProps = {
59
+ rowData: {
60
+ attribute: {
61
+ attrType: {
62
+ name: 'attribute1',
63
+ uri: 'etityTypes/uri1',
64
+ type: 'string'
65
+ },
66
+ entityTypeUri: '',
67
+ fieldName: 'attribute',
68
+ groupName: '',
69
+ title: '',
70
+ uri: ''
71
+ },
72
+ filter: 'equals',
73
+ id: 0,
85
74
  values: []
86
- };
87
- var component = setUp();
88
- expect(component.find(FilterValueEditor_1.FilterValueEditor)).toHaveLength(1);
89
- expect(component.find(FilterValueEditor_1.FilterValueEditor).props()).toMatchObject({
90
- filter: editorFilter,
91
- onChange: expect.any(Function)
75
+ },
76
+ rowContext: {
77
+ attributesGroup: [],
78
+ entityType: {
79
+ uri: 'configuration/entityTypes/HCA',
80
+ label: 'HCA',
81
+ attributes: []
82
+ },
83
+ addNewFilter: jest.fn(),
84
+ addRowAfterIndex: jest.fn(),
85
+ changeFilter: jest.fn(),
86
+ duplicateRow: jest.fn(),
87
+ removeRow: jest.fn(),
88
+ attributeSelectorItemsGroups: []
89
+ }
90
+ };
91
+ var setUp = function (props) {
92
+ if (props === void 0) { props = defaultProps; }
93
+ var user = user_event_1.default.setup();
94
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(AttributesValuesEditor_1.default, __assign({}, props))));
95
+ };
96
+ it('should call changeFilter prop after values changing', function () { return __awaiter(void 0, void 0, void 0, function () {
97
+ var _a, fieldName, filter, id, changeFilterSpy, user;
98
+ return __generator(this, function (_b) {
99
+ switch (_b.label) {
100
+ case 0:
101
+ _a = defaultProps.rowData, fieldName = _a.attribute.fieldName, filter = _a.filter, id = _a.id;
102
+ changeFilterSpy = jest.fn();
103
+ user = setUp(__assign(__assign({}, defaultProps), { rowContext: __assign(__assign({}, defaultProps.rowContext), { changeFilter: changeFilterSpy }) })).user;
104
+ return [4 /*yield*/, user.type(react_2.screen.getByRole('textbox'), 'NewValue{Enter}')];
105
+ case 1:
106
+ _b.sent();
107
+ expect(changeFilterSpy).toHaveBeenCalledWith({ fieldName: fieldName, filter: filter, values: [['NewValue']] }, id);
108
+ return [2 /*return*/];
109
+ }
92
110
  });
93
- });
94
- it('should call changeFilter prop after values changing', function () {
95
- var rowContext = defaultProps.rowContext, rowData = defaultProps.rowData;
96
- var newValues = ['1', '2'];
97
- var newFilter = {
98
- fieldName: rowData.attribute.fieldName,
99
- filter: rowData.filter,
100
- values: newValues
101
- };
102
- var component = setUp();
103
- component.find(FilterValueEditor_1.FilterValueEditor).prop('onChange')(newValues);
104
- expect(rowContext.changeFilter).toBeCalledWith(newFilter, rowData.id);
105
- });
111
+ }); });
106
112
  it('should not render AttributesValuesEditor if there is not rowData.attribute', function () {
107
- var props = __assign(__assign({}, defaultProps), { rowData: null });
108
- var component = setUp(props);
109
- expect(component.find(FilterValueEditor_1.FilterValueEditor)).toHaveLength(0);
113
+ var container = setUp(__assign(__assign({}, defaultProps), { rowData: null })).container;
114
+ expect(container.firstChild).toBeEmptyDOMElement();
110
115
  });
111
116
  it('should not render AttributesValuesEditor if checkIfOptionHasValues return false', function () {
112
- jest.spyOn(mdmSdk, 'checkIfOptionHasValues').mockReturnValue(false);
113
- var component = setUp();
114
- expect(component.find(FilterValueEditor_1.FilterValueEditor)).toHaveLength(0);
117
+ var container = setUp(__assign(__assign({}, defaultProps), { rowData: __assign(__assign({}, defaultProps.rowData), { filter: 'missing' }) })).container;
118
+ expect(container.firstChild).toBeEmptyDOMElement();
115
119
  });
116
120
  });