@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
@@ -1,58 +1,122 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ 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);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
2
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
40
  };
5
41
  Object.defineProperty(exports, "__esModule", { value: true });
6
42
  var react_1 = __importDefault(require("react"));
7
- var enzyme_1 = require("enzyme");
8
- var TextField_1 = __importDefault(require("@mui/material/TextField"));
43
+ var react_2 = require("@testing-library/react");
44
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
9
45
  var MenuItem_1 = __importDefault(require("@mui/material/MenuItem"));
10
- var ValueChip_1 = require("../ValueChip");
11
46
  var MultipliableSelect_1 = require("./MultipliableSelect");
12
- describe('MultipliableSelect', function () {
13
- describe('single mode', function () {
14
- it('should render MUI TextField with string value', function () {
15
- var value = '1';
16
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { value: value },
17
- react_1.default.createElement(MenuItem_1.default, { value: "1" })));
18
- expect(wrapper.find(TextField_1.default)).toHaveLength(1);
19
- expect(wrapper.text()).toBe(value);
20
- });
21
- it('should call props.onChange on select change', function () {
22
- var onChange = jest.fn();
23
- var value = '1';
24
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { onChange: onChange },
25
- react_1.default.createElement("div", null)));
26
- wrapper.find(TextField_1.default).simulate('change', { target: { value: value } });
27
- expect(onChange).toHaveBeenCalledWith(value);
47
+ var test_utils_1 = require("../test-utils");
48
+ describe('Multipliable select tests', function () {
49
+ it('should render and work correctly in single mode', function () { return __awaiter(void 0, void 0, void 0, function () {
50
+ var user, onChange, popover, options;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0:
54
+ user = user_event_1.default.setup();
55
+ onChange = jest.fn();
56
+ (0, react_2.render)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { value: "orange", onChange: onChange },
57
+ react_1.default.createElement(MenuItem_1.default, { value: "orange" }, "Orange"),
58
+ react_1.default.createElement(MenuItem_1.default, { value: "lemon" }, "Lemon")));
59
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button', { name: 'orange' }))];
60
+ case 1:
61
+ _a.sent();
62
+ popover = react_2.screen.getByRole('presentation');
63
+ options = react_2.screen.getAllByRole('option');
64
+ expect(options).toHaveLength(2);
65
+ expect(options[0]).toHaveTextContent('Orange');
66
+ expect(options[1]).toHaveTextContent('Lemon');
67
+ return [4 /*yield*/, user.click(options[1])];
68
+ case 2:
69
+ _a.sent();
70
+ expect(onChange).toHaveBeenCalledWith('lemon');
71
+ expect(popover).not.toBeInTheDocument();
72
+ return [2 /*return*/];
73
+ }
28
74
  });
29
- });
30
- describe('multiple mode', function () {
31
- it('should render MUI TextField with chip values', function () {
32
- var value = ['1', '2', '3'];
33
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { multiple: true, value: value },
34
- react_1.default.createElement("div", null)));
35
- expect(wrapper.find(TextField_1.default).prop('SelectProps').multiple).toBe(true);
36
- expect(wrapper.find(ValueChip_1.ValueChip)).toHaveLength(value.length);
37
- wrapper.find(ValueChip_1.ValueChip).forEach(function (n, i) {
38
- expect(n.prop('label')).toBe(value[i]);
39
- });
40
- });
41
- it('should call props.onChange on select change', function () {
42
- var onChange = jest.fn();
43
- var value = ['1'];
44
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { multiple: true, onChange: onChange },
45
- react_1.default.createElement("div", null)));
46
- wrapper.find(TextField_1.default).simulate('change', { target: { value: value } });
47
- expect(onChange).toHaveBeenCalledWith(value);
75
+ }); });
76
+ it('should render and work correctly in multiple mode', function () { return __awaiter(void 0, void 0, void 0, function () {
77
+ var user, onChange, button, chips, popover, options;
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
80
+ case 0:
81
+ user = user_event_1.default.setup();
82
+ onChange = jest.fn();
83
+ (0, react_2.render)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { multiple: true, value: ['orange', 'apple'], onChange: onChange },
84
+ react_1.default.createElement(MenuItem_1.default, { value: "orange" }, "Orange"),
85
+ react_1.default.createElement(MenuItem_1.default, { value: "lemon" }, "Lemon"),
86
+ react_1.default.createElement(MenuItem_1.default, { value: "kiwi" }, "Kiwi"),
87
+ react_1.default.createElement(MenuItem_1.default, { value: "apple" }, "Apple"),
88
+ react_1.default.createElement(MenuItem_1.default, { value: "banana" }, "Banana")));
89
+ button = react_2.screen.getAllByRole('button')[0];
90
+ chips = (0, react_2.within)(button).getAllByRole('button');
91
+ expect(chips).toHaveLength(2);
92
+ expect(chips[0]).toHaveTextContent('orange');
93
+ expect(chips[1]).toHaveTextContent('apple');
94
+ return [4 /*yield*/, user.click((0, test_utils_1.getMuiIconByName)('Cancel', chips[1]))];
95
+ case 1:
96
+ _a.sent();
97
+ expect(onChange).toHaveBeenCalledWith(['orange']);
98
+ return [4 /*yield*/, user.click(button)];
99
+ case 2:
100
+ _a.sent();
101
+ popover = react_2.screen.getByRole('presentation');
102
+ options = react_2.screen.getAllByRole('option');
103
+ expect(options).toHaveLength(5);
104
+ expect(options[0]).toHaveTextContent('Orange');
105
+ expect(options[1]).toHaveTextContent('Lemon');
106
+ expect(options[2]).toHaveTextContent('Kiwi');
107
+ expect(options[3]).toHaveTextContent('Apple');
108
+ expect(options[4]).toHaveTextContent('Banana');
109
+ return [4 /*yield*/, user.click(options[4])];
110
+ case 3:
111
+ _a.sent();
112
+ expect(onChange).toHaveBeenCalledWith(['orange', 'apple', 'banana']);
113
+ expect(popover).toBeInTheDocument();
114
+ return [4 /*yield*/, user.keyboard('{Escape}')];
115
+ case 4:
116
+ _a.sent();
117
+ expect(popover).not.toBeInTheDocument();
118
+ return [2 /*return*/];
119
+ }
48
120
  });
49
- it('should call props.onChange on Chip deletion', function () {
50
- var value = ['1', '2', '3'];
51
- var onChange = jest.fn();
52
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(MultipliableSelect_1.MultipliableSelect, { multiple: true, value: value, onChange: onChange },
53
- react_1.default.createElement("div", null)));
54
- wrapper.find(ValueChip_1.ValueChip).at(1).prop('onDelete')();
55
- expect(onChange).toHaveBeenCalledWith(['1', '3']);
56
- });
57
- });
121
+ }); });
58
122
  });
@@ -10,72 +10,151 @@ 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");
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
19
57
  var NestedAttribute_1 = __importDefault(require("./NestedAttribute"));
20
58
  var nestedAttrType_test_data_1 = require("./nestedAttrType.test-data");
21
59
  var nestedAttrValue_test_data_1 = require("./nestedAttrValue.test-data");
22
- var ReadOnlyComplexAttribute_1 = require("../ReadOnlyComplexAttribute");
23
60
  var HistoryAppearanceContext_1 = require("../contexts/HistoryAppearanceContext");
24
61
  var SearchValueContext_1 = require("../contexts/SearchValueContext");
25
62
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
26
- var PivotingTooltip_1 = require("../PivotingTooltip");
27
- var SearchHighlighter_1 = require("../SearchHighlighter");
63
+ var PivotingAttributeContext_1 = require("../contexts/PivotingAttributeContext");
64
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getFilteredEntities: jest.fn(), getTotals: jest.fn() })); });
28
65
  var mdmValues = {
29
66
  collaborationPath: 'https://cservice-dev.reltio.com/reltio-collaboration/tst-01',
30
67
  uiPath: 'https://localhost:3000/ui/aleant',
31
- metadata: {}
32
- };
33
- var mdmActions = {
34
- openPivotingPerspective: function () { }
68
+ metadata: {
69
+ entityTypes: [],
70
+ relationTypes: [
71
+ {
72
+ uri: 'configuration/relationTypes/InternalHCPtoHCP',
73
+ label: 'HCP to HCP',
74
+ attributes: [nestedAttrType_test_data_1.nestedAttributeType]
75
+ }
76
+ ]
77
+ }
35
78
  };
36
79
  var defaultProps = {
37
80
  attributeValue: nestedAttrValue_test_data_1.nestedAttributeValue,
38
81
  attributeType: nestedAttrType_test_data_1.nestedAttributeType
39
82
  };
40
83
  var setUp = function (_a) {
41
- var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? defaultProps : _c, _d = _b.CustomProviders, CustomProviders = _d === void 0 ? react_1.default.Fragment : _d;
42
- return (0, enzyme_1.mount)(react_1.default.createElement(CustomProviders, null,
43
- react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: mdmActions },
44
- react_1.default.createElement(NestedAttribute_1.default, __assign({}, props)))));
84
+ var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? defaultProps : _c, _d = _b.pivotingAttributeContextValue, pivotingAttributeContextValue = _d === void 0 ? [] : _d, _e = _b.searchValueContextValue, searchValueContextValue = _e === void 0 ? '' : _e, _f = _b.historyDiffContext, historyDiffContext = _f === void 0 ? { appearance: {}, attributes: {}, roles: [], tags: [] } : _f;
85
+ var user = user_event_1.default.setup();
86
+ var Providers = function (_a) {
87
+ var children = _a.children;
88
+ return (react_1.default.createElement(HistoryAppearanceContext_1.HistoryDiffContext.Provider, { value: historyDiffContext },
89
+ react_1.default.createElement(PivotingAttributeContext_1.PivotingAttributeContext.Provider, { value: pivotingAttributeContextValue },
90
+ react_1.default.createElement(SearchValueContext_1.SearchValueContext.Provider, { value: searchValueContextValue },
91
+ react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues }, children)))));
92
+ };
93
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(NestedAttribute_1.default, __assign({}, props)), { wrapper: Providers })), { user: user });
45
94
  };
46
- describe('read mode NestedAttribute', function () {
47
- var getComplexAttribute = function (component) { return component.find(ReadOnlyComplexAttribute_1.ReadOnlyComplexAttribute); };
48
- it('should provide props to ComplexAttribute correctly', function () {
49
- var component = setUp();
50
- var complexAttribute = getComplexAttribute(component);
51
- expect(component.find(PivotingTooltip_1.PivotingTooltip).text()).toBe(nestedAttrValue_test_data_1.nestedAttributeValue.label);
52
- expect(complexAttribute.prop('attributeValue')).toBe(nestedAttrValue_test_data_1.nestedAttributeValue);
53
- expect(complexAttribute.prop('attributeTypesList')).toBe(nestedAttrType_test_data_1.nestedAttributeType.attributes);
95
+ describe('read mode nested attribute', function () {
96
+ beforeEach(function () {
97
+ mdm_sdk_1.getFilteredEntities.mockResolvedValue([]);
98
+ mdm_sdk_1.getTotals.mockRejectedValue({ total: 0 });
54
99
  });
100
+ it('should render correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
101
+ var user, nestedAttribute, subNestedAttribute;
102
+ return __generator(this, function (_a) {
103
+ switch (_a.label) {
104
+ case 0:
105
+ user = setUp().user;
106
+ react_2.screen.getByText('Nested 1 Label');
107
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
108
+ case 1:
109
+ _a.sent();
110
+ nestedAttribute = react_2.screen.getByTestId('branch-decorator');
111
+ (0, react_2.within)(nestedAttribute).getByText('Sub Nested');
112
+ (0, react_2.within)(nestedAttribute).getByText('SubNested 1 Label');
113
+ return [4 /*yield*/, user.click((0, react_2.within)(nestedAttribute).getByTestId('arrow-expand-button'))];
114
+ case 2:
115
+ _a.sent();
116
+ subNestedAttribute = (0, react_2.within)(nestedAttribute).getByTestId('branch-decorator');
117
+ (0, react_2.within)(subNestedAttribute).getByText('Sub Sub Nested');
118
+ (0, react_2.within)(subNestedAttribute).getByText('SubSubNested 1 Label');
119
+ return [4 /*yield*/, user.click((0, react_2.within)(subNestedAttribute).getByTestId('arrow-expand-button'))];
120
+ case 3:
121
+ _a.sent();
122
+ (0, react_2.within)(subNestedAttribute).getByText('Attribute Value');
123
+ (0, react_2.within)(subNestedAttribute).getByText('12321');
124
+ return [2 /*return*/];
125
+ }
126
+ });
127
+ }); });
55
128
  it('should provide history className', function () {
56
129
  var _a;
57
- var appearance = (_a = {},
58
- _a[nestedAttrValue_test_data_1.nestedAttributeValue.value.SubNested[0].uri] = 'INSERT_ATTRIBUTE',
59
- _a);
60
- var Providers = function (_a) {
61
- var children = _a.children;
62
- return (react_1.default.createElement(HistoryAppearanceContext_1.HistoryDiffContext.Provider, { value: { appearance: appearance } }, children));
63
- };
64
- var component = setUp({ CustomProviders: Providers });
65
- expect(component.find(PivotingTooltip_1.PivotingTooltip).find('.updateAttribute').length).toBeTruthy();
66
- });
67
- it('should render PivotingTooltip', function () {
68
- var component = setUp();
69
- expect(component.find(PivotingTooltip_1.PivotingTooltip).length).toEqual(1);
130
+ var appearance = (_a = {}, _a[nestedAttrValue_test_data_1.nestedAttributeValue.value.SubNested[0].uri] = 'INSERT_ATTRIBUTE', _a);
131
+ var historyDiffContext = { appearance: appearance, attributes: {}, roles: [], tags: [] };
132
+ setUp({ historyDiffContext: historyDiffContext });
133
+ expect(react_2.screen.getByText('Nested 1 Label')).toHaveClass('updateAttribute');
70
134
  });
71
- it('should render PivotingTooltip with highlights', function () {
72
- var highlightedValue = '1';
73
- var Providers = function (_a) {
74
- var children = _a.children;
75
- return (react_1.default.createElement(SearchValueContext_1.SearchValueContext.Provider, { value: highlightedValue }, children));
76
- };
77
- var component = setUp({ CustomProviders: Providers });
78
- expect(component.find(SearchHighlighter_1.SearchHighlighter).prop('text')).toBe('Nested 1 Label');
79
- expect(component.find(PivotingTooltip_1.PivotingTooltip).length).toEqual(1);
135
+ it('should render pivoting tooltip correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
136
+ var pivotingAttributeContextValue, user, popper;
137
+ return __generator(this, function (_a) {
138
+ switch (_a.label) {
139
+ case 0:
140
+ pivotingAttributeContextValue = [
141
+ { uri: 'configuration/relationTypes/InternalHCPtoHCP/attributes/AdditionalAttributes' }
142
+ ];
143
+ user = setUp({ pivotingAttributeContextValue: pivotingAttributeContextValue }).user;
144
+ return [4 /*yield*/, user.hover(react_2.screen.getByText('Nested 1 Label'))];
145
+ case 1:
146
+ _a.sent();
147
+ popper = react_2.screen.getByRole('tooltip');
148
+ (0, react_2.within)(popper).getByText('Pivot profiles');
149
+ (0, react_2.within)(popper).getByText('0 items');
150
+ return [2 /*return*/];
151
+ }
152
+ });
153
+ }); });
154
+ it('should render label with highlights', function () {
155
+ setUp({ searchValueContextValue: 'ted' });
156
+ var label = react_2.screen.getByTestId('reltio-attribute-complex-label');
157
+ expect(label).toHaveTextContent('Nested 1 Label');
158
+ expect((0, react_2.within)(label).getByText('ted')).toHaveClass('highlightedText');
80
159
  });
81
160
  });
@@ -15,56 +15,110 @@ 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");
18
+ var react_2 = require("@testing-library/react");
19
19
  var NestedAttributeEditor_1 = require("./NestedAttributeEditor");
20
- var EditModeComplexAttribute_1 = require("../EditModeComplexAttribute");
21
20
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
21
+ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
22
22
  jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { evaluateDeepEntityLabel: jest.fn(), getLabel: jest.fn() })); });
23
- describe('NestedAttributeEditor', function () {
24
- it('should render EditModeComplexAttribute with specified label and attributes', function () {
25
- var props = {
26
- attributeType: {
27
- type: 'Nested',
28
- attributes: [{}, {}]
29
- },
30
- attributeValue: {}
23
+ var mdmValues = {
24
+ dependentLookups: { editors: {}, structure: {}, initedTypeUris: [] }
25
+ };
26
+ var setUp = function (props) {
27
+ var Providers = function (_a) {
28
+ var children = _a.children;
29
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues }, children));
30
+ };
31
+ return (0, react_2.render)(react_1.default.createElement(NestedAttributeEditor_1.NestedAttributeEditor, __assign({}, props)), { wrapper: Providers });
32
+ };
33
+ describe('Nested attribute editor tests', function () {
34
+ it('should render correctly with attributes', function () {
35
+ var attributeType = {
36
+ uri: 'configuration/entityTypes/HCP/attributes/NestedTest',
37
+ type: 'Nested',
38
+ name: 'NestedTest',
39
+ label: 'Nested Test',
40
+ attributes: [
41
+ {
42
+ uri: 'configuration/entityTypes/HCP/attributes/NestedTest/attributes/FirstName',
43
+ type: 'String',
44
+ name: 'FirstName',
45
+ label: 'First Name'
46
+ }
47
+ ]
31
48
  };
32
- var label = 'Label123';
33
- mdm_sdk_1.evaluateDeepEntityLabel.mockReturnValue(label);
34
- mdm_sdk_1.getLabel.mockReturnValue(label);
35
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(NestedAttributeEditor_1.NestedAttributeEditor, __assign({}, props)));
36
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
37
- expect(complex.length).toBe(1);
38
- expect(complex.prop('label')).toBe(label);
39
- expect(complex.prop('attributeValue')).toBe(props.attributeValue);
40
- expect(complex.prop('attributeType')).toBe(props.attributeType);
41
- expect(complex.prop('attributeTypesList')).toBe(props.attributeType.attributes);
42
- });
43
- it('should use analyticsAttributes if there are no attributes in attribute type', function () {
44
49
  var props = {
45
- attributeType: {
46
- type: 'Nested',
47
- analyticsAttributes: [{}, {}]
50
+ mode: mdm_sdk_1.Mode.Editing,
51
+ expanded: true,
52
+ metadata: {
53
+ entityTypes: [{ uri: 'configuration/entityTypes/HCP', label: 'HCP', attributes: [attributeType] }]
54
+ },
55
+ onAddAttributes: jest.fn(),
56
+ onDeleteAttribute: jest.fn(),
57
+ onChangeAttribute: jest.fn(),
58
+ additionalControlsRenderer: function () { return null; },
59
+ attributeValue: {
60
+ uri: 'entities/rhW31Ms7/attributes/NestedTest/72NsbAsm9',
61
+ type: 'configuration/entityTypes/HCP/attributes/NestedTest',
62
+ value: {
63
+ FirstName: [
64
+ {
65
+ uri: 'entities/rhW31Ms7/attributes/NestedTest/72NsbAsm9/FirstName/91NsaK26',
66
+ value: 'first name value'
67
+ }
68
+ ]
69
+ }
48
70
  },
49
- attributeValue: {}
71
+ attributeType: attributeType
50
72
  };
51
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(NestedAttributeEditor_1.NestedAttributeEditor, __assign({}, props)));
52
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
53
- expect(complex.length).toBe(1);
54
- expect(complex.prop('attributeTypesList')).toBe(props.attributeType.analyticsAttributes);
55
- expect(complex.prop('expanded')).toBeFalsy();
73
+ setUp(props);
74
+ react_2.screen.getByText('More attributes');
75
+ react_2.screen.getByText('First Name');
76
+ expect(react_2.screen.getByRole('textbox')).toHaveValue('first name value');
56
77
  });
57
- it('should pass extended prop to ComplexAttribute', function () {
78
+ it('should render correctly with analytics attributes', function () {
79
+ var attributeType = {
80
+ uri: 'configuration/entityTypes/HCP/analyticsAttributes/IQ',
81
+ type: 'Nested',
82
+ name: 'IQ',
83
+ label: 'IQ',
84
+ analyticsAttributes: [
85
+ {
86
+ uri: 'configuration/entityTypes/HCP/analyticsAttributes/IQ/analyticsAttributes/score',
87
+ type: 'Int',
88
+ name: 'score',
89
+ label: 'IQ Score'
90
+ }
91
+ ]
92
+ };
58
93
  var props = {
59
- attributeType: {
60
- type: 'Nested'
94
+ mode: mdm_sdk_1.Mode.Editing,
95
+ expanded: true,
96
+ metadata: {
97
+ entityTypes: [
98
+ { uri: 'configuration/entityTypes/HCP', label: 'HCP', analyticsAttributes: [attributeType] }
99
+ ]
100
+ },
101
+ onAddAttributes: jest.fn(),
102
+ onDeleteAttribute: jest.fn(),
103
+ onChangeAttribute: jest.fn(),
104
+ additionalControlsRenderer: function () { return null; },
105
+ attributeValue: {
106
+ uri: 'entities/rhW31Ms7/analyticsAttributes/IQ/72NsbAsm9',
107
+ type: 'configuration/entityTypes/HCP/attributes/IQ',
108
+ value: {
109
+ score: [
110
+ {
111
+ uri: 'entities/rhW31Ms7/attributes/IQ/72NsbAsm9/score/91NsaK26',
112
+ value: 100
113
+ }
114
+ ]
115
+ }
61
116
  },
62
- attributeValue: {},
63
- expanded: true
117
+ attributeType: attributeType
64
118
  };
65
- var component = (0, enzyme_1.shallow)(react_1.default.createElement(NestedAttributeEditor_1.NestedAttributeEditor, __assign({}, props)));
66
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
67
- expect(complex.length).toBe(1);
68
- expect(complex.prop('expanded')).toBeTruthy();
119
+ setUp(props);
120
+ expect(react_2.screen.queryByText('More attributes')).not.toBeInTheDocument();
121
+ react_2.screen.getByText('IQ Score');
122
+ react_2.screen.getByText('100');
69
123
  });
70
124
  });