@reltio/components 1.4.2070 → 1.4.2071

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 (159) hide show
  1. package/FacetViewHeader/FacetViewHeader.js +1 -1
  2. package/ImageAttributesLine/imageAttributeValues.test-data.js +8 -0
  3. package/ImageAttributesLine/index.d.ts +1 -1
  4. package/ImageAttributesLine/index.js +1 -1
  5. package/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.js +1 -1
  6. package/MergeButton/MergeButton.spec.js +55 -124
  7. package/MetadataTypesSelector/MetadataTypesSelector.js +1 -1
  8. package/MetadataTypesSelector/MetadataTypesSelector.test.js +193 -190
  9. package/MoreAttributesButton/MoreAttributesButton.test.js +173 -166
  10. package/MultiValueSelector/MultiValueSelector.test.js +78 -38
  11. package/MultipliableSelect/MultipliableSelect.test.js +111 -47
  12. package/NestedAttribute/NestedAttribute.test.js +121 -42
  13. package/NestedAttributeEditor/NestedAttributeEditor.test.js +95 -41
  14. package/NotMatchButton/NotMatchButton.spec.js +51 -100
  15. package/PieChart/PieChart.test.js +130 -114
  16. package/PinButton/PinButton.spec.js +89 -22
  17. package/PivotingTooltip/PivotingTooltip.test.js +338 -174
  18. package/PotentialMatchReviewCard/PotentialMatchReviewCard.spec.js +94 -29
  19. package/ProfileBand/ProfileBand.spec.js +60 -53
  20. package/ProfileCard/ProfileCard.test.js +109 -27
  21. package/ProfilesList/ProfilesList.d.ts +1 -3
  22. package/ProfilesList/ProfilesList.js +1 -1
  23. package/ProfilesList/ProfilesList.spec.js +226 -211
  24. package/QueryBuilderRow/QueryBuilderRow.spec.js +83 -90
  25. package/QueryBuilderRowsGroup/QueryBuilderRowsGroup.spec.js +195 -86
  26. package/ReactSelectLoadMoreButton/ReactSelectLoadMoreButton.test.js +73 -15
  27. package/ReactSelectMenuWithPopper/ReactSelectMenuWithPopper.test.js +71 -117
  28. package/ReadOnlyAttributeValuesBlock/ReadOnlyAttributeValuesBlock.test.js +128 -61
  29. package/ReadOnlyAttributesFactory/components/ReadOnlyAttribute/ReadOnlyAttribute.test.js +179 -44
  30. package/ReadOnlyAttributesList/ReadOnlyAttributesList.test.js +254 -211
  31. package/ReadOnlyAttributesList/attributes.test-data.js +4 -4
  32. package/ReadOnlyAttributesPager/ReadOnlyAttributesPager.test.js +75 -18
  33. package/ReadOnlyAttributesView/ReadOnlyAttributesView.test.js +187 -312
  34. package/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.test.js +210 -219
  35. package/ReadOnlyImageAttributesLine/ReadOnlyImageAttributesLine.test.js +89 -89
  36. package/ReferenceAttributeEditor/ReferenceAttributeEditor.test.js +556 -602
  37. package/ReferenceAttributeEditor/metadata.test-data.d.ts +13 -13
  38. package/ReferenceAttributeEditor/metadata.test-data.js +2 -2
  39. package/ReferenceAttributeEditor/styles.d.ts +1 -1
  40. package/RelationEditor/RelationEditor.test.js +1448 -1392
  41. package/RelationTypeSelector/RelationTypeSelector.test.js +99 -17
  42. package/RelationTypesSelector/RelationTypesSelector.test.js +73 -22
  43. package/ReltioMap/ReltioMap.spec.js +51 -25
  44. package/Roles/Roles.test.js +54 -10
  45. package/ScreenProfileBand/ScreenProfileBand.test.js +142 -72
  46. package/cjs/FacetViewHeader/FacetViewHeader.js +1 -1
  47. package/cjs/ImageAttributesLine/imageAttributeValues.test-data.js +8 -0
  48. package/cjs/ImageAttributesLine/index.d.ts +1 -1
  49. package/cjs/ImageAttributesLine/index.js +2 -1
  50. package/cjs/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.js +1 -1
  51. package/cjs/MergeButton/MergeButton.spec.js +55 -124
  52. package/cjs/MetadataTypesSelector/MetadataTypesSelector.js +1 -1
  53. package/cjs/MetadataTypesSelector/MetadataTypesSelector.test.js +193 -190
  54. package/cjs/MoreAttributesButton/MoreAttributesButton.test.js +172 -165
  55. package/cjs/MultiValueSelector/MultiValueSelector.test.js +78 -38
  56. package/cjs/MultipliableSelect/MultipliableSelect.test.js +111 -47
  57. package/cjs/NestedAttribute/NestedAttribute.test.js +121 -42
  58. package/cjs/NestedAttributeEditor/NestedAttributeEditor.test.js +94 -40
  59. package/cjs/NotMatchButton/NotMatchButton.spec.js +51 -100
  60. package/cjs/PieChart/PieChart.test.js +130 -114
  61. package/cjs/PinButton/PinButton.spec.js +89 -22
  62. package/cjs/PivotingTooltip/PivotingTooltip.test.js +338 -174
  63. package/cjs/PotentialMatchReviewCard/PotentialMatchReviewCard.spec.js +94 -29
  64. package/cjs/ProfileBand/ProfileBand.spec.js +60 -53
  65. package/cjs/ProfileCard/ProfileCard.test.js +109 -27
  66. package/cjs/ProfilesList/ProfilesList.d.ts +1 -3
  67. package/cjs/ProfilesList/ProfilesList.js +1 -1
  68. package/cjs/ProfilesList/ProfilesList.spec.js +226 -211
  69. package/cjs/QueryBuilderRow/QueryBuilderRow.spec.js +83 -90
  70. package/cjs/QueryBuilderRowsGroup/QueryBuilderRowsGroup.spec.js +195 -86
  71. package/cjs/ReactSelectLoadMoreButton/ReactSelectLoadMoreButton.test.js +73 -15
  72. package/cjs/ReactSelectMenuWithPopper/ReactSelectMenuWithPopper.test.js +71 -117
  73. package/cjs/ReadOnlyAttributeValuesBlock/ReadOnlyAttributeValuesBlock.test.js +128 -61
  74. package/cjs/ReadOnlyAttributesFactory/components/ReadOnlyAttribute/ReadOnlyAttribute.test.js +179 -44
  75. package/cjs/ReadOnlyAttributesList/ReadOnlyAttributesList.test.js +254 -211
  76. package/cjs/ReadOnlyAttributesList/attributes.test-data.js +4 -4
  77. package/cjs/ReadOnlyAttributesPager/ReadOnlyAttributesPager.test.js +75 -18
  78. package/cjs/ReadOnlyAttributesView/ReadOnlyAttributesView.test.js +185 -310
  79. package/cjs/ReadOnlyComplexAttribute/ReadOnlyComplexAttribute.test.js +209 -218
  80. package/cjs/ReadOnlyImageAttributesLine/ReadOnlyImageAttributesLine.test.js +89 -89
  81. package/cjs/ReferenceAttributeEditor/ReferenceAttributeEditor.test.js +555 -601
  82. package/cjs/ReferenceAttributeEditor/metadata.test-data.d.ts +13 -13
  83. package/cjs/ReferenceAttributeEditor/metadata.test-data.js +2 -2
  84. package/cjs/ReferenceAttributeEditor/styles.d.ts +1 -1
  85. package/cjs/RelationEditor/RelationEditor.test.js +1446 -1390
  86. package/cjs/RelationTypeSelector/RelationTypeSelector.test.js +99 -17
  87. package/cjs/RelationTypesSelector/RelationTypesSelector.test.js +73 -22
  88. package/cjs/ReltioMap/ReltioMap.spec.js +51 -25
  89. package/cjs/Roles/Roles.test.js +54 -10
  90. package/cjs/ScreenProfileBand/ScreenProfileBand.test.js +141 -71
  91. package/package.json +1 -1
  92. package/MetadataTypesSelector/components/ListLabel/ListLabel.test.d.ts +0 -1
  93. package/MetadataTypesSelector/components/ListLabel/ListLabel.test.js +0 -24
  94. package/PivotingTooltip/IntegrationPivotingTooltip.test.d.ts +0 -1
  95. package/PivotingTooltip/IntegrationPivotingTooltip.test.js +0 -356
  96. package/PivotingTooltip/components/PivotingTooltipContent/PivotingTooltipContent.test.d.ts +0 -1
  97. package/PivotingTooltip/components/PivotingTooltipContent/PivotingTooltipContent.test.js +0 -201
  98. package/ProfileCard/components/ProfileCardContent/ProfileCardContent.test.d.ts +0 -1
  99. package/ProfileCard/components/ProfileCardContent/ProfileCardContent.test.js +0 -43
  100. package/QueryBuilderRow/components/ReadOnlyFilter/ReadOnlyFilter.spec.d.ts +0 -1
  101. package/QueryBuilderRow/components/ReadOnlyFilter/ReadOnlyFilter.spec.js +0 -31
  102. package/QueryBuilderRow/components/ReadOnlyLogicOperator/ReadOnlyLogicOperator.spec.d.ts +0 -1
  103. package/QueryBuilderRow/components/ReadOnlyLogicOperator/ReadOnlyLogicOperator.spec.js +0 -31
  104. package/ReadOnlyAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.d.ts +0 -1
  105. package/ReadOnlyAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.js +0 -45
  106. package/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.test.d.ts +0 -1
  107. package/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.test.js +0 -114
  108. package/ReadOnlyAttributesPager/components/OneLineRenderer/OneLineRenderer.test.d.ts +0 -1
  109. package/ReadOnlyAttributesPager/components/OneLineRenderer/OneLineRenderer.test.js +0 -107
  110. package/ReadOnlyAttributesPager/components/SpecialRenderer/SpecialRenderer.test.d.ts +0 -1
  111. package/ReadOnlyAttributesPager/components/SpecialRenderer/SpecialRenderer.test.js +0 -72
  112. package/RelationEditor/IntegrationRelationEditor.test.d.ts +0 -1
  113. package/RelationEditor/IntegrationRelationEditor.test.js +0 -337
  114. package/ReltioMap/components/MapControlContainer/MapControlContainer.d.ts +0 -10
  115. package/ReltioMap/components/MapControlContainer/MapControlContainer.js +0 -24
  116. package/ReltioMap/components/MapControlContainer/MapControlContainer.spec.d.ts +0 -1
  117. package/ReltioMap/components/MapControlContainer/MapControlContainer.spec.js +0 -33
  118. package/ReltioMap/components/MapControlContainer/index.d.ts +0 -1
  119. package/ReltioMap/components/MapControlContainer/index.js +0 -1
  120. package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.spec.d.ts +0 -1
  121. package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.spec.js +0 -36
  122. package/ReltioMap/components/TopRightMapControls/TopRightMapControls.spec.d.ts +0 -1
  123. package/ReltioMap/components/TopRightMapControls/TopRightMapControls.spec.js +0 -60
  124. package/Roles/components/Role/Role.test.d.ts +0 -1
  125. package/Roles/components/Role/Role.test.js +0 -55
  126. package/cjs/MetadataTypesSelector/components/ListLabel/ListLabel.test.d.ts +0 -1
  127. package/cjs/MetadataTypesSelector/components/ListLabel/ListLabel.test.js +0 -52
  128. package/cjs/PivotingTooltip/IntegrationPivotingTooltip.test.d.ts +0 -1
  129. package/cjs/PivotingTooltip/IntegrationPivotingTooltip.test.js +0 -361
  130. package/cjs/PivotingTooltip/components/PivotingTooltipContent/PivotingTooltipContent.test.d.ts +0 -1
  131. package/cjs/PivotingTooltip/components/PivotingTooltipContent/PivotingTooltipContent.test.js +0 -206
  132. package/cjs/ProfileCard/components/ProfileCardContent/ProfileCardContent.test.d.ts +0 -1
  133. package/cjs/ProfileCard/components/ProfileCardContent/ProfileCardContent.test.js +0 -48
  134. package/cjs/QueryBuilderRow/components/ReadOnlyFilter/ReadOnlyFilter.spec.d.ts +0 -1
  135. package/cjs/QueryBuilderRow/components/ReadOnlyFilter/ReadOnlyFilter.spec.js +0 -36
  136. package/cjs/QueryBuilderRow/components/ReadOnlyLogicOperator/ReadOnlyLogicOperator.spec.d.ts +0 -1
  137. package/cjs/QueryBuilderRow/components/ReadOnlyLogicOperator/ReadOnlyLogicOperator.spec.js +0 -36
  138. package/cjs/ReadOnlyAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.d.ts +0 -1
  139. package/cjs/ReadOnlyAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.js +0 -50
  140. package/cjs/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.test.d.ts +0 -1
  141. package/cjs/ReadOnlyAttributesPager/components/MultiLineRenderer/MultiLineRenderer.test.js +0 -119
  142. package/cjs/ReadOnlyAttributesPager/components/OneLineRenderer/OneLineRenderer.test.d.ts +0 -1
  143. package/cjs/ReadOnlyAttributesPager/components/OneLineRenderer/OneLineRenderer.test.js +0 -112
  144. package/cjs/ReadOnlyAttributesPager/components/SpecialRenderer/SpecialRenderer.test.d.ts +0 -1
  145. package/cjs/ReadOnlyAttributesPager/components/SpecialRenderer/SpecialRenderer.test.js +0 -77
  146. package/cjs/RelationEditor/IntegrationRelationEditor.test.d.ts +0 -1
  147. package/cjs/RelationEditor/IntegrationRelationEditor.test.js +0 -342
  148. package/cjs/ReltioMap/components/MapControlContainer/MapControlContainer.d.ts +0 -10
  149. package/cjs/ReltioMap/components/MapControlContainer/MapControlContainer.js +0 -28
  150. package/cjs/ReltioMap/components/MapControlContainer/MapControlContainer.spec.d.ts +0 -1
  151. package/cjs/ReltioMap/components/MapControlContainer/MapControlContainer.spec.js +0 -38
  152. package/cjs/ReltioMap/components/MapControlContainer/index.d.ts +0 -1
  153. package/cjs/ReltioMap/components/MapControlContainer/index.js +0 -5
  154. package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.spec.d.ts +0 -1
  155. package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.spec.js +0 -41
  156. package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.spec.d.ts +0 -1
  157. package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.spec.js +0 -65
  158. package/cjs/Roles/components/Role/Role.test.d.ts +0 -1
  159. package/cjs/Roles/components/Role/Role.test.js +0 -60
@@ -46,106 +46,77 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  }
47
47
  };
48
48
  import React from 'react';
49
- import { mount } from 'enzyme';
50
- import { act } from 'react-dom/test-utils';
49
+ import { render, within, screen } from '@testing-library/react';
50
+ import userEvent from '@testing-library/user-event';
51
51
  import { markMixedEntitiesAsNotMatches, markDataTenantEntityAsNotMatch } from '@reltio/mdm-sdk';
52
52
  import { NotMatchButton } from './NotMatchButton';
53
- import { ActionButton } from '../ActionButton';
54
53
  import { ActionButtonMode } from '../types';
55
- import NotMatchIcon from '../icons/NotMatchDark';
56
54
  import { MdmModuleProvider } from '../contexts/MdmModuleContext';
57
55
  jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { markMixedEntitiesAsNotMatches: jest.fn(), markDataTenantEntityAsNotMatch: jest.fn() })); });
58
- var mdmValues = {
59
- dtssPath: 'dtssPath/',
60
- tenant: {
61
- id: 'test',
62
- name: 'test'
63
- }
64
- };
56
+ var mdmValues = { tenant: { id: 'test', name: 'test' }, dtssPath: 'dtssPath/' };
57
+ var defaultEntity = { uri: 'entities/123', type: 'entityType' };
58
+ var defaultEntities = [
59
+ { uri: 'entities/345', type: 'entityType' },
60
+ { uri: 'entities/678', type: 'entityType' }
61
+ ];
62
+ var defaultProps = { entity: defaultEntity, entities: defaultEntities };
65
63
  var setUp = function (props) {
66
- return mount(React.createElement(MdmModuleProvider, { values: mdmValues },
67
- React.createElement(NotMatchButton, __assign({}, props))));
64
+ if (props === void 0) { props = defaultProps; }
65
+ var user = userEvent.setup();
66
+ var Providers = function (_a) {
67
+ var children = _a.children;
68
+ return (React.createElement(MdmModuleProvider, { values: mdmValues }, children));
69
+ };
70
+ return __assign(__assign({}, render(React.createElement(NotMatchButton, __assign({}, props)), { wrapper: Providers })), { user: user });
68
71
  };
69
- describe('NotMatchButton component test', function () {
72
+ describe('Not match button tests', function () {
70
73
  beforeEach(function () {
74
+ markMixedEntitiesAsNotMatches.mockResolvedValue({ status: 'success' });
75
+ markDataTenantEntityAsNotMatch.mockResolvedValue({ status: 'success' });
76
+ });
77
+ afterEach(function () {
71
78
  jest.clearAllMocks();
72
- markMixedEntitiesAsNotMatches.mockImplementation(function () { return Promise.resolve({ status: 'success' }); });
73
- markDataTenantEntityAsNotMatch.mockImplementation(function () { return Promise.resolve({ status: 'success' }); });
74
79
  });
75
- var entity = { uri: 'entities/123', type: 'entityType' };
76
- var entities = [
77
- {
78
- uri: 'entities/345',
79
- type: 'entityType'
80
- },
81
- {
82
- uri: 'entities/678',
83
- type: 'entityType'
84
- }
85
- ];
86
80
  it('should render initial state correctly', function () {
87
- var mode = ActionButtonMode.button;
88
- var wrapper = setUp({ entity: entity, entities: entities, mode: mode });
89
- var button = wrapper.find(ActionButton);
90
- expect(button).toHaveLength(1);
91
- expect(button.props()).toMatchObject({
92
- disabled: false,
93
- label: 'Not a match',
94
- icon: NotMatchIcon,
95
- mode: mode
96
- });
81
+ var props = __assign(__assign({}, defaultProps), { mode: ActionButtonMode.button });
82
+ setUp(props);
83
+ var button = screen.getByRole('button');
84
+ expect(button).not.toBeDisabled();
85
+ within(button).getByTestId('SvgNotMatchDark');
86
+ within(button).getByText('Not a match');
97
87
  });
98
88
  it('should mark entities as not match to customer tenant entity on button click', function () { return __awaiter(void 0, void 0, void 0, function () {
99
- var wrapper, button;
89
+ var user;
100
90
  return __generator(this, function (_a) {
101
91
  switch (_a.label) {
102
92
  case 0:
103
- wrapper = setUp({ entity: entity, entities: entities });
104
- button = wrapper.find(ActionButton);
105
- expect(button).toHaveLength(1);
106
- return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
107
- return __generator(this, function (_a) {
108
- button.prop('onClick')();
109
- return [2 /*return*/];
110
- });
111
- }); })];
93
+ user = setUp().user;
94
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
112
95
  case 1:
113
96
  _a.sent();
114
97
  expect(markMixedEntitiesAsNotMatches).toHaveBeenCalledWith({
115
- dtssPath: 'dtssPath/',
116
98
  customerTenant: 'test',
117
- entity: entity,
118
- entities: entities
99
+ dtssPath: 'dtssPath/',
100
+ entities: defaultEntities,
101
+ entity: defaultEntity
119
102
  });
120
103
  return [2 /*return*/];
121
104
  }
122
105
  });
123
106
  }); });
124
107
  it('should mark entities as not match to data tenant entity on button click', function () { return __awaiter(void 0, void 0, void 0, function () {
125
- var entity, entities, wrapper, button;
108
+ var entity, entities, props, user;
126
109
  return __generator(this, function (_a) {
127
110
  switch (_a.label) {
128
111
  case 0:
129
- entity = { uri: 'entities/dt123', dataTenant: 'dt', type: 'entityType' };
112
+ entity = { uri: 'entities/dt123', type: 'entityType', dataTenant: 'dt1' };
130
113
  entities = [
131
- {
132
- uri: 'entities/ct345',
133
- type: 'entityType'
134
- },
135
- {
136
- uri: 'entities/ct678',
137
- type: 'entityType'
138
- }
114
+ { uri: 'entities/ct345', type: 'entityType' },
115
+ { uri: 'entities/ct678', type: 'entityType' }
139
116
  ];
140
- wrapper = setUp({ entity: entity, entities: entities });
141
- button = wrapper.find(ActionButton);
142
- expect(button).toHaveLength(1);
143
- return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
144
- return __generator(this, function (_a) {
145
- button.prop('onClick')();
146
- return [2 /*return*/];
147
- });
148
- }); })];
117
+ props = { entity: entity, entities: entities };
118
+ user = setUp(props).user;
119
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
149
120
  case 1:
150
121
  _a.sent();
151
122
  expect(markDataTenantEntityAsNotMatch).toHaveBeenCalledWith({
@@ -159,54 +130,34 @@ describe('NotMatchButton component test', function () {
159
130
  });
160
131
  }); });
161
132
  it('should call props.onSuccess if request is successful', function () { return __awaiter(void 0, void 0, void 0, function () {
162
- var onSuccess, wrapper, button;
133
+ var props, user;
163
134
  return __generator(this, function (_a) {
164
135
  switch (_a.label) {
165
136
  case 0:
166
- onSuccess = jest.fn();
167
- wrapper = setUp({ entity: entity, entities: entities, onSuccess: onSuccess });
168
- button = wrapper.find(ActionButton);
169
- expect(button).toHaveLength(1);
170
- return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
171
- return __generator(this, function (_a) {
172
- button.prop('onClick')();
173
- return [2 /*return*/];
174
- });
175
- }); })];
137
+ props = __assign(__assign({}, defaultProps), { onSuccess: jest.fn() });
138
+ user = setUp(props).user;
139
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
176
140
  case 1:
177
141
  _a.sent();
178
- expect(onSuccess).toHaveBeenCalled();
142
+ expect(props.onSuccess).toHaveBeenCalled();
179
143
  return [2 /*return*/];
180
144
  }
181
145
  });
182
146
  }); });
183
147
  it('should call props.onError on not match error', function () { return __awaiter(void 0, void 0, void 0, function () {
184
- var error, onError, wrapper, button;
148
+ var props, user;
185
149
  return __generator(this, function (_a) {
186
150
  switch (_a.label) {
187
151
  case 0:
188
- error = { errorMessage: 'not match failed' };
189
- markMixedEntitiesAsNotMatches.mockImplementation(function () { return Promise.reject(error); });
190
- onError = jest.fn();
191
- wrapper = setUp({ entity: entity, entities: entities, onError: onError });
192
- button = wrapper.find(ActionButton);
193
- expect(button).toHaveLength(1);
194
- return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
195
- return __generator(this, function (_a) {
196
- button.prop('onClick')();
197
- return [2 /*return*/];
198
- });
199
- }); })];
152
+ markMixedEntitiesAsNotMatches.mockRejectedValue({ errorMessage: 'not match failed' });
153
+ props = __assign(__assign({}, defaultProps), { onError: jest.fn() });
154
+ user = setUp(props).user;
155
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
200
156
  case 1:
201
157
  _a.sent();
202
- expect(onError).toHaveBeenCalledWith(error);
158
+ expect(props.onError).toHaveBeenCalledWith({ errorMessage: 'not match failed' });
203
159
  return [2 /*return*/];
204
160
  }
205
161
  });
206
162
  }); });
207
- it('button should have right label', function () {
208
- var wrapper = setUp({ entity: entity, entities: entities });
209
- var button = wrapper.find(ActionButton);
210
- expect(button.prop('label')).toBe('Not a match');
211
- });
212
163
  });
@@ -1,124 +1,140 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ 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);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
1
37
  import React from 'react';
2
- import { mount, shallow } from 'enzyme';
3
- import { getChartItemColor } from '@reltio/mdm-sdk';
38
+ import { render, waitFor, fireEvent, screen } from '@testing-library/react';
4
39
  import PieChartWithPercents, { PieChart } from './PieChart';
5
- import { Cell, Legend, Pie, PieChart as PieChartWidget, Tooltip } from 'recharts';
6
- import { ActiveShape } from './components/ActiveShape';
7
- describe('PieChart', function () {
40
+ describe('Pie chart tests', function () {
8
41
  var data = [
9
42
  { label: 'first', value: 1, percent: 1, group: '1' },
10
43
  { label: 'second', value: 2, percent: 2, group: '2' },
11
44
  { label: 'third', value: 3, percent: 3, group: '3' }
12
45
  ];
13
- var legendPayload = [
14
- {
15
- id: 'first',
16
- type: 'square',
17
- color: getChartItemColor('first'),
18
- value: 'first (1%)'
19
- },
20
- {
21
- id: 'second',
22
- type: 'square',
23
- color: getChartItemColor('second'),
24
- value: 'second (2%)'
25
- },
26
- {
27
- id: 'third',
28
- type: 'square',
29
- color: getChartItemColor('third'),
30
- value: 'third (3%)'
31
- }
32
- ];
33
- it('should render PieChartWidget', function () {
34
- var wrapper = shallow(React.createElement(PieChart, { width: 600, height: 300, data: data }));
35
- expect(wrapper.find(PieChartWidget)).toHaveLength(1);
36
- expect(wrapper.find(Pie)).toHaveLength(1);
37
- expect(wrapper.find(Cell)).toHaveLength(3);
38
- expect(wrapper.find(Legend)).toHaveLength(1);
39
- var cells = wrapper.find(Cell);
40
- expect(cells).toHaveLength(3);
41
- cells.forEach(function (item, index) {
42
- expect(item.prop('fill')).toBe(getChartItemColor(data[index].label));
46
+ it('should render correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
47
+ var container, chart, legend, legendItems, sectors;
48
+ return __generator(this, function (_a) {
49
+ switch (_a.label) {
50
+ case 0:
51
+ container = render(React.createElement(PieChart, { width: 600, height: 300, data: data })).container;
52
+ return [4 /*yield*/, waitFor(function () { return expect(container.querySelector('.recharts-pie-sector')).toBeInTheDocument(); })];
53
+ case 1:
54
+ _a.sent();
55
+ chart = container.querySelector('.recharts-surface');
56
+ expect(chart).toHaveAttribute('width', '600');
57
+ expect(chart).toHaveAttribute('height', '300');
58
+ legend = container.querySelector('.recharts-legend-wrapper');
59
+ legendItems = legend.querySelectorAll('.item');
60
+ expect(legendItems).toHaveLength(3);
61
+ expect(legendItems[0]).toHaveTextContent('first (1%)');
62
+ expect(legendItems[1]).toHaveTextContent('second (2%)');
63
+ expect(legendItems[2]).toHaveTextContent('third (3%)');
64
+ sectors = container.querySelectorAll('.recharts-pie-sector');
65
+ expect(sectors).toHaveLength(3);
66
+ return [2 /*return*/];
67
+ }
43
68
  });
44
- });
45
- it('should render Legend when props.options.showLegend = true', function () {
46
- var wrapper = shallow(React.createElement(PieChart, { width: 600, height: 300, data: data }));
47
- expect(wrapper.find(Legend)).toHaveLength(1);
48
- expect(wrapper.find(Legend).prop('payload')).toStrictEqual(legendPayload);
49
- var options = {
50
- showLegend: false
51
- };
52
- wrapper.setProps({ options: options });
53
- expect(wrapper.find(Legend)).toHaveLength(0);
54
- });
55
- it('should render ActiveShape or Tooltip depending on props.options.showActiveShape', function () {
56
- var wrapper = shallow(React.createElement(PieChart, { width: 600, height: 300, data: data }));
57
- expect(wrapper.find(PieChartWidget)).toHaveLength(1);
58
- expect(wrapper.find(Tooltip)).toHaveLength(1);
59
- var pie = wrapper.find(Pie);
60
- expect(pie).toHaveLength(1);
61
- expect(pie.prop('activeShape')).toBe(undefined);
62
- expect(pie.prop('onMouseEnter')).toBe(undefined);
63
- expect(pie.prop('onMouseLeave')).toBe(undefined);
64
- expect(pie.prop('outerRadius')).toBe('80%');
65
- var options = {
66
- showActiveShape: true
67
- };
68
- wrapper.setProps({ options: options });
69
- var updatedPie = wrapper.find(Pie);
70
- expect(updatedPie).toHaveLength(1);
71
- expect(wrapper.find(Tooltip)).toHaveLength(0);
72
- expect(updatedPie.prop('activeShape')).toBe(ActiveShape);
73
- expect(updatedPie.prop('onMouseEnter')).not.toBe(undefined);
74
- expect(updatedPie.prop('onMouseLeave')).not.toBe(undefined);
75
- expect(updatedPie.prop('outerRadius')).toBe('70%');
76
- });
77
- it('should render donut chart or pie chart depending on props.isDonut', function () {
78
- var wrapper = shallow(React.createElement(PieChart, { width: 600, height: 300, data: data }));
79
- expect(wrapper.find(Pie).prop('innerRadius')).toBe(0);
80
- wrapper.setProps({ isDonut: true });
81
- expect(wrapper.find(Pie).prop('innerRadius')).toBe('60%');
82
- var options = {
83
- showActiveShape: true
84
- };
85
- wrapper.setProps({ options: options });
86
- expect(wrapper.find(Pie).prop('innerRadius')).toBe('50%');
87
- });
88
- it('should call props.onItemClick on sector click', function () {
89
- jest.useFakeTimers();
90
- var onItemClick = jest.fn();
91
- var wrapper = mount(React.createElement(PieChart, { width: 600, height: 300, data: data, onItemClick: onItemClick }));
92
- jest.runAllTimers();
93
- wrapper.update();
94
- var sector = wrapper.find('.recharts-pie-sector').first();
95
- sector.simulate('click');
96
- expect(onItemClick).toHaveBeenCalledWith('1');
97
- jest.useRealTimers();
98
- });
99
- it('should render chart legend with percents correctly', function () {
100
- var legendPayload = [
101
- {
102
- id: 'first',
103
- type: 'square',
104
- color: getChartItemColor('first'),
105
- value: 'first (16.7%)'
106
- },
107
- {
108
- id: 'second',
109
- type: 'square',
110
- color: getChartItemColor('second'),
111
- value: 'second (33.3%)'
112
- },
113
- {
114
- id: 'third',
115
- type: 'square',
116
- color: getChartItemColor('third'),
117
- value: 'third (50%)'
69
+ }); });
70
+ it('should not render legend if showLegend prop is false', function () { return __awaiter(void 0, void 0, void 0, function () {
71
+ var container;
72
+ return __generator(this, function (_a) {
73
+ switch (_a.label) {
74
+ case 0:
75
+ container = render(React.createElement(PieChart, { width: 600, height: 300, data: data, options: { showLegend: false } })).container;
76
+ return [4 /*yield*/, waitFor(function () { return expect(container.querySelector('.recharts-pie-sector')).toBeInTheDocument(); })];
77
+ case 1:
78
+ _a.sent();
79
+ expect(container.querySelector('.recharts-legend-wrapper')).not.toBeInTheDocument();
80
+ return [2 /*return*/];
118
81
  }
119
- ];
120
- var wrapper = mount(React.createElement(PieChartWithPercents, { width: 600, height: 300, data: data }));
121
- expect(wrapper.find(Legend)).toHaveLength(1);
122
- expect(wrapper.find(Legend).prop('payload')).toStrictEqual(legendPayload);
123
- });
82
+ });
83
+ }); });
84
+ it('should handle hover correctly if showActiveShape is true', function () { return __awaiter(void 0, void 0, void 0, function () {
85
+ var container, tooltip;
86
+ return __generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0:
89
+ container = render(React.createElement(PieChart, { width: 600, height: 300, data: data, isDonut: true })).container;
90
+ return [4 /*yield*/, waitFor(function () { return expect(container.querySelector('.recharts-pie-sector')).toBeInTheDocument(); })];
91
+ case 1:
92
+ _a.sent();
93
+ // eslint-disable-next-line testing-library/prefer-user-event
94
+ fireEvent.mouseEnter(container.querySelector('.recharts-pie-sector'));
95
+ tooltip = screen.getByTestId('chart-tooltip');
96
+ expect(tooltip).toHaveTextContent('first1 (1%)');
97
+ // eslint-disable-next-line testing-library/prefer-user-event
98
+ fireEvent.mouseLeave(container.querySelector('.recharts-pie-sector'));
99
+ expect(tooltip).not.toBeInTheDocument();
100
+ return [2 /*return*/];
101
+ }
102
+ });
103
+ }); });
104
+ it('should call props.onItemClick on sector click', function () { return __awaiter(void 0, void 0, void 0, function () {
105
+ var onItemClick, container;
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0:
109
+ onItemClick = jest.fn();
110
+ container = render(React.createElement(PieChart, { width: 600, height: 300, data: data, onItemClick: onItemClick })).container;
111
+ return [4 /*yield*/, waitFor(function () { return expect(container.querySelector('.recharts-pie-sector')).toBeInTheDocument(); })];
112
+ case 1:
113
+ _a.sent();
114
+ // eslint-disable-next-line testing-library/prefer-user-event
115
+ fireEvent.click(container.querySelector('.recharts-pie-sector'));
116
+ expect(onItemClick).toHaveBeenCalledWith('1');
117
+ return [2 /*return*/];
118
+ }
119
+ });
120
+ }); });
121
+ it('should render chart legend with percents correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
122
+ var container, legend, legendItems;
123
+ return __generator(this, function (_a) {
124
+ switch (_a.label) {
125
+ case 0:
126
+ container = render(React.createElement(PieChartWithPercents, { width: 600, height: 300, data: data })).container;
127
+ return [4 /*yield*/, waitFor(function () { return expect(container.querySelector('.recharts-pie-sector')).toBeInTheDocument(); })];
128
+ case 1:
129
+ _a.sent();
130
+ legend = container.querySelector('.recharts-legend-wrapper');
131
+ legendItems = legend.querySelectorAll('.item');
132
+ expect(legendItems).toHaveLength(3);
133
+ expect(legendItems[0]).toHaveTextContent('first (16.7%)');
134
+ expect(legendItems[1]).toHaveTextContent('second (33.3%)');
135
+ expect(legendItems[2]).toHaveTextContent('third (50%)');
136
+ return [2 /*return*/];
137
+ }
138
+ });
139
+ }); });
124
140
  });
@@ -1,29 +1,96 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
1
48
  import React from 'react';
2
- import { mount } from 'enzyme';
3
- import PinIcon from '../icons/Pin';
4
- import PinOutlinedIcon from '../icons/PinOutlined';
5
- import { SmallIconButtonWithTooltip } from '../SmallIconButton';
49
+ import { render, screen } from '@testing-library/react';
50
+ import userEvent from '@testing-library/user-event';
6
51
  import { PinButton } from './PinButton';
7
- describe('Pin button test', function () {
8
- var component, onClickFn;
9
- var getButton = function (component) { return component.find(SmallIconButtonWithTooltip); };
10
- beforeEach(function () {
11
- onClickFn = jest.fn();
12
- component = mount(React.createElement(PinButton, { isPinned: false, onClick: onClickFn }));
52
+ var defaultProps = { isPinned: false, onClick: jest.fn() };
53
+ var setUp = function (props) {
54
+ if (props === void 0) { props = defaultProps; }
55
+ var user = userEvent.setup();
56
+ return __assign(__assign({}, render(React.createElement(PinButton, __assign({}, props)))), { user: user });
57
+ };
58
+ describe('Pin button tests', function () {
59
+ afterEach(function () {
60
+ jest.clearAllMocks();
13
61
  });
14
- it('should pass button props correctly', function () {
15
- expect(getButton(component).prop('onClick')).toBe(onClickFn);
16
- component.setProps({ disabled: true });
17
- expect(getButton(component).prop('disabled')).toBe(true);
62
+ it('should render correctly in basic case', function () {
63
+ setUp();
64
+ screen.getByLabelText('Pin');
65
+ expect(screen.getByRole('button')).not.toBeDisabled();
66
+ screen.getByTestId('SvgPinOutlined');
18
67
  });
19
- it('should show correct icon', function () {
20
- expect(getButton(component).prop('icon')).toBe(PinOutlinedIcon);
21
- component.setProps({ isPinned: true });
22
- expect(getButton(component).prop('icon')).toBe(PinIcon);
68
+ it('should render correctly if disabled prop is true', function () {
69
+ var props = __assign(__assign({}, defaultProps), { disabled: true });
70
+ setUp(props);
71
+ screen.getByLabelText("You don't have permissions to pin");
72
+ expect(screen.getByRole('button')).toBeDisabled();
73
+ screen.getByTestId('SvgPinOutlined');
23
74
  });
24
- it('should show correct tooltip', function () {
25
- expect(getButton(component).prop('tooltipTitle')).toBe('Pin');
26
- component.setProps({ disabled: true });
27
- expect(getButton(component).prop('tooltipTitle')).toBe("You don't have permissions to pin");
75
+ it('should render correctly if isPinned prop is true', function () {
76
+ var props = __assign(__assign({}, defaultProps), { isPinned: true });
77
+ setUp(props);
78
+ screen.getByLabelText('Pin');
79
+ expect(screen.getByRole('button')).not.toBeDisabled();
80
+ screen.getByTestId('SvgPin');
28
81
  });
82
+ it('should call onClick handler on button click', function () { return __awaiter(void 0, void 0, void 0, function () {
83
+ var user;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0:
87
+ user = setUp().user;
88
+ return [4 /*yield*/, user.click(screen.getByRole('button'))];
89
+ case 1:
90
+ _a.sent();
91
+ expect(defaultProps.onClick).toHaveBeenCalled();
92
+ return [2 /*return*/];
93
+ }
94
+ });
95
+ }); });
29
96
  });