@reltio/components 1.4.2044 → 1.4.2046

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 (175) hide show
  1. package/AttributesFiltersBuilder/AttributesFiltersBuilder.test.js +72 -50
  2. package/BasicTable/BasicTable.test.js +232 -278
  3. package/BlobRenderer/BlobRenderer.js +1 -1
  4. package/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.test.js +125 -111
  5. package/DateIntervalSelector/DateIntervalSelector.test.js +87 -65
  6. package/DefaultCellValueRenderer/DefaultCellValueRenderer.js +1 -1
  7. package/DefaultCellValueRenderer/DefaultCellValueRenderer.test.js +16 -46
  8. package/DeleteButton/DeleteButton.spec.js +53 -15
  9. package/DependentLookupEditor/DependentLookupEditor.test.js +555 -807
  10. package/Drawer/Drawer.test.js +9 -20
  11. package/DropDownEditor/DropDownEditor.test.js +81 -29
  12. package/DropDownMenuButton/DropDownMenuButton.spec.js +101 -70
  13. package/DropDownSelector/DropDownSelector.test.js +159 -30
  14. package/EditModeAttributesFactory/EditModeAttributesFactory.test.js +143 -0
  15. package/EditModeAttributesList/EditModeAttributesList.test.js +277 -224
  16. package/EditModeAttributesList/attributes.test-data.d.ts +0 -11
  17. package/EditModeAttributesList/attributes.test-data.js +1 -1
  18. package/EditModeAttributesPager/EditModeAttributesPager.test.js +698 -234
  19. package/EditModeAttributesPager/helpers.test.js +2 -12
  20. package/EditModeAttributesView/EditModeAttributesView.test.js +263 -157
  21. package/EditModeComplexAttribute/EditModeComplexAttribute.js +1 -1
  22. package/EditModeComplexAttribute/EditModeComplexAttribute.test.js +313 -298
  23. package/EditModeComplexAttribute/nestedAttrType.test-data.d.ts +0 -5
  24. package/EditModeComplexAttribute/nestedAttrType.test-data.js +3 -44
  25. package/EmptyState/EmptyState.test.js +99 -38
  26. package/EntityCreator/EntityCreator.test.js +68 -35
  27. package/EntitySelector/EntitySelector.js +1 -1
  28. package/EntitySelector/EntitySelector.test.js +275 -422
  29. package/EntityTypeIcon/EntityTypeIcon.test.js +16 -16
  30. package/EntityTypesSelector/EntityTypesSelector.test.js +62 -21
  31. package/ErrorBoundary/ErrorBoundary.test.js +19 -17
  32. package/ErrorMessage/ErrorMessage.js +1 -1
  33. package/ErrorPopup/ErrorPopup.test.js +72 -25
  34. package/ErrorWrapper/ErrorWrapper.test.js +10 -9
  35. package/ExpandedValueTooltip/ExpandedValueTooltip.test.js +111 -37
  36. package/FileTypeEditor/FileTypeEditor.test.js +95 -64
  37. package/FilterValueEditor/FilterValueEditor.test.js +183 -157
  38. package/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.js +2 -2
  39. package/HierarchicalAttributeTooltip/HierarchicalAttributeTooltip.test.js +114 -24
  40. package/HierarchyNodeTitle/HierarchyNodeTitle.test.js +61 -100
  41. package/OvIcon/OvIcon.js +2 -2
  42. package/ProfileCard/components/ProfileCardPlaceholder/ProfileCardPlaceholder.js +2 -2
  43. package/ShowLess/ShowLess.js +1 -1
  44. package/SimpleAttributeEditor/SimpleAttributeEditor.js +2 -2
  45. package/UploadFileButton/components/UploadMode/UploadMode.js +1 -1
  46. package/cjs/AttributesFiltersBuilder/AttributesFiltersBuilder.test.js +72 -50
  47. package/cjs/BasicTable/BasicTable.test.js +230 -299
  48. package/cjs/BlobRenderer/BlobRenderer.js +1 -1
  49. package/cjs/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.test.js +125 -111
  50. package/cjs/DateIntervalSelector/DateIntervalSelector.test.js +87 -65
  51. package/cjs/DefaultCellValueRenderer/DefaultCellValueRenderer.js +1 -1
  52. package/cjs/DefaultCellValueRenderer/DefaultCellValueRenderer.test.js +16 -46
  53. package/cjs/DeleteButton/DeleteButton.spec.js +53 -15
  54. package/cjs/DependentLookupEditor/DependentLookupEditor.test.js +569 -821
  55. package/cjs/Drawer/Drawer.test.js +10 -21
  56. package/cjs/DropDownEditor/DropDownEditor.test.js +81 -29
  57. package/cjs/DropDownMenuButton/DropDownMenuButton.spec.js +102 -71
  58. package/cjs/DropDownSelector/DropDownSelector.test.js +159 -30
  59. package/cjs/EditModeAttributesFactory/EditModeAttributesFactory.test.js +148 -0
  60. package/cjs/EditModeAttributesList/EditModeAttributesList.test.js +277 -224
  61. package/cjs/EditModeAttributesList/attributes.test-data.d.ts +0 -11
  62. package/cjs/EditModeAttributesList/attributes.test-data.js +1 -1
  63. package/cjs/EditModeAttributesPager/EditModeAttributesPager.test.js +696 -232
  64. package/cjs/EditModeAttributesPager/helpers.test.js +2 -12
  65. package/cjs/EditModeAttributesView/EditModeAttributesView.test.js +262 -156
  66. package/cjs/EditModeComplexAttribute/EditModeComplexAttribute.js +1 -1
  67. package/cjs/EditModeComplexAttribute/EditModeComplexAttribute.test.js +312 -297
  68. package/cjs/EditModeComplexAttribute/nestedAttrType.test-data.d.ts +0 -5
  69. package/cjs/EditModeComplexAttribute/nestedAttrType.test-data.js +3 -44
  70. package/cjs/EmptyState/EmptyState.test.js +98 -37
  71. package/cjs/EntityCreator/EntityCreator.test.js +69 -36
  72. package/cjs/EntitySelector/EntitySelector.js +1 -1
  73. package/cjs/EntitySelector/EntitySelector.test.js +274 -421
  74. package/cjs/EntityTypeIcon/EntityTypeIcon.test.js +17 -17
  75. package/cjs/EntityTypesSelector/EntityTypesSelector.test.js +62 -21
  76. package/cjs/ErrorBoundary/ErrorBoundary.test.js +19 -17
  77. package/cjs/ErrorMessage/ErrorMessage.js +1 -1
  78. package/cjs/ErrorPopup/ErrorPopup.test.js +71 -24
  79. package/cjs/ErrorWrapper/ErrorWrapper.test.js +10 -9
  80. package/cjs/ExpandedValueTooltip/ExpandedValueTooltip.test.js +111 -37
  81. package/cjs/FileTypeEditor/FileTypeEditor.test.js +95 -64
  82. package/cjs/FilterValueEditor/FilterValueEditor.test.js +182 -156
  83. package/cjs/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.js +2 -2
  84. package/cjs/HierarchicalAttributeTooltip/HierarchicalAttributeTooltip.test.js +114 -24
  85. package/cjs/HierarchyNodeTitle/HierarchyNodeTitle.test.js +61 -100
  86. package/cjs/OvIcon/OvIcon.js +2 -2
  87. package/cjs/ProfileCard/components/ProfileCardPlaceholder/ProfileCardPlaceholder.js +2 -2
  88. package/cjs/ShowLess/ShowLess.js +1 -1
  89. package/cjs/SimpleAttributeEditor/SimpleAttributeEditor.js +2 -2
  90. package/cjs/UploadFileButton/components/UploadMode/UploadMode.js +1 -1
  91. package/cjs/contexts/ExpandedAttributesContext/useAttributeExpanded.test.js +25 -18
  92. package/cjs/contexts/MdmModuleContext/hooks.d.ts +2 -2
  93. package/cjs/contexts/ReloadDataContext/ReloadDataContext.spec.js +16 -53
  94. package/cjs/test-utils/TestStylesProvider.js +6 -5
  95. package/contexts/ExpandedAttributesContext/useAttributeExpanded.test.js +25 -18
  96. package/contexts/MdmModuleContext/hooks.d.ts +2 -2
  97. package/contexts/ReloadDataContext/ReloadDataContext.spec.js +16 -30
  98. package/package.json +2 -2
  99. package/test-utils/TestStylesProvider.js +3 -2
  100. package/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.test.js +0 -101
  101. package/AttributesFiltersBuilder/components/RowActions/RowActions.test.js +0 -106
  102. package/BasicTable/IntegrationBasicTable.test.d.ts +0 -1
  103. package/BasicTable/IntegrationBasicTable.test.js +0 -203
  104. package/DependentLookupEditor/IntegrationDependentLookupEditor.test.d.ts +0 -1
  105. package/DependentLookupEditor/IntegrationDependentLookupEditor.test.js +0 -137
  106. package/DropDownMenuButton/components/DefaultMenuItemRenderer/DefaultMenuItemRenderer.spec.d.ts +0 -1
  107. package/DropDownMenuButton/components/DefaultMenuItemRenderer/DefaultMenuItemRenderer.spec.js +0 -32
  108. package/EditModeAttributesFactory/components/EditModeAttribute/EditModeAttribute.test.d.ts +0 -1
  109. package/EditModeAttributesFactory/components/EditModeAttribute/EditModeAttribute.test.js +0 -106
  110. package/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.test.d.ts +0 -1
  111. package/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.test.js +0 -338
  112. package/EditModeAttributesPager/components/AttributeRenderer/IntegrationAttributeRenderer.test.d.ts +0 -1
  113. package/EditModeAttributesPager/components/AttributeRenderer/IntegrationAttributeRenderer.test.js +0 -225
  114. package/EditModeAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.d.ts +0 -1
  115. package/EditModeAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.js +0 -47
  116. package/EditModeAttributesPager/components/SpecialRenderer/SpecialRenderer.test.d.ts +0 -1
  117. package/EditModeAttributesPager/components/SpecialRenderer/SpecialRenderer.test.js +0 -204
  118. package/EditModeAttributesView/IntegrationEditModeAttributesView.test.d.ts +0 -1
  119. package/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +0 -246
  120. package/EditModeAttributesView/metadata.test-data.d.ts +0 -4
  121. package/EditModeAttributesView/metadata.test-data.js +0 -119
  122. package/EntityCreator/entityType.test-data.d.ts +0 -52
  123. package/EntityCreator/entityType.test-data.js +0 -188
  124. package/EntitySelector/components/ClearIndicator/ClearIndicator.test.d.ts +0 -1
  125. package/EntitySelector/components/ClearIndicator/ClearIndicator.test.js +0 -27
  126. package/EntitySelector/components/EntityOption/EntityOption.test.d.ts +0 -1
  127. package/EntitySelector/components/EntityOption/EntityOption.test.js +0 -79
  128. package/EntitySelector/components/Group/Group.test.d.ts +0 -1
  129. package/EntitySelector/components/Group/Group.test.js +0 -65
  130. package/EntitySelector/components/SingleValue/SingleValue.test.d.ts +0 -1
  131. package/EntitySelector/components/SingleValue/SingleValue.test.js +0 -78
  132. package/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.test.d.ts +0 -1
  133. package/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.test.js +0 -76
  134. package/cjs/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.test.d.ts +0 -1
  135. package/cjs/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.test.js +0 -106
  136. package/cjs/AttributesFiltersBuilder/components/RowActions/RowActions.test.d.ts +0 -1
  137. package/cjs/AttributesFiltersBuilder/components/RowActions/RowActions.test.js +0 -111
  138. package/cjs/BasicTable/IntegrationBasicTable.test.d.ts +0 -1
  139. package/cjs/BasicTable/IntegrationBasicTable.test.js +0 -208
  140. package/cjs/DependentLookupEditor/IntegrationDependentLookupEditor.test.d.ts +0 -1
  141. package/cjs/DependentLookupEditor/IntegrationDependentLookupEditor.test.js +0 -142
  142. package/cjs/DropDownMenuButton/components/DefaultMenuItemRenderer/DefaultMenuItemRenderer.spec.d.ts +0 -1
  143. package/cjs/DropDownMenuButton/components/DefaultMenuItemRenderer/DefaultMenuItemRenderer.spec.js +0 -37
  144. package/cjs/EditModeAttributesFactory/components/EditModeAttribute/EditModeAttribute.test.d.ts +0 -1
  145. package/cjs/EditModeAttributesFactory/components/EditModeAttribute/EditModeAttribute.test.js +0 -111
  146. package/cjs/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.test.d.ts +0 -1
  147. package/cjs/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.test.js +0 -343
  148. package/cjs/EditModeAttributesPager/components/AttributeRenderer/IntegrationAttributeRenderer.test.d.ts +0 -1
  149. package/cjs/EditModeAttributesPager/components/AttributeRenderer/IntegrationAttributeRenderer.test.js +0 -230
  150. package/cjs/EditModeAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.d.ts +0 -1
  151. package/cjs/EditModeAttributesPager/components/ImageLineRenderer/ImageLineRenderer.test.js +0 -52
  152. package/cjs/EditModeAttributesPager/components/SpecialRenderer/SpecialRenderer.test.d.ts +0 -1
  153. package/cjs/EditModeAttributesPager/components/SpecialRenderer/SpecialRenderer.test.js +0 -209
  154. package/cjs/EditModeAttributesView/IntegrationEditModeAttributesView.test.d.ts +0 -1
  155. package/cjs/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +0 -251
  156. package/cjs/EditModeAttributesView/metadata.test-data.d.ts +0 -4
  157. package/cjs/EditModeAttributesView/metadata.test-data.js +0 -123
  158. package/cjs/EntityCreator/entityType.test-data.d.ts +0 -52
  159. package/cjs/EntityCreator/entityType.test-data.js +0 -191
  160. package/cjs/EntitySelector/components/ClearIndicator/ClearIndicator.test.d.ts +0 -1
  161. package/cjs/EntitySelector/components/ClearIndicator/ClearIndicator.test.js +0 -32
  162. package/cjs/EntitySelector/components/EntityOption/EntityOption.test.d.ts +0 -1
  163. package/cjs/EntitySelector/components/EntityOption/EntityOption.test.js +0 -84
  164. package/cjs/EntitySelector/components/Group/Group.test.d.ts +0 -1
  165. package/cjs/EntitySelector/components/Group/Group.test.js +0 -70
  166. package/cjs/EntitySelector/components/SingleValue/SingleValue.test.d.ts +0 -1
  167. package/cjs/EntitySelector/components/SingleValue/SingleValue.test.js +0 -83
  168. package/cjs/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.test.d.ts +0 -1
  169. package/cjs/FilterValueEditor/components/RangeDataTypeValueEditor/RangeDataTypeValueEditor.test.js +0 -81
  170. package/cjs/contexts/CollaborationContext/CollaborationContextProvider.test.d.ts +0 -1
  171. package/cjs/contexts/CollaborationContext/CollaborationContextProvider.test.js +0 -104
  172. package/contexts/CollaborationContext/CollaborationContextProvider.test.d.ts +0 -1
  173. package/contexts/CollaborationContext/CollaborationContextProvider.test.js +0 -99
  174. /package/{AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.test.d.ts → EditModeAttributesFactory/EditModeAttributesFactory.test.d.ts} +0 -0
  175. /package/{AttributesFiltersBuilder/components/RowActions/RowActions.test.d.ts → cjs/EditModeAttributesFactory/EditModeAttributesFactory.test.d.ts} +0 -0
@@ -10,365 +10,380 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
13
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
51
  };
16
52
  Object.defineProperty(exports, "__esModule", { value: true });
17
53
  var react_1 = __importDefault(require("react"));
18
- var enzyme_1 = require("enzyme");
19
- var test_utils_1 = require("react-dom/test-utils");
20
- var Button_1 = __importDefault(require("@mui/material/Button"));
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
21
56
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
22
- var EditModeComplexAttribute_1 = __importDefault(require("./EditModeComplexAttribute"));
23
- var nestedAttrType_test_data_1 = require("./nestedAttrType.test-data");
24
- var nestedAttrValue_test_data_1 = require("./nestedAttrValue.test-data");
25
- var EditModeAttributesList_1 = require("../EditModeAttributesList");
26
- var SmallIconButton_1 = require("../SmallIconButton");
27
- var ErrorWrapper_1 = require("../ErrorWrapper");
28
- var ArrowExpandButton_1 = require("../ArrowExpandButton");
29
- var useScrollToAttributeError_1 = require("../hooks/useScrollToAttributeError");
30
57
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
31
58
  var ScrollToElementContext_1 = require("../contexts/ScrollToElementContext");
32
- jest.mock('../hooks/useScrollToAttributeError', function () { return (__assign(__assign({}, jest.requireActual('../hooks/useScrollToAttributeError')), { useScrollToAttributeError: jest.fn() })); });
33
- describe('EditModeComplexAttribute', function () {
34
- var findExpandButton = function (component) { return component.find(ArrowExpandButton_1.ArrowExpandButton); };
35
- var findDeleteButton = function (component) { return component.find('.actions').find(SmallIconButton_1.SmallIconButton); };
36
- var findCreateAttributeButton = function (component) {
37
- return component.find(Button_1.default).filterWhere(function (button) { return button.text() === 'Create attribute'; });
38
- };
39
- var findLabel = function (component) { return component.find('.label'); };
40
- var isComplexAttributeExpanded = function (component) { return component.find(EditModeAttributesList_1.EditModeAttributesList).length === 1; };
41
- var defaultProps = {
42
- label: 'Label!!!',
43
- attributeType: nestedAttrType_test_data_1.nestedAttributeType,
44
- attributeValue: nestedAttrValue_test_data_1.nestedAttributeValue,
45
- attributeTypesList: nestedAttrType_test_data_1.nestedAttributeType.attributes
46
- };
47
- var mdmValues = { dependentLookups: { editors: {} } };
48
- var scrollToAttributeError = {
49
- ref: react_1.default.createRef(),
50
- errorClassName: 'errorClassName',
51
- path: []
59
+ var nestedAttrType_test_data_1 = require("./nestedAttrType.test-data");
60
+ var nestedAttrValue_test_data_1 = require("./nestedAttrValue.test-data");
61
+ var EditModeComplexAttribute_1 = __importDefault(require("./EditModeComplexAttribute"));
62
+ var defaultMdmValues = { dependentLookups: { editors: {}, structure: {}, initedTypeUris: [] } };
63
+ var defaultProps = {
64
+ metadata: {
65
+ entityTypes: [],
66
+ relationTypes: [
67
+ {
68
+ uri: 'configuration/relationTypes/InternalHCPtoHCP',
69
+ label: 'HCP to HCP',
70
+ attributes: [nestedAttrType_test_data_1.nestedAttributeType]
71
+ }
72
+ ]
73
+ },
74
+ label: 'Label!!!',
75
+ attributeType: nestedAttrType_test_data_1.nestedAttributeType,
76
+ attributeValue: nestedAttrValue_test_data_1.nestedAttributeValue,
77
+ attributeTypesList: nestedAttrType_test_data_1.nestedAttributeType.attributes,
78
+ mode: mdm_sdk_1.Mode.Editing,
79
+ onAddAttributes: jest.fn(),
80
+ onDeleteAttribute: jest.fn(),
81
+ onChangeAttribute: jest.fn(),
82
+ additionalControlsRenderer: jest.fn(function (_a) {
83
+ var attributeType = _a.attributeType;
84
+ return react_1.default.createElement("div", null,
85
+ "Additional Controls ",
86
+ attributeType.label);
87
+ })
88
+ };
89
+ var defaultScrollToElementContextValue = {
90
+ element: null,
91
+ highlightError: jest.fn(),
92
+ type: ScrollToElementContext_1.ScrollType.Error,
93
+ scrollIntoRef: jest.fn()
94
+ };
95
+ var setUp = function (_a) {
96
+ var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? defaultProps : _c, _d = _b.mdmValues, mdmValues = _d === void 0 ? defaultMdmValues : _d, _e = _b.scrollToElementContextValue, scrollToElementContextValue = _e === void 0 ? defaultScrollToElementContextValue : _e;
97
+ var user = user_event_1.default.setup();
98
+ var Providers = function (_a) {
99
+ var children = _a.children;
100
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues }, children));
52
101
  };
53
- var highlightErrorSpy = jest.fn();
54
- var scrollIntoRefSpy = jest.fn();
55
- var setUp = function (props, children, error) {
56
- if (children === void 0) { children = null; }
57
- if (error === void 0) { error = null; }
58
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
59
- react_1.default.createElement(ScrollToElementContext_1.ScrollToElementContext.Provider, { value: {
60
- element: error,
61
- highlightError: highlightErrorSpy,
62
- type: ScrollToElementContext_1.ScrollType.Error,
63
- scrollIntoRef: scrollIntoRefSpy
64
- } },
65
- react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props), children))));
102
+ var result = (0, react_2.render)(react_1.default.createElement(ScrollToElementContext_1.ScrollToElementContext.Provider, { value: scrollToElementContextValue },
103
+ react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props))), { wrapper: Providers });
104
+ var rerender = function (_a) {
105
+ var newProps = _a.props, newScrollToElementContextValue = _a.scrollToElementContextValue;
106
+ return result.rerender(react_1.default.createElement(ScrollToElementContext_1.ScrollToElementContext.Provider, { value: __assign(__assign({}, scrollToElementContextValue), newScrollToElementContextValue) },
107
+ react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props, newProps))));
66
108
  };
67
- beforeAll(function () {
68
- useScrollToAttributeError_1.useScrollToAttributeError.mockReturnValue(scrollToAttributeError);
69
- });
70
- beforeEach(function () {
109
+ return __assign(__assign({}, result), { rerender: rerender, user: user });
110
+ };
111
+ describe('Edit mode complex attribute tests', function () {
112
+ afterEach(function () {
71
113
  jest.clearAllMocks();
72
114
  });
73
115
  it('should render expand button and label', function () {
74
- var props = __assign({}, defaultProps);
75
- var component = setUp(props);
76
- expect(findExpandButton(component).length).toBe(1);
77
- var label = findLabel(component);
78
- expect(label.length).toBe(1);
79
- expect(label.text()).toBe(props.label);
80
- expect(findDeleteButton(component).length).toBe(0);
81
- expect(component.find(EditModeAttributesList_1.EditModeAttributesList).length).toBe(0);
82
- expect(findCreateAttributeButton(component).length).toBe(0);
83
- var complexWrapper = component.find('.complexWrapper');
84
- expect(complexWrapper.hasClass(scrollToAttributeError.errorClassName)).toBeTruthy();
85
- expect(complexWrapper.getElement().ref).toBe(scrollToAttributeError.ref);
116
+ var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: undefined });
117
+ setUp({ props: props });
118
+ react_2.screen.getByTestId('arrow-expand-button');
119
+ react_2.screen.getByText('Label!!!');
120
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
121
+ expect(react_2.screen.queryByTestId('reltio-delete-complex-attribute-button')).not.toBeInTheDocument();
122
+ expect(react_2.screen.queryByText('Create attribute')).not.toBeInTheDocument();
86
123
  });
87
124
  it('should render lazy variant of control if lazy prop is true', function () {
88
- var props = __assign({ lazy: true }, defaultProps);
89
- var component = setUp(props);
90
- expect(findExpandButton(component).length).toBe(0);
91
- expect(findLabel(component).length).toBe(0);
92
- expect(findDeleteButton(component).length).toBe(0);
93
- expect(component.find(EditModeAttributesList_1.EditModeAttributesList).length).toBe(0);
94
- expect(findCreateAttributeButton(component).length).toBe(1);
125
+ var props = __assign(__assign({}, defaultProps), { lazy: true });
126
+ setUp({ props: props });
127
+ expect(react_2.screen.queryByTestId('reltio-edit-mode-complex-attribute')).not.toBeInTheDocument();
128
+ react_2.screen.getByText('Create attribute');
95
129
  });
96
130
  it('should render delete button if onDeleteAttribute prop is specified', function () {
97
- var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: jest.fn() });
98
- var component = setUp(props);
99
- expect(findDeleteButton(component).length).toBe(1);
131
+ setUp();
132
+ react_2.screen.getByTestId('reltio-delete-complex-attribute-button');
100
133
  });
101
134
  it('should not render delete button if hideDeleteButton prop is true', function () {
102
- var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: jest.fn(), hideDeleteButton: true });
103
- var component = setUp(props);
104
- expect(findDeleteButton(component).length).toBe(0);
135
+ var props = __assign(__assign({}, defaultProps), { hideDeleteButton: true });
136
+ setUp({ props: props });
137
+ expect(react_2.screen.queryByTestId('reltio-delete-complex-attribute-button')).not.toBeInTheDocument();
105
138
  });
106
139
  it('should not render delete button if there are no DELETE permissions', function () {
107
- var props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, attributeType: __assign(__assign({}, nestedAttrType_test_data_1.nestedAttributeType), { access: [mdm_sdk_1.MetadataPermissions.READ, mdm_sdk_1.MetadataPermissions.UPDATE] }), onDeleteAttribute: jest.fn() });
108
- var component = setUp(props);
109
- expect(findDeleteButton(component).length).toBe(0);
140
+ var attributeType = __assign(__assign({}, nestedAttrType_test_data_1.nestedAttributeType), { access: [mdm_sdk_1.MetadataPermissions.READ, mdm_sdk_1.MetadataPermissions.UPDATE] });
141
+ var props = __assign(__assign({}, defaultProps), { attributeType: attributeType });
142
+ setUp({ props: props });
143
+ expect(react_2.screen.queryByTestId('reltio-delete-complex-attribute-button')).not.toBeInTheDocument();
110
144
  });
111
- it('should call onDeleteAttribute prop with attributeType and value uri after click on delete button', function () {
112
- var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: jest.fn() });
113
- var component = setUp(props);
114
- findDeleteButton(component).prop('onClick')();
115
- expect(props.onDeleteAttribute).toHaveBeenCalledWith({
116
- uri: props.attributeValue.uri,
117
- attributeType: props.attributeType,
118
- attributeValue: props.attributeValue
145
+ it('should call onDeleteAttribute prop with attributeType and value uri after click on delete button', function () { return __awaiter(void 0, void 0, void 0, function () {
146
+ var user;
147
+ return __generator(this, function (_a) {
148
+ switch (_a.label) {
149
+ case 0:
150
+ user = setUp().user;
151
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('reltio-delete-complex-attribute-button'))];
152
+ case 1:
153
+ _a.sent();
154
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
155
+ uri: defaultProps.attributeValue.uri,
156
+ attributeType: defaultProps.attributeType,
157
+ attributeValue: defaultProps.attributeValue
158
+ });
159
+ return [2 /*return*/];
160
+ }
119
161
  });
120
- });
162
+ }); });
121
163
  it('should render additional controls if additionalControlsRenderer prop is specified', function () {
122
- var AdditionalControls = function () { return react_1.default.createElement("div", null); };
123
- var props = __assign(__assign({}, defaultProps), { additionalControlsRenderer: function (_a) {
124
- var attributeValue = _a.attributeValue, attributeType = _a.attributeType;
125
- return (react_1.default.createElement(AdditionalControls, { attributeValue: attributeValue, attributeType: attributeType }));
126
- } });
127
- var component = setUp(props);
128
- var additionalControls = component.find(AdditionalControls);
129
- expect(additionalControls.length).toBe(1);
130
- expect(additionalControls.prop('attributeValue')).toBe(props.attributeValue);
131
- expect(additionalControls.prop('attributeType')).toBe(props.attributeType);
132
- });
133
- it('should render EditModeAttributesList after click on expand button', function () {
134
- var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: jest.fn() });
135
- var children = react_1.default.createElement("span", null, "children");
136
- var component = setUp(props, children);
137
- expect(component.find(EditModeAttributesList_1.EditModeAttributesList).length).toBe(0);
138
- (0, test_utils_1.act)(function () {
139
- findExpandButton(component).prop('onClick')();
164
+ setUp();
165
+ react_2.screen.getByText('Additional Controls Additional Attributes');
166
+ expect(defaultProps.additionalControlsRenderer).toHaveBeenCalledWith({
167
+ attributeType: defaultProps.attributeType,
168
+ attributeValue: defaultProps.attributeValue
140
169
  });
141
- component.update();
142
- var attributesList = component.find(EditModeAttributesList_1.EditModeAttributesList);
143
- expect(attributesList.length).toBe(1);
144
- expect(attributesList.prop('children')).toBe(children);
145
170
  });
146
- it('should render EditModeAttributesList with parentAttributeType after click on expand button', function () {
147
- var props = __assign(__assign({}, defaultProps), { onDeleteAttribute: jest.fn() });
148
- var children = react_1.default.createElement("span", null, "children");
149
- var component = setUp(props, children);
150
- expect(component.find(EditModeAttributesList_1.EditModeAttributesList).length).toBe(0);
151
- (0, test_utils_1.act)(function () {
152
- findExpandButton(component).prop('onClick')();
171
+ it('should render EditModeAttributesList after click on expand button', function () { return __awaiter(void 0, void 0, void 0, function () {
172
+ var props, user;
173
+ return __generator(this, function (_a) {
174
+ switch (_a.label) {
175
+ case 0:
176
+ props = __assign(__assign({}, defaultProps), { children: react_1.default.createElement("div", null, "Children") });
177
+ user = setUp({ props: props }).user;
178
+ expect(react_2.screen.queryByText('More attributes')).not.toBeInTheDocument();
179
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
180
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
181
+ case 1:
182
+ _a.sent();
183
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
184
+ react_2.screen.getByText('More attributes');
185
+ react_2.screen.getByText('Children');
186
+ return [2 /*return*/];
187
+ }
153
188
  });
154
- component.update();
155
- var attributesList = component.find(EditModeAttributesList_1.EditModeAttributesList);
156
- expect(attributesList.length).toBe(1);
157
- expect(attributesList.prop('children')).toBe(children);
158
- expect(attributesList.prop('parentAttributeType')).toEqual(props.attributeType);
159
- });
189
+ }); });
160
190
  it('should render EditModeAttributesList if expand prop was passed', function () {
161
- var props = __assign(__assign({}, defaultProps), { expanded: true, onDeleteAttribute: jest.fn() });
162
- var children = react_1.default.createElement("span", null, "children");
163
- var component = setUp(props, children);
164
- var attributesList = component.find(EditModeAttributesList_1.EditModeAttributesList);
165
- expect(attributesList.length).toBe(1);
166
- expect(attributesList.prop('children')).toBe(children);
167
- });
168
- it('should be expanded by default for new attributes', function () {
169
- var props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, nestedAttrValue_test_data_1.nestedAttributeValue), { uri: 'relations/sIeHttl/attributes/AdditionalAttributes/uri$$123' }), onDeleteAttribute: jest.fn() });
170
- var children = react_1.default.createElement("span", null, "children");
171
- var component = setUp(props, children);
172
- var attributesList = component.find(EditModeAttributesList_1.EditModeAttributesList);
173
- expect(attributesList.length).toBe(1);
174
- expect(attributesList.prop('children')).toBe(children);
175
- (0, test_utils_1.act)(function () {
176
- findExpandButton(component).at(0).prop('onClick')();
177
- });
178
- component.update();
179
- expect(component.find(EditModeAttributesList_1.EditModeAttributesList).length).toBe(0);
180
- });
181
- it('should set correct props for EditModeAttributesList', function () {
182
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn(), additionalControlsRenderer: jest.fn(), crosswalks: [], mode: mdm_sdk_1.Mode.Editing, showEmptyEditors: true });
183
- var component = setUp(props);
184
- (0, test_utils_1.act)(function () {
185
- findExpandButton(component).prop('onClick')();
186
- });
187
- component.update();
188
- var attributesList = component.find(EditModeAttributesList_1.EditModeAttributesList);
189
- expect(attributesList.length).toBe(1);
190
- expect(attributesList.props()).toMatchObject({
191
- onAddAttributes: props.onAddAttributes,
192
- onDeleteAttribute: props.onDeleteAttribute,
193
- onChangeAttribute: props.onChangeAttribute,
194
- additionalControlsRenderer: props.additionalControlsRenderer,
195
- crosswalks: props.crosswalks,
196
- mode: props.mode,
197
- showEmptyEditors: props.showEmptyEditors,
198
- parentUri: props.attributeValue.uri,
199
- drawLines: true,
200
- attrTypes: props.attributeType.attributes,
201
- entity: { attributes: props.attributeValue.value }
202
- });
191
+ var props = __assign(__assign({}, defaultProps), { expanded: true, children: react_1.default.createElement("div", null, "Children") });
192
+ setUp({ props: props });
193
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
194
+ react_2.screen.getByText('More attributes');
195
+ react_2.screen.getByText('Children');
203
196
  });
204
- var expandSubNesteds = function (component) {
205
- (0, test_utils_1.act)(function () {
206
- findExpandButton(component).prop('onClick')();
197
+ it('should be expanded by default for new attributes', function () { return __awaiter(void 0, void 0, void 0, function () {
198
+ var props, user;
199
+ return __generator(this, function (_a) {
200
+ switch (_a.label) {
201
+ case 0:
202
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, nestedAttrValue_test_data_1.nestedAttributeValue), { uri: 'relations/sIeHttl/attributes/AdditionalAttributes/uri$$123' }), children: react_1.default.createElement("div", null, "Children") });
203
+ user = setUp({ props: props }).user;
204
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
205
+ react_2.screen.getByText('More attributes');
206
+ react_2.screen.getByText('Children');
207
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[0])];
208
+ case 1:
209
+ _a.sent();
210
+ expect(react_2.screen.queryByText('More attributes')).not.toBeInTheDocument();
211
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
212
+ return [2 /*return*/];
213
+ }
207
214
  });
208
- component.update();
209
- var complexes = component.find(EditModeComplexAttribute_1.default);
210
- expect(complexes.length).toBe(2);
211
- var subComplex = complexes.at(1);
212
- (0, test_utils_1.act)(function () {
213
- findExpandButton(subComplex).prop('onClick')();
215
+ }); });
216
+ it('should render attributes correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
217
+ var user, complexAttributeActions, attributeActions, complexAttributeLabels, attributeTitles, attributeValues;
218
+ return __generator(this, function (_a) {
219
+ switch (_a.label) {
220
+ case 0:
221
+ user = setUp().user;
222
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[0])];
223
+ case 1:
224
+ _a.sent();
225
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[1])];
226
+ case 2:
227
+ _a.sent();
228
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[2])];
229
+ case 3:
230
+ _a.sent();
231
+ complexAttributeActions = react_2.screen.getAllByTestId('reltio-complex-attribute-actions');
232
+ expect(complexAttributeActions).toHaveLength(3);
233
+ expect(complexAttributeActions[0]).toHaveTextContent('Additional Controls Additional Attributes');
234
+ expect(complexAttributeActions[1]).toHaveTextContent('Additional Controls Sub Nested');
235
+ expect(complexAttributeActions[2]).toHaveTextContent('Additional Controls Sub Sub Nested');
236
+ attributeActions = react_2.screen.getAllByTestId('reltio-attribute-actions');
237
+ expect(attributeActions).toHaveLength(1);
238
+ expect(attributeActions[0]).toHaveTextContent('Additional Controls Attribute Value');
239
+ complexAttributeLabels = react_2.screen.getAllByTestId('reltio-attribute-complex-label');
240
+ expect(complexAttributeLabels).toHaveLength(3);
241
+ expect(complexAttributeLabels[0]).toHaveTextContent('Label!!!');
242
+ expect(complexAttributeLabels[1]).toHaveTextContent('<No label>');
243
+ expect(complexAttributeLabels[2]).toHaveTextContent('<No label>');
244
+ attributeTitles = react_2.screen.getAllByTestId('reltio-attribute-label');
245
+ expect(attributeTitles).toHaveLength(3);
246
+ expect(attributeTitles[0]).toHaveTextContent('Sub Nested');
247
+ expect(attributeTitles[1]).toHaveTextContent('Sub Sub Nested');
248
+ expect(attributeTitles[2]).toHaveTextContent('Attribute Value');
249
+ attributeValues = react_2.screen.getAllByTestId('reltio-attribute-value');
250
+ expect(attributeValues).toHaveLength(1);
251
+ expect((0, react_2.within)(attributeValues[0]).getByRole('textbox')).toHaveValue('12321');
252
+ return [2 /*return*/];
253
+ }
214
254
  });
215
- component.update();
216
- complexes = component.find(EditModeComplexAttribute_1.default);
217
- expect(complexes.length).toBe(3);
218
- var subSubComplex = complexes.at(2);
219
- (0, test_utils_1.act)(function () {
220
- findExpandButton(subSubComplex).prop('onClick')();
255
+ }); });
256
+ it('should call onDeleteAttribute prop with deep nested attributeType and value uri after click on delete button in deep nested', function () { return __awaiter(void 0, void 0, void 0, function () {
257
+ var user;
258
+ return __generator(this, function (_a) {
259
+ switch (_a.label) {
260
+ case 0:
261
+ user = setUp().user;
262
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[0])];
263
+ case 1:
264
+ _a.sent();
265
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[1])];
266
+ case 2:
267
+ _a.sent();
268
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('arrow-expand-button')[2])];
269
+ case 3:
270
+ _a.sent();
271
+ return [4 /*yield*/, user.click(react_2.screen.getAllByTestId('reltio-delete-complex-attribute-button')[2])];
272
+ case 4:
273
+ _a.sent();
274
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
275
+ uri: defaultProps.attributeValue.value.SubNested[0].value.SubSubNested[0].uri,
276
+ attributeType: defaultProps.attributeType.attributes[0].attributes[0],
277
+ attributeValue: defaultProps.attributeValue.value.SubNested[0].value.SubSubNested[0]
278
+ });
279
+ return [2 /*return*/];
280
+ }
221
281
  });
222
- component.update();
223
- };
224
- it('should render deep nested attributes', function () {
225
- var AdditionalControls = function () { return react_1.default.createElement("div", null); };
226
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn(), additionalControlsRenderer: function (_a) {
227
- var attributeValue = _a.attributeValue, attributeType = _a.attributeType;
228
- return (react_1.default.createElement(AdditionalControls, { attributeValue: attributeValue, attributeType: attributeType }));
229
- }, crosswalks: [], mode: mdm_sdk_1.Mode.Editing, showEmptyEditors: true });
230
- var component = setUp(props);
231
- expect(component.find(EditModeComplexAttribute_1.default).length).toBe(1);
232
- expandSubNesteds(component);
233
- expect(component.find(EditModeComplexAttribute_1.default).length).toBe(3);
234
- var deepComplex = component.find(EditModeComplexAttribute_1.default).at(2);
235
- var deepComplexValue = props.attributeValue.value.SubNested[0].value.SubSubNested[0];
236
- var deepComplexAttrType = props.attributeType.attributes[0].attributes[0];
237
- expect(deepComplex.prop('attributeValue')).toBe(deepComplexValue);
238
- expect(deepComplex.prop('attributeType')).toBe(deepComplexAttrType);
239
- var deepAdditionalControlInsideComplex = deepComplex.find(AdditionalControls);
240
- expect(deepAdditionalControlInsideComplex.length).toBe(2); // for complex and simple inside
241
- expect(deepAdditionalControlInsideComplex.at(0).prop('attributeValue')).toBe(deepComplexValue);
242
- expect(deepAdditionalControlInsideComplex.at(0).prop('attributeType')).toBe(deepComplexAttrType);
243
- var deepSimple = component.find('SimpleAttributeEditor');
244
- expect(deepSimple.length).toBe(1);
245
- var deepSimpleValue = props.attributeValue.value.SubNested[0].value.SubSubNested[0].value.AttributeValue[0];
246
- var deepSimpleAttrType = props.attributeType.attributes[0].attributes[0].attributes[0];
247
- expect(deepSimple.prop('attributeValue')).toBe(deepSimpleValue);
248
- expect(deepSimple.prop('attributeType')).toBe(deepSimpleAttrType);
249
- var deepAdditionalControlInsideSimple = deepSimple.find(AdditionalControls);
250
- expect(deepAdditionalControlInsideSimple.length).toBe(1);
251
- expect(deepAdditionalControlInsideSimple.prop('attributeValue')).toBe(deepSimpleValue);
252
- expect(deepAdditionalControlInsideSimple.prop('attributeType')).toBe(deepSimpleAttrType);
253
- });
254
- it('should call onDeleteAttribute prop with deep nested attributeType and value uri after click on delete button in deep nested', function () {
255
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn(), crosswalks: [], mode: mdm_sdk_1.Mode.Editing, showEmptyEditors: true });
256
- var component = (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
257
- react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props))));
258
- expect(component.find(EditModeComplexAttribute_1.default).length).toBe(1);
259
- expandSubNesteds(component);
260
- expect(component.find(EditModeComplexAttribute_1.default).length).toBe(3);
261
- var deepComplex = component.find(EditModeComplexAttribute_1.default).at(2);
262
- (0, test_utils_1.act)(function () {
263
- findDeleteButton(deepComplex).prop('onClick')();
264
- });
265
- expect(props.onDeleteAttribute).toHaveBeenCalledWith({
266
- uri: props.attributeValue.value.SubNested[0].value.SubSubNested[0].uri,
267
- attributeType: props.attributeType.attributes[0].attributes[0],
268
- attributeValue: props.attributeValue.value.SubNested[0].value.SubSubNested[0]
269
- });
270
- });
282
+ }); });
271
283
  it('should not show error message if error prop is not specified', function () {
272
- var component = setUp(defaultProps);
273
- expect(component.find(ErrorWrapper_1.ErrorWrapper).prop('errorMessage')).toBe('');
284
+ setUp();
285
+ expect(react_2.screen.queryByTestId('error-message')).not.toBeInTheDocument();
274
286
  });
275
287
  it('should show error message if ownError prop is specified', function () {
276
288
  var props = __assign(__assign({}, defaultProps), { ownError: {
277
- type: 'invalid',
278
- message: 'error desc',
289
+ type: mdm_sdk_1.ErrorType.invalid,
290
+ message: 'error description',
279
291
  attributeTypeUri: 'any1',
280
292
  parentUri: 'any2',
281
293
  uri: 'any3'
282
294
  } });
283
- var component = setUp(props);
284
- expect(isComplexAttributeExpanded(component)).toBe(false);
285
- expect(component.find(ErrorWrapper_1.ErrorWrapper).prop('errorMessage')).toBe(props.ownError.message);
295
+ setUp({ props: props });
296
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
297
+ expect(react_2.screen.getByTestId('error-message')).toHaveTextContent(props.ownError.message);
286
298
  });
287
299
  it('should become expanded and show special error message if errors props contains descendants errors', function () {
288
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn(), errors: [] });
289
- var component = (0, enzyme_1.mount)(react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props)));
290
- expect(isComplexAttributeExpanded(component)).toBe(false);
291
- expect(component.find(ErrorWrapper_1.ErrorWrapper).prop('errorMessage')).toBe('');
292
- component.setProps({
293
- errors: [
294
- {
295
- parentUri: 'relations/sIeHttl/attributes/AdditionalAttributes/2zoXFFwDl/SubNested/gdggfgfgdf/SubSubNested/1',
296
- uri: '',
297
- attributeTypeUri: 'configuration/relationTypes/InternalHCPtoHCP/attributes/AdditionalAttributes/attributes/SubNested/attributes/SubSubNested/attributes/AttributeValue',
298
- message: 'Attribute is required',
299
- type: 'missed'
300
- }
301
- ]
300
+ var props = __assign(__assign({}, defaultProps), { errors: [] });
301
+ var rerender = setUp({ props: props }).rerender;
302
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
303
+ expect(react_2.screen.queryByTestId('error-message')).not.toBeInTheDocument();
304
+ rerender({
305
+ props: {
306
+ errors: [
307
+ {
308
+ parentUri: 'relations/sIeHttl/attributes/AdditionalAttributes/2zoXFFwDl/SubNested/gdggfgfgdf/SubSubNested/1',
309
+ uri: '',
310
+ attributeTypeUri: 'configuration/relationTypes/InternalHCPtoHCP/attributes/AdditionalAttributes/attributes/SubNested/attributes/SubSubNested/attributes/AttributeValue',
311
+ message: 'Attribute is required',
312
+ type: mdm_sdk_1.ErrorType.missed
313
+ }
314
+ ]
315
+ }
302
316
  });
303
- component.update();
304
- expect(isComplexAttributeExpanded(component)).toBe(true);
305
- expect(component.find(ErrorWrapper_1.ErrorWrapper).at(0).prop('errorMessage')).toBe('Has an incorrect value');
317
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
318
+ expect(react_2.screen.getByTestId('error-message')).toHaveTextContent('Has an incorrect value');
306
319
  });
307
- it('should become collapsed after setting "state" prop to "deleted"', function () {
308
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn() });
309
- var component = (0, enzyme_1.mount)(react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props)));
310
- expect(isComplexAttributeExpanded(component)).toBe(false);
311
- expect(findDeleteButton(component).length).toBe(1);
312
- expect(findLabel(component).hasClass('deleted')).toBe(false);
313
- expect(findExpandButton(component).prop('disabled')).toBeFalsy();
314
- (0, test_utils_1.act)(function () {
315
- findExpandButton(component).prop('onClick')();
316
- });
317
- component.update();
318
- expect(isComplexAttributeExpanded(component)).toBe(true);
319
- component.setProps({
320
- state: 'deleted'
320
+ it('should become collapsed after setting "state" prop to "deleted"', function () { return __awaiter(void 0, void 0, void 0, function () {
321
+ var _a, user, rerender;
322
+ return __generator(this, function (_b) {
323
+ switch (_b.label) {
324
+ case 0:
325
+ _a = setUp(), user = _a.user, rerender = _a.rerender;
326
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
327
+ expect(react_2.screen.getByTestId('reltio-attribute-complex-label')).not.toHaveClass('deleted');
328
+ expect(react_2.screen.getByTestId('arrow-expand-button')).not.toBeDisabled();
329
+ react_2.screen.getByTestId('reltio-delete-complex-attribute-button');
330
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
331
+ case 1:
332
+ _b.sent();
333
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
334
+ rerender({ props: { state: 'deleted' } });
335
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
336
+ expect(react_2.screen.getByTestId('reltio-attribute-complex-label')).toHaveClass('deleted');
337
+ expect(react_2.screen.getByTestId('arrow-expand-button')).toBeDisabled();
338
+ expect(react_2.screen.queryByTestId('reltio-delete-complex-attribute-button')).not.toBeInTheDocument();
339
+ return [2 /*return*/];
340
+ }
321
341
  });
322
- component.update();
323
- expect(isComplexAttributeExpanded(component)).toBe(false);
324
- expect(findDeleteButton(component).length).toBe(0);
325
- expect(findLabel(component).hasClass('deleted')).toBe(true);
326
- expect(findExpandButton(component).prop('disabled')).toBe(true);
327
- });
342
+ }); });
328
343
  it('should render "edited" badge after setting "state" prop to "edited"', function () {
329
- var props = __assign(__assign({}, defaultProps), { onAddAttributes: jest.fn(), onDeleteAttribute: jest.fn(), onChangeAttribute: jest.fn() });
330
- var component = (0, enzyme_1.mount)(react_1.default.createElement(EditModeComplexAttribute_1.default, __assign({}, props)));
331
- expect(component.find('.actions').text()).toBe('');
332
- component.setProps({
333
- state: 'edited'
334
- });
335
- component.update();
336
- expect(component.find('.actions').text()).toBe('(edited)');
344
+ var rerender = setUp().rerender;
345
+ expect(react_2.screen.queryByText('(edited)')).not.toBeInTheDocument();
346
+ rerender({ props: { state: 'edited' } });
347
+ react_2.screen.getByText('(edited)');
337
348
  });
338
349
  describe('useScrollToAttributeError tests', function () {
339
350
  var fullError = {
340
351
  type: 'invalid',
341
352
  attributeTypeUri: defaultProps.attributeType.uri,
342
- parentUri: defaultProps.parentUri,
353
+ parentUri: null,
354
+ name: '',
343
355
  uri: defaultProps.attributeValue.uri,
344
356
  source: 'validationService',
345
357
  severity: 'ERROR'
346
358
  };
347
359
  it('should not highlight error if it have wrong uri', function () {
348
- var component = setUp(defaultProps, null, __assign(__assign({}, fullError), { uri: 'different' }));
349
- expect(component.find('EditModeComplexAttribute').prop('highlightedError')).toBe(null);
350
- expect(useScrollToAttributeError_1.useScrollToAttributeError.mock.calls[0][0]).toMatchObject({
351
- highlightedError: null
352
- });
360
+ var error = __assign(__assign({}, fullError), { uri: 'different' });
361
+ var scrollToElementContextValue = __assign(__assign({}, defaultScrollToElementContextValue), { element: error });
362
+ setUp({ scrollToElementContextValue: scrollToElementContextValue });
363
+ expect(react_2.screen.getByTestId('reltio-edit-mode-complex-attribute')).not.toHaveClass('highlightError');
364
+ expect(scrollToElementContextValue.scrollIntoRef).not.toHaveBeenCalled();
353
365
  });
354
366
  it('should highlight error if it have same parent uri, uri, and attribute type uri', function () {
355
- var component = setUp(defaultProps, [], fullError);
356
- var highlightedError = {
357
- element: fullError,
358
- highlightError: highlightErrorSpy,
359
- scrollIntoRef: scrollIntoRefSpy,
360
- type: ScrollToElementContext_1.ScrollType.Error
361
- };
362
- expect(component.find('EditModeComplexAttribute').prop('highlightedError')).toMatchObject(highlightedError);
363
- expect(useScrollToAttributeError_1.useScrollToAttributeError.mock.calls[0][0]).toMatchObject({ highlightedError: highlightedError });
367
+ var scrollToElementContextValue = __assign(__assign({}, defaultScrollToElementContextValue), { element: fullError });
368
+ setUp({ scrollToElementContextValue: scrollToElementContextValue });
369
+ expect(react_2.screen.getByTestId('reltio-edit-mode-complex-attribute')).toHaveClass('highlightError');
370
+ expect(scrollToElementContextValue.scrollIntoRef).toHaveBeenCalled();
364
371
  });
365
372
  it('should pass isHighlightedPath=false prop if path is not contains uri', function () {
366
- var component = setUp(defaultProps, [], __assign(__assign({}, fullError), { path: [] }));
367
- expect(component.find('EditModeComplexAttribute').prop('isHighlightedPath')).toBe(false);
373
+ var rerender = setUp().rerender;
374
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
375
+ var error = __assign(__assign({}, fullError), { path: [] });
376
+ var scrollToElementContextValue = __assign(__assign({}, defaultScrollToElementContextValue), { element: error });
377
+ rerender({ scrollToElementContextValue: scrollToElementContextValue });
378
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
368
379
  });
369
380
  it('should pass isHighlightedPath=true prop if path is contains uri', function () {
370
- var component = setUp(defaultProps, [], __assign(__assign({}, fullError), { path: [{ value: defaultProps.attributeValue }] }));
371
- expect(component.find('EditModeComplexAttribute').prop('isHighlightedPath')).toBe(true);
381
+ var rerender = setUp().rerender;
382
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(1);
383
+ var error = __assign(__assign({}, fullError), { path: [{ value: defaultProps.attributeValue }] });
384
+ var scrollToElementContextValue = __assign(__assign({}, defaultScrollToElementContextValue), { element: error });
385
+ rerender({ scrollToElementContextValue: scrollToElementContextValue });
386
+ expect(react_2.screen.getAllByTestId('reltio-edit-mode-complex-attribute')).toHaveLength(2);
372
387
  });
373
388
  });
374
389
  });