@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
@@ -10,659 +10,613 @@ 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"));
19
56
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
20
57
  var metadata_test_data_1 = require("./metadata.test-data");
21
58
  var ReferenceAttributeEditor_1 = __importDefault(require("./ReferenceAttributeEditor"));
22
- var EditModeComplexAttribute_1 = require("../EditModeComplexAttribute");
23
- var EntitySelector_1 = require("../EntitySelector");
24
- var ErrorWrapper_1 = require("../ErrorWrapper");
25
- var useScrollToAttributeError_1 = require("../hooks/useScrollToAttributeError");
26
59
  var ScrollToElementContext_1 = require("../contexts/ScrollToElementContext");
27
60
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
28
- var EmptyStub_1 = require("../EmptyStub");
29
- jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { createTemporaryEntity: jest.fn() })); });
30
- jest.mock('../EditModeComplexAttribute', function () { return ({
31
- EditModeComplexAttribute: jest.fn()
32
- }); });
33
- jest.mock('../EntitySelector', function () { return ({
34
- EntitySelector: jest.fn()
35
- }); });
36
- jest.mock('../hooks/useScrollToAttributeError', function () { return (__assign(__assign({}, jest.requireActual('../hooks/useScrollToAttributeError')), { useScrollToAttributeError: jest.fn() })); });
37
- describe('ReferenceAttributeEditor', function () {
38
- var scrollToAttributeError = {
39
- ref: react_1.default.createRef(),
40
- errorClassName: 'errorClassName',
41
- path: []
42
- };
43
- var highlightErrorSpy = jest.fn();
44
- var scrollIntoRefSpy = jest.fn();
45
- var defaultProps = {
46
- attributeType: metadata_test_data_1.referenceAttrType,
47
- attributeValue: {
48
- uri: '1',
49
- label: 'Ref Attr!'
50
- }
51
- };
52
- var mdmActions = {
53
- entityDeleted: jest.fn(),
54
- entityCreated: jest.fn(),
55
- errorDeactivated: jest.fn()
56
- };
57
- var defaultMdmValues = { metadata: metadata_test_data_1.metadata, modifiedEntities: {} };
58
- var setUp = function (_a) {
59
- 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.error, error = _e === void 0 ? null : _e;
60
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: mdmActions },
61
- react_1.default.createElement(ScrollToElementContext_1.ScrollToElementContext.Provider, { value: {
62
- element: error,
63
- highlightError: highlightErrorSpy,
64
- scrollIntoRef: scrollIntoRefSpy,
65
- type: ScrollToElementContext_1.ScrollType.Error
66
- } },
67
- react_1.default.createElement(ReferenceAttributeEditor_1.default, __assign({}, props)))));
61
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { typeAheadSearch: jest.fn() })); });
62
+ var highlightError = jest.fn();
63
+ var scrollIntoRef = jest.fn();
64
+ var defaultProps = {
65
+ attributeType: metadata_test_data_1.referenceAttrType,
66
+ attributeValue: {
67
+ label: 'Reference attribute',
68
+ uri: 'entities/0C30cfF/attributes/Contact/T79PZtL',
69
+ value: {},
70
+ refEntity: null,
71
+ refRelation: null,
72
+ relationshipLabel: 'Relationship label',
73
+ startObjectCrosswalks: []
74
+ },
75
+ mode: mdm_sdk_1.Mode.Editing,
76
+ metadata: metadata_test_data_1.metadata,
77
+ onAddAttributes: jest.fn(),
78
+ onDeleteAttribute: jest.fn(),
79
+ onChangeAttribute: jest.fn(),
80
+ additionalControlsRenderer: function () { return null; }
81
+ };
82
+ var mdmActions = {
83
+ entityDeleted: jest.fn(),
84
+ entityCreated: jest.fn(),
85
+ errorDeactivated: jest.fn(),
86
+ addAttributes: jest.fn(),
87
+ removeAttribute: jest.fn(),
88
+ modifyAttribute: jest.fn()
89
+ };
90
+ var defaultMdmValues = {
91
+ metadata: metadata_test_data_1.metadata,
92
+ modifiedEntities: {},
93
+ dependentLookups: { editors: {}, structure: {}, initedTypeUris: [] }
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.error, error = _e === void 0 ? null : _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, actions: mdmActions },
101
+ react_1.default.createElement(ScrollToElementContext_1.ScrollToElementContext.Provider, { value: { element: error, highlightError: highlightError, scrollIntoRef: scrollIntoRef, type: ScrollToElementContext_1.ScrollType.Error } }, children)));
68
102
  };
69
- beforeAll(function () {
70
- EditModeComplexAttribute_1.EditModeComplexAttribute.mockImplementation(function (_a) {
71
- var children = _a.children;
72
- return react_1.default.createElement("div", null, children);
73
- });
74
- EntitySelector_1.EntitySelector.mockImplementation(EmptyStub_1.EmptyStub);
75
- useScrollToAttributeError_1.useScrollToAttributeError.mockReturnValue(scrollToAttributeError);
103
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(ReferenceAttributeEditor_1.default, __assign({}, props)), { wrapper: Providers })), { user: user });
104
+ };
105
+ describe('Reference attribute editor tests', function () {
106
+ beforeEach(function () {
107
+ mdm_sdk_1.typeAheadSearch.mockResolvedValue([
108
+ { type: 'configuration/entityTypes/Organization', label: 'organization entity 1', uri: 'entities/0C32GxR' },
109
+ { type: 'configuration/entityTypes/Organization', label: 'organization entity 2', uri: 'entities/0G49Cnu' }
110
+ ]);
76
111
  });
77
112
  afterEach(function () {
78
113
  jest.clearAllMocks();
79
114
  });
80
- describe('Pure component behavior', function () {
81
- it('should render EditModeComplexAttribute with EntityTypeSelector', function () {
82
- var component = setUp();
83
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
84
- expect(complex.length).toBe(1);
85
- expect(complex.prop('attributeValue')).toBe(defaultProps.attributeValue);
86
- expect(complex.prop('attributeType')).toBe(defaultProps.attributeType);
87
- expect(complex.find(EntitySelector_1.EntitySelector).length).toBe(1);
88
- var errorWrapper = component.find(".".concat(scrollToAttributeError.errorClassName));
89
- expect(errorWrapper).toHaveLength(1);
90
- expect(errorWrapper.getElement().ref).toBe(scrollToAttributeError.ref);
115
+ it('should render reference attribute editor correctly without ref entity', function () { return __awaiter(void 0, void 0, void 0, function () {
116
+ var user, menuItems;
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0:
120
+ user = setUp().user;
121
+ react_2.screen.getByText('Reference attribute');
122
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
123
+ case 1:
124
+ _a.sent();
125
+ react_2.screen.getByText('Select Organization profile');
126
+ expect(react_2.screen.getByRole('combobox')).not.toBeDisabled();
127
+ return [4 /*yield*/, user.click(react_2.screen.getByText('More attributes'))];
128
+ case 2:
129
+ _a.sent();
130
+ menuItems = react_2.screen.getAllByRole('menuitem');
131
+ expect(menuItems).toHaveLength(3);
132
+ expect(menuItems[0]).toHaveTextContent('Affiliated with');
133
+ expect(menuItems[1]).toHaveTextContent('Title');
134
+ expect(menuItems[2]).toHaveTextContent('Status');
135
+ return [2 /*return*/];
136
+ }
91
137
  });
92
- it('should render ErrorWrapper for EntityTypeSelector', function () {
93
- var component = setUp();
94
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
95
- expect(complex.length).toBe(1);
96
- var errorWrapper = complex.find(ErrorWrapper_1.ErrorWrapper);
97
- expect(errorWrapper.find(EntitySelector_1.EntitySelector).length).toBe(1);
98
- expect(errorWrapper.prop('errorMessage')).toBeFalsy();
99
- });
100
- it('should display missed referenced entity active error message in ErrorWrapper for EntityTypeSelector', function () {
101
- var props = __assign(__assign({}, defaultProps), { errors: [
102
- {
103
- parentUri: defaultProps.attributeValue.uri,
104
- uri: '',
105
- attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
106
- message: 'Attribute is required',
107
- type: 'missed'
108
- },
109
- {
110
- parentUri: defaultProps.attributeValue.uri,
111
- uri: '',
112
- attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
113
- message: 'Entity is required - deactivated',
114
- deactivated: true,
115
- type: 'missedRefEntity'
116
- },
117
- {
118
- parentUri: defaultProps.attributeValue.uri,
119
- uri: '',
120
- attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
121
- message: 'Entity is required!',
122
- type: 'missedRefEntity'
123
- }
124
- ] });
125
- var component = setUp({ props: props });
126
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
127
- expect(complex.length).toBe(1);
128
- var errorWrapper = complex.find(ErrorWrapper_1.ErrorWrapper);
129
- expect(errorWrapper.find(EntitySelector_1.EntitySelector).length).toBe(1);
130
- expect(errorWrapper.prop('errorMessage')).toBe(props.errors[2].message);
131
- });
132
- describe('EditModeComplexAttribute behavior', function () {
133
- it('should has correct attributeTypesList prop consisting of only relations uris from referencedAttributeURIs', function () {
134
- var component = setUp();
135
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
136
- expect(complex.prop('attributeTypesList')).toEqual(defaultMdmValues.metadata.relationTypes[0].attributes.filter(function (attrType) {
137
- return defaultProps.attributeType.referencedAttributeURIs.includes(attrType.uri);
138
- }));
139
- expect(complex.prop('attributeTypesList').length).toBe(2);
140
- expect(complex.prop('expanded')).toBeFalsy();
141
- });
142
- it('should pass expanded prop to EditModeComplexAttribute', function () {
143
- var props = __assign(__assign({}, defaultProps), { expanded: true });
144
- var component = setUp({ props: props });
145
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
146
- expect(complex.length).toBe(1);
147
- expect(complex.prop('expanded')).toBeTruthy();
148
- });
149
- it('should has all needed props', function () {
150
- var props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, crosswalks: [], lazy: true, onChangeAttribute: function () { }, onDeleteAttribute: function () { }, onAddAttribute: function () { }, errorMessage: 'error', showEmptyEditors: true, onOpenEntity: function () { } });
151
- var component = setUp({ props: props });
152
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
153
- expect(complex.props()).toMatchObject(__assign(__assign({}, props), { metadata: defaultMdmValues.metadata }));
154
- });
155
- it('crosswalks prop should consist of parent crosswalks and refRelation crosswalks', function () {
156
- var props = __assign(__assign({}, defaultProps), { crosswalks: [
157
- {
158
- attributes: ['entities/ent123/attributes/Address/uri456'],
159
- type: 'configuration/sources/Reltio'
160
- }
161
- ], attributeValue: {
162
- uri: '123',
163
- refRelation: [
164
- {
165
- crosswalks: [
138
+ }); });
139
+ it('should render reference attribute editor correctly with ref entity and values', function () { return __awaiter(void 0, void 0, void 0, function () {
140
+ var props, user, entitySelector, labels, values;
141
+ return __generator(this, function (_a) {
142
+ switch (_a.label) {
143
+ case 0:
144
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { refEntity: [
145
+ {
146
+ crosswalks: [],
147
+ objectURI: 'entities/0C32GxR',
148
+ type: 'configuration/entityTypes/Organization'
149
+ }
150
+ ], value: {
151
+ Name: [
152
+ {
153
+ type: 'configuration/entityTypes/Organization/attributes/Name',
154
+ uri: 'entities/0C30cfF/attributes/Organization/T79PZtL/Name/1XEK3ixZ',
155
+ ov: true,
156
+ value: 'name value'
157
+ }
158
+ ],
159
+ Title: [
166
160
  {
167
- uri: 'entities/369r06C/crosswalks/0GfpbEI.kNzXc8I',
168
- type: 'configuration/sources/NonReltio',
169
- attributeURIs: ['entities/369r06C/attributes/Topics/RTU8Up2/Name/kNzXTbm']
161
+ type: 'configuration/relationTypes/affiliatedwith/attributes/Title',
162
+ uri: 'entities/0C30cfF/attributes/Contact/T79PZtL/Title/1s0ncx5P',
163
+ ov: true,
164
+ value: 'title value'
170
165
  }
171
166
  ]
172
- }
173
- ]
174
- } });
175
- var component = setUp({ props: props });
176
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
177
- expect(complex.prop('crosswalks')).toEqual([
178
- {
179
- attributes: ['entities/ent123/attributes/Address/uri456'],
180
- type: 'configuration/sources/Reltio'
181
- },
182
- {
183
- attributes: ['entities/369r06C/attributes/Topics/RTU8Up2/Name/kNzXTbm'],
184
- type: 'configuration/sources/NonReltio',
185
- uri: 'entities/369r06C/crosswalks/0GfpbEI.kNzXc8I'
186
- }
187
- ]);
188
- });
189
- describe('EditModeComplexAttribute label behavior', function () {
190
- it('should be attributeValue.label if attributeValue.refEntity is not specified', function () {
191
- var component = setUp();
192
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
193
- expect(complex.prop('label')).toBe(defaultProps.attributeValue.label);
194
- });
195
- it('should be attributeValue.label if attributeValue.refEntity is not temporary', function () {
196
- var _a;
197
- var entityUri = 'refEntityUri';
198
- var modifiedEntities = (_a = {}, _a[entityUri] = { uri: entityUri, attributes: {} }, _a);
199
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
200
- uri: '1',
201
- label: 'attribute label',
202
- refEntity: [
203
- {
204
- objectURI: entityUri,
205
- type: 'refEntityType'
206
- }
207
- ]
208
- } });
209
- var mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
210
- var component = setUp({ props: props, mdmValues: mdmValues });
211
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
212
- expect(complex.prop('label')).toBe(props.attributeValue.label);
213
- });
214
- it('should be evaluated from modifiedEntity if attributeValue.refEntity is temporary', function () {
215
- var _a;
216
- var entityUri = 'entities/uri$$12345';
217
- var modifiedEntities = (_a = {},
218
- _a[entityUri] = {
167
+ } }) });
168
+ user = setUp({ props: props }).user;
169
+ react_2.screen.getByText('Reference attribute');
170
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
171
+ case 1:
172
+ _a.sent();
173
+ entitySelector = react_2.screen.getByTestId('reltio-entity-selector');
174
+ (0, react_2.within)(entitySelector).getByText('Select Organization profile');
175
+ (0, react_2.within)(entitySelector).getByText('Reference attribute');
176
+ labels = react_2.screen.getAllByTestId('reltio-attribute-label');
177
+ values = react_2.screen.getAllByTestId('reltio-attribute-value');
178
+ expect(labels).toHaveLength(1);
179
+ expect(values).toHaveLength(1);
180
+ expect(labels[0]).toHaveTextContent('Title');
181
+ expect((0, react_2.within)(values[0]).getByRole('textbox')).toHaveValue('title value');
182
+ return [2 /*return*/];
183
+ }
184
+ });
185
+ }); });
186
+ it('should render reference attribute editor correctly with temporarty ref entity and values', function () { return __awaiter(void 0, void 0, void 0, function () {
187
+ var refEntityUri, modifiedEntities, props, mdmValues, user, entitySelector, labels, values;
188
+ var _a;
189
+ return __generator(this, function (_b) {
190
+ switch (_b.label) {
191
+ case 0:
192
+ refEntityUri = 'entities/uri$$JsO92Ns';
193
+ modifiedEntities = (_a = {},
194
+ _a[refEntityUri] = {
195
+ uri: refEntityUri,
196
+ type: 'configuration/entityTypes/Organization',
219
197
  attributes: {
220
- Name: [{ uri: '1', value: 'Some name' }]
198
+ Name: [
199
+ {
200
+ uri: 'entities/uri$$JsO92Ns/attributes/Name/$uri7JsbN0l',
201
+ type: 'configuration/entityTypes/Organization/attributes/Name',
202
+ value: 'name value'
203
+ }
204
+ ]
221
205
  }
222
206
  },
223
207
  _a);
224
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
225
- uri: '1',
226
- label: 'attribute label',
227
- refEntity: [
208
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { refEntity: [
228
209
  {
229
- objectURI: entityUri,
230
- type: 'refEntityType'
210
+ crosswalks: [],
211
+ objectURI: refEntityUri,
212
+ type: 'configuration/entityTypes/Organization'
231
213
  }
232
- ]
233
- } });
234
- var mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
235
- var component = setUp({ props: props, mdmValues: mdmValues });
236
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
237
- expect(complex.prop('label')).toBe('Some name!');
238
- });
239
- it('should be <No label> in case of missing attribute label and modified entity prop', function () {
240
- var props = __assign(__assign({}, defaultProps), { attributeValue: { uri: '1' } });
241
- var component = setUp({ props: props });
242
- var complex = component.find(EditModeComplexAttribute_1.EditModeComplexAttribute);
243
- expect(complex.prop('label')).toBe('<No label>');
244
- });
245
- });
214
+ ] }) });
215
+ mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
216
+ user = setUp({ props: props, mdmValues: mdmValues }).user;
217
+ react_2.screen.getByText('name value!');
218
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
219
+ case 1:
220
+ _b.sent();
221
+ entitySelector = react_2.screen.getByTestId('reltio-entity-selector');
222
+ (0, react_2.within)(entitySelector).getByText('Select Organization profile');
223
+ (0, react_2.within)(entitySelector).getByText('New Organization will be created');
224
+ labels = react_2.screen.getAllByTestId('reltio-attribute-label');
225
+ values = react_2.screen.getAllByTestId('reltio-attribute-value');
226
+ expect(labels).toHaveLength(2);
227
+ expect(values).toHaveLength(2);
228
+ expect(labels[0]).toHaveTextContent('Nickname');
229
+ expect(labels[1]).toHaveTextContent('Name');
230
+ expect((0, react_2.within)(values[0]).getByRole('textbox')).toHaveValue('');
231
+ expect((0, react_2.within)(values[1]).getByRole('textbox')).toHaveValue('name value');
232
+ return [2 /*return*/];
233
+ }
246
234
  });
247
- describe('EntitySelector behavior', function () {
248
- it('should has correct entityTypesUris prop', function () {
249
- var component = setUp();
250
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
251
- expect(entitySelector.prop('entityTypesUris')).toEqual([
252
- defaultProps.attributeType.referencedEntityTypeURI
253
- ]);
254
- });
255
- it('should has correct entity prop', function () {
256
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
257
- uri: '1',
258
- label: 'attribute label',
259
- refEntity: [
235
+ }); });
236
+ it('should display missed referenced entity active error message for entity selector', function () { return __awaiter(void 0, void 0, void 0, function () {
237
+ var props;
238
+ return __generator(this, function (_a) {
239
+ switch (_a.label) {
240
+ case 0:
241
+ props = __assign(__assign({}, defaultProps), { errors: [
260
242
  {
261
- objectURI: 'refEntityUri',
262
- type: 'refEntityType'
263
- }
264
- ]
265
- } });
266
- var component = setUp({ props: props });
267
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
268
- expect(entitySelector.prop('entity')).toEqual({
269
- entityUri: 'refEntityUri',
270
- entityLabel: 'attribute label',
271
- entityType: 'refEntityType'
272
- });
273
- });
274
- it('should has correct mode and metadata props', function () {
275
- var props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Suggesting });
276
- var component = setUp({ props: props });
277
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
278
- expect(entitySelector.prop('mode')).toBe(props.mode);
279
- expect(entitySelector.prop('metadata')).toBe(defaultMdmValues.metadata);
280
- });
281
- it('attributeTypesSelectionStrategy prop should select referenced entity attributes according referencedAttributeURIs', function () {
282
- var component = setUp();
283
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
284
- var attributesList = entitySelector.prop('attributeTypesSelectionStrategy')(defaultMdmValues.metadata.entityTypes[1]);
285
- expect(attributesList).toEqual([
286
- defaultMdmValues.metadata.entityTypes[1].attributes[2],
287
- defaultMdmValues.metadata.entityTypes[1].attributes[0]
288
- ]);
289
- expect(attributesList.length).toBe(2);
290
- });
291
- it('should disable EntitySelector if attributeType has not editing permission', function () {
292
- var attributeType = __assign(__assign({}, metadata_test_data_1.referenceAttrType), { access: ['READ'] });
293
- var props = __assign(__assign({}, defaultProps), { attributeType: attributeType });
294
- var component = setUp({ props: props });
295
- expect(component.find(EntitySelector_1.EntitySelector).prop('isDisabled')).toBe(true);
296
- });
297
- it('should not disable EntitySelector if attributeType has editing permission', function () {
298
- var component = setUp();
299
- expect(component.find(EntitySelector_1.EntitySelector).prop('isDisabled')).toBe(false);
300
- });
301
- it('should pass globalSearchRequestOptions to EntitySelector correctly', function () {
302
- var globalFilter = { query: '' };
303
- var activityFilter = 'active';
304
- var searchOptions = {
305
- searchByOv: true,
306
- ovOnly: true
307
- };
308
- var mdmValues = __assign(__assign({}, defaultMdmValues), { globalFilter: globalFilter, activityFilter: activityFilter, searchOptions: searchOptions });
309
- var component = setUp({ mdmValues: mdmValues });
310
- expect(component.find(EntitySelector_1.EntitySelector).prop('globalSearchRequestOptions')).toEqual({
311
- activityFilter: 'active',
312
- searchOptions: 'searchByOv',
313
- globalFilter: ''
314
- });
315
- });
316
- describe('onChange behavior', function () {
317
- it('should call onChangeAttribute prop with updated refEntity, refRelation and label', function () {
318
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
319
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
320
- attributes: {}
321
- }, onChangeAttribute: jest.fn() });
322
- var component = setUp({ props: props });
323
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
324
- var entity = {
325
- uri: 'entities/123',
326
- label: 'Entity Label',
327
- type: 'configuration/entityTypes/HCP'
328
- };
329
- entitySelector.prop('onChange')(entity);
330
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
331
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
332
- attributeType: props.attributeType,
333
- uri: props.attributeValue.uri,
334
- value: __assign(__assign({}, props.attributeValue), { label: entity.label, refEntity: [
335
- {
336
- objectURI: entity.uri,
337
- type: entity.type
338
- }
339
- ], refRelation: [
340
- {
341
- objectURI: 'relations/123referencedAttrUri',
342
- type: 'configuration/sources/Reltio'
343
- }
344
- ] })
345
- });
346
- expect(mdmActions.errorDeactivated).not.toHaveBeenCalled();
347
- });
348
- it('should deactivate referencedEntityMissedError if it is set', function () {
349
- var attributeValueUri = 'entities/123/attributes/affiliatedwith/123referencedAttrUri';
350
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
351
- uri: attributeValueUri,
352
- attributes: {}
353
- }, errors: [
243
+ parentUri: defaultProps.attributeValue.uri,
244
+ uri: '',
245
+ attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
246
+ message: 'Attribute is required',
247
+ type: mdm_sdk_1.ErrorType.missed
248
+ },
249
+ {
250
+ parentUri: defaultProps.attributeValue.uri,
251
+ uri: '',
252
+ attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
253
+ message: 'Entity is required - deactivated',
254
+ deactivated: true,
255
+ type: mdm_sdk_1.ErrorType.missedRefEntity
256
+ },
354
257
  {
355
- parentUri: attributeValueUri,
258
+ parentUri: defaultProps.attributeValue.uri,
356
259
  uri: '',
357
260
  attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
358
- message: 'Entity is required',
359
- type: 'missedRefEntity'
261
+ message: 'Entity is required!',
262
+ type: mdm_sdk_1.ErrorType.missedRefEntity
360
263
  }
361
- ], onChangeAttribute: jest.fn() });
362
- var component = setUp({ props: props });
363
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
364
- var entity = {
365
- uri: 'entities/123',
366
- label: 'Entity Label',
367
- type: 'configuration/entityTypes/HCP'
368
- };
369
- entitySelector.prop('onChange')(entity);
370
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
371
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
372
- attributeType: props.attributeType,
373
- uri: props.attributeValue.uri,
374
- value: __assign(__assign({}, props.attributeValue), { label: entity.label, refEntity: [
375
- {
376
- objectURI: entity.uri,
377
- type: entity.type
264
+ ] });
265
+ setUp({ props: props });
266
+ return [4 /*yield*/, (0, react_2.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
267
+ return __generator(this, function (_a) {
268
+ switch (_a.label) {
269
+ case 0: return [4 /*yield*/, Promise.resolve()];
270
+ case 1:
271
+ _a.sent();
272
+ return [2 /*return*/];
378
273
  }
379
- ], refRelation: [
380
- {
381
- objectURI: 'relations/123referencedAttrUri',
382
- type: 'configuration/sources/Reltio'
383
- }
384
- ] })
274
+ });
275
+ }); })];
276
+ case 1:
277
+ _a.sent();
278
+ react_2.screen.getByText('Entity is required!');
279
+ return [2 /*return*/];
280
+ }
281
+ });
282
+ }); });
283
+ it('should render <No label> in case of missing attribute label and modified entity prop', function () {
284
+ var props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { label: undefined }) });
285
+ setUp({ props: props });
286
+ react_2.screen.getByText('<No label>');
287
+ });
288
+ it('should disable entity selector if attribute type has not editing permission', function () { return __awaiter(void 0, void 0, void 0, function () {
289
+ var attributeType, props, user;
290
+ return __generator(this, function (_a) {
291
+ switch (_a.label) {
292
+ case 0:
293
+ attributeType = __assign(__assign({}, metadata_test_data_1.referenceAttrType), { access: ['READ'] });
294
+ props = __assign(__assign({}, defaultProps), { attributeType: attributeType });
295
+ user = setUp({ props: props }).user;
296
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
297
+ case 1:
298
+ _a.sent();
299
+ expect(react_2.screen.getByRole('combobox')).toBeDisabled();
300
+ return [2 /*return*/];
301
+ }
302
+ });
303
+ }); });
304
+ it('should load and select reference entities correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
305
+ var globalFilter, activityFilter, searchOptions, mdmValues, user, options;
306
+ return __generator(this, function (_a) {
307
+ switch (_a.label) {
308
+ case 0:
309
+ globalFilter = { query: '', savedSearches: [], savedSearchesUris: [] };
310
+ activityFilter = mdm_sdk_1.ActivityFilter.ACTIVE_ONLY;
311
+ searchOptions = { searchByOv: true, ovOnly: true };
312
+ mdmValues = __assign(__assign({}, defaultMdmValues), { globalFilter: globalFilter, activityFilter: activityFilter, searchOptions: searchOptions });
313
+ user = setUp({ mdmValues: mdmValues }).user;
314
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
315
+ case 1:
316
+ _a.sent();
317
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
318
+ case 2:
319
+ _a.sent();
320
+ expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith([metadata_test_data_1.metadata.entityTypes[1]], '', {
321
+ activityFilter: mdm_sdk_1.ActivityFilter.ACTIVE_ONLY,
322
+ globalFilter: '',
323
+ max: 20,
324
+ searchOptions: 'searchByOv',
325
+ sendMasked: false
385
326
  });
386
- expect(mdmActions.errorDeactivated).toHaveBeenCalledWith("".concat(props.attributeType.uri, "--").concat(attributeValueUri));
387
- });
388
- it('should call onDeleteModifiedEntity prop before onChangeAttribute if modified entity prop is defined', function () {
389
- var _a;
390
- var entityUri = 'entities/uri$$567';
391
- var modifiedEntity = { uri: 'entities/uri$$567', attributes: {} };
392
- var modifiedEntities = (_a = {}, _a[entityUri] = modifiedEntity, _a);
393
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
394
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
395
- attributes: {},
396
- refEntity: [
397
- {
398
- objectURI: entityUri,
399
- type: 'configuration/entityTypes/HCP'
400
- }
401
- ],
402
- refRelation: [{}]
403
- }, onChangeAttribute: jest.fn() });
404
- var mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
405
- var component = setUp({ props: props, mdmValues: mdmValues });
406
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
407
- var entity = {
408
- uri: 'entities/123',
409
- label: 'Entity Label',
410
- type: 'configuration/entityTypes/HCP'
411
- };
412
- entitySelector.prop('onChange')(entity);
413
- expect(mdmActions.entityDeleted).toHaveBeenCalledWith(modifiedEntity.uri);
414
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
415
- attributeType: props.attributeType,
416
- uri: props.attributeValue.uri,
417
- value: __assign(__assign({}, props.attributeValue), { label: entity.label, refEntity: [
418
- {
419
- objectURI: entity.uri,
420
- type: entity.type
421
- }
422
- ], refRelation: [
423
- {
424
- objectURI: 'relations/123referencedAttrUri',
425
- type: 'configuration/sources/Reltio'
426
- }
427
- ] })
327
+ options = react_2.screen.getAllByRole('option');
328
+ expect(options[0]).toHaveTextContent('organization entity 1');
329
+ expect(options[1]).toHaveTextContent('organization entity 2');
330
+ return [4 /*yield*/, user.click(options[1])];
331
+ case 3:
332
+ _a.sent();
333
+ expect(defaultProps.onChangeAttribute).toHaveBeenCalledWith({
334
+ attributeType: defaultProps.attributeType,
335
+ uri: defaultProps.attributeValue.uri,
336
+ value: __assign(__assign({}, defaultProps.attributeValue), { label: 'organization entity 2', refEntity: [{ objectURI: 'entities/0G49Cnu', type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
428
337
  });
429
- });
430
- it('should call onChangeAttribute prop with initial refEntity and refRelation if initial entity was selected', function () {
431
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
432
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
433
- attributes: {},
434
- refEntity: [
435
- {
436
- objectURI: 'entities/initialEntity',
437
- type: 'configuration/entityTypes/HCP',
438
- crosswalks: [{}]
439
- }
440
- ],
441
- refRelation: [
442
- {
443
- objectURI: 'relations/123referencedAttrUri',
444
- type: 'configuration/sources/Reltio',
445
- crosswalks: [{}, {}]
446
- }
447
- ]
448
- }, onChangeAttribute: jest.fn() });
449
- var component = setUp({ props: props });
450
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
451
- var entity = {
452
- uri: 'entities/123',
453
- label: 'Entity Label',
454
- type: 'configuration/entityTypes/HCP'
455
- };
456
- entitySelector.prop('onChange')(entity);
457
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
458
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
459
- attributeType: props.attributeType,
460
- uri: props.attributeValue.uri,
461
- value: __assign(__assign({}, props.attributeValue), { label: entity.label, refEntity: [
462
- {
463
- objectURI: entity.uri,
464
- type: entity.type
465
- }
466
- ], refRelation: [
338
+ return [2 /*return*/];
339
+ }
340
+ });
341
+ }); });
342
+ describe('entity changing', function () {
343
+ it('should deactivate referenced entity missed error if it is set', function () { return __awaiter(void 0, void 0, void 0, function () {
344
+ var props, user;
345
+ return __generator(this, function (_a) {
346
+ switch (_a.label) {
347
+ case 0:
348
+ props = __assign(__assign({}, defaultProps), { errors: [
467
349
  {
468
- objectURI: 'relations/123referencedAttrUri',
469
- type: 'configuration/sources/Reltio'
350
+ parentUri: defaultProps.attributeValue.uri,
351
+ uri: '',
352
+ attributeTypeUri: metadata_test_data_1.referenceAttrType.uri,
353
+ message: 'Entity is required',
354
+ type: mdm_sdk_1.ErrorType.missedRefEntity
470
355
  }
471
- ] })
472
- });
473
- var initialEntity = {
474
- uri: 'entities/initialEntity',
475
- label: 'Initial Entity Label',
476
- type: 'configuration/entityTypes/HCP'
477
- };
478
- entitySelector.prop('onChange')(initialEntity);
479
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
480
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
481
- attributeType: props.attributeType,
482
- uri: props.attributeValue.uri,
483
- value: __assign(__assign({}, props.attributeValue), { label: initialEntity.label, refEntity: props.attributeValue.refEntity, refRelation: props.attributeValue.refRelation })
484
- });
485
- });
356
+ ] });
357
+ user = setUp({ props: props }).user;
358
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
359
+ case 1:
360
+ _a.sent();
361
+ return [4 /*yield*/, user.click(react_2.screen.getByText('organization entity 1'))];
362
+ case 2:
363
+ _a.sent();
364
+ expect(mdmActions.errorDeactivated).toHaveBeenCalledWith('configuration/entityTypes/Contact/attributes/affiliatedwith--entities/0C30cfF/attributes/Contact/T79PZtL');
365
+ return [2 /*return*/];
366
+ }
486
367
  });
487
- describe('onCreate behavior', function () {
488
- it('should create new entity, call onUpdateModifiedEntity and onChangeAttribute props', function () {
489
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
490
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
491
- attributes: {}
492
- }, onChangeAttribute: jest.fn() });
493
- var component = setUp({ props: props });
494
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
495
- var entityTypeUri = 'configuration/entityTypes/HCP';
496
- var mockedNewEntity = {
497
- uri: 'entities/uri$$1',
498
- label: 'New entity!'
499
- };
500
- mdm_sdk_1.createTemporaryEntity.mockReturnValue(mockedNewEntity);
501
- entitySelector.prop('onCreate')(entityTypeUri);
502
- expect(mdm_sdk_1.createTemporaryEntity).toHaveBeenCalledWith(expect.objectContaining({
503
- entityTypeUri: entityTypeUri,
504
- attributeTypes: [
505
- {
506
- label: 'Nickname',
507
- name: 'Nick',
508
- type: 'String',
509
- uri: 'configuration/entityTypes/Organization/attributes/Nick'
510
- },
511
- {
512
- label: 'Name',
513
- name: 'Name',
514
- type: 'String',
515
- uri: 'configuration/entityTypes/Organization/attributes/Name'
516
- }
517
- ]
518
- }));
519
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
520
- expect(mdmActions.entityCreated).toHaveBeenCalledWith(mockedNewEntity);
521
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
522
- attributeType: props.attributeType,
523
- uri: props.attributeValue.uri,
524
- value: __assign(__assign({}, props.attributeValue), { label: mockedNewEntity.label, refEntity: [
525
- {
526
- objectURI: mockedNewEntity.uri,
527
- type: mockedNewEntity.type
368
+ }); });
369
+ it('should call onDeleteModifiedEntity prop before onChangeAttribute if modified entity prop is defined', function () { return __awaiter(void 0, void 0, void 0, function () {
370
+ var refEntityUri, modifiedEntities, props, mdmValues, user;
371
+ var _a;
372
+ return __generator(this, function (_b) {
373
+ switch (_b.label) {
374
+ case 0:
375
+ refEntityUri = 'entities/uri$$JsO92Ns';
376
+ modifiedEntities = (_a = {},
377
+ _a[refEntityUri] = {
378
+ uri: refEntityUri,
379
+ type: 'configuration/entityTypes/Organization',
380
+ attributes: {
381
+ Name: [
382
+ {
383
+ uri: 'entities/uri$$JsO92Ns/attributes/Name/$uri7JsbN0l',
384
+ type: 'configuration/entityTypes/Organization/attributes/Name',
385
+ value: 'name value'
386
+ }
387
+ ]
528
388
  }
529
- ], refRelation: [
530
- {
531
- objectURI: 'relations/123referencedAttrUri',
532
- type: 'configuration/sources/Reltio'
533
- }
534
- ] })
535
- });
536
- });
537
- it('should call onDeleteModifiedEntity prop before onUpdateModifiedEntity/onChangeAttribute if modified entity prop is defined', function () {
538
- var _a;
539
- var entityUri = 'entities/uri$$567';
540
- var modifiedEntity = { uri: entityUri, attributes: {} };
541
- var modifiedEntities = (_a = {}, _a[entityUri] = modifiedEntity, _a);
542
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
543
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
389
+ },
390
+ _a);
391
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { refEntity: [
392
+ {
393
+ crosswalks: [],
394
+ objectURI: refEntityUri,
395
+ type: 'configuration/entityTypes/Organization'
396
+ }
397
+ ] }) });
398
+ mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
399
+ user = setUp({ props: props, mdmValues: mdmValues }).user;
400
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
401
+ case 1:
402
+ _b.sent();
403
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
404
+ case 2:
405
+ _b.sent();
406
+ return [4 /*yield*/, user.click(react_2.screen.getByText('organization entity 1'))];
407
+ case 3:
408
+ _b.sent();
409
+ expect(mdmActions.entityDeleted).toHaveBeenCalledWith(refEntityUri);
410
+ expect(props.onChangeAttribute).toHaveBeenCalledWith({
411
+ attributeType: props.attributeType,
412
+ uri: props.attributeValue.uri,
413
+ value: __assign(__assign({}, props.attributeValue), { label: 'organization entity 1', refEntity: [{ objectURI: 'entities/0C32GxR', type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
414
+ });
415
+ return [2 /*return*/];
416
+ }
417
+ });
418
+ }); });
419
+ it('should call onChangeAttribute prop with initial refEntity and refRelation if initial entity was selected', function () { return __awaiter(void 0, void 0, void 0, function () {
420
+ var props, user;
421
+ return __generator(this, function (_a) {
422
+ switch (_a.label) {
423
+ case 0:
424
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { label: 'organization entity 1', refEntity: [
425
+ {
426
+ crosswalks: [],
427
+ objectURI: 'entities/0C32GxR',
428
+ type: 'configuration/entityTypes/Organization'
429
+ }
430
+ ], refRelation: [
431
+ {
432
+ crosswalks: [],
433
+ objectURI: 'relations/T79PZtL',
434
+ type: 'configuration/sources/Reltio'
435
+ }
436
+ ] }) });
437
+ user = setUp({ props: props }).user;
438
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
439
+ case 1:
440
+ _a.sent();
441
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
442
+ case 2:
443
+ _a.sent();
444
+ return [4 /*yield*/, user.click(react_2.screen.getByText('organization entity 2'))];
445
+ case 3:
446
+ _a.sent();
447
+ expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
448
+ expect(props.onChangeAttribute).toHaveBeenCalledWith({
449
+ attributeType: props.attributeType,
450
+ uri: props.attributeValue.uri,
451
+ value: __assign(__assign({}, props.attributeValue), { label: 'organization entity 2', refEntity: [{ objectURI: 'entities/0G49Cnu', type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
452
+ });
453
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
454
+ case 4:
455
+ _a.sent();
456
+ return [4 /*yield*/, user.click((0, react_2.within)(react_2.screen.getByRole('tooltip')).getByText('organization entity 1'))];
457
+ case 5:
458
+ _a.sent();
459
+ expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
460
+ expect(props.onChangeAttribute).toHaveBeenCalledWith({
461
+ attributeType: props.attributeType,
462
+ uri: props.attributeValue.uri,
463
+ value: props.attributeValue
464
+ });
465
+ return [2 /*return*/];
466
+ }
467
+ });
468
+ }); });
469
+ });
470
+ describe('entity creating', function () {
471
+ it('should create new entity, call onChangeAttribute prop and entityCreated mdm action correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
472
+ var user;
473
+ return __generator(this, function (_a) {
474
+ switch (_a.label) {
475
+ case 0:
476
+ user = setUp().user;
477
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
478
+ case 1:
479
+ _a.sent();
480
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
481
+ case 2:
482
+ _a.sent();
483
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create new Organization'))];
484
+ case 3:
485
+ _a.sent();
486
+ expect(defaultProps.onChangeAttribute).toHaveBeenCalledWith({
487
+ attributeType: defaultProps.attributeType,
488
+ uri: defaultProps.attributeValue.uri,
489
+ value: __assign(__assign({}, defaultProps.attributeValue), { label: undefined, refEntity: [{ objectURI: expect.any(String), type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
490
+ });
491
+ expect(mdmActions.entityCreated).toHaveBeenCalledWith({
544
492
  attributes: {},
545
- refEntity: [
546
- {
547
- objectURI: entityUri,
548
- type: 'configuration/entityTypes/HCP',
549
- crosswalks: [{}]
550
- }
551
- ]
552
- }, onChangeAttribute: jest.fn() });
553
- var mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
554
- var component = setUp({ props: props, mdmValues: mdmValues });
555
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
556
- var entityTypeUri = 'configuration/entityTypes/HCP';
557
- var mockedNewEntity = {
558
- uri: 'entities/uri$$1',
559
- label: 'New entity!'
560
- };
561
- mdm_sdk_1.createTemporaryEntity.mockReturnValue(mockedNewEntity);
562
- entitySelector.prop('onCreate')(entityTypeUri);
563
- expect(mdm_sdk_1.createTemporaryEntity).toHaveBeenCalledWith(expect.objectContaining({ entityTypeUri: entityTypeUri }));
564
- expect(mdmActions.entityDeleted).toHaveBeenCalledWith(modifiedEntity.uri);
565
- expect(mdmActions.entityCreated).toHaveBeenCalledWith(mockedNewEntity);
566
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
567
- attributeType: props.attributeType,
568
- uri: props.attributeValue.uri,
569
- value: __assign(__assign({}, props.attributeValue), { label: mockedNewEntity.label, refEntity: [
570
- {
571
- objectURI: mockedNewEntity.uri,
572
- type: mockedNewEntity.type
573
- }
574
- ], refRelation: [
575
- {
576
- objectURI: 'relations/123referencedAttrUri',
577
- type: 'configuration/sources/Reltio'
493
+ timestamp: expect.any(Number),
494
+ type: 'configuration/entityTypes/Organization',
495
+ uri: expect.any(String)
496
+ });
497
+ expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
498
+ return [2 /*return*/];
499
+ }
500
+ });
501
+ }); });
502
+ it('should call entityDeleted mdm action before entityCreated/onChangeAttribute if modified entity prop is defined', function () { return __awaiter(void 0, void 0, void 0, function () {
503
+ var refEntityUri, modifiedEntities, props, mdmValues, user;
504
+ var _a;
505
+ return __generator(this, function (_b) {
506
+ switch (_b.label) {
507
+ case 0:
508
+ refEntityUri = 'entities/uri$$JsO92Ns';
509
+ modifiedEntities = (_a = {},
510
+ _a[refEntityUri] = {
511
+ uri: refEntityUri,
512
+ type: 'configuration/entityTypes/Organization',
513
+ attributes: {
514
+ Name: [
515
+ {
516
+ uri: 'entities/uri$$JsO92Ns/attributes/Name/$uri7JsbN0l',
517
+ type: 'configuration/entityTypes/Organization/attributes/Name',
518
+ value: 'name value'
519
+ }
520
+ ]
578
521
  }
579
- ] })
580
- });
581
- });
582
- it('should create new entity with init value when onCreate prop was called with initValue argument', function () {
583
- var props = __assign(__assign({}, defaultProps), { attributeValue: {
584
- uri: 'entities/123/attributes/affiliatedwith/123referencedAttrUri',
585
- attributes: {}
586
- }, onChangeAttribute: jest.fn(), mode: 'Editing' });
587
- var component = setUp({ props: props });
588
- var entitySelector = component.find(EntitySelector_1.EntitySelector);
589
- var entityTypeUri = 'configuration/entityTypes/HCP';
590
- var initValue = '123';
591
- var mockedNewEntity = {
592
- uri: 'entities/uri$$1',
593
- label: 'New entity!'
594
- };
595
- mdm_sdk_1.createTemporaryEntity.mockReturnValue(mockedNewEntity);
596
- entitySelector.prop('onCreate')(entityTypeUri, initValue);
597
- expect(mdm_sdk_1.createTemporaryEntity).toHaveBeenCalledWith({
598
- entityTypeUri: entityTypeUri,
599
- initValue: initValue,
600
- attributeTypes: [
601
- {
602
- label: 'Nickname',
603
- name: 'Nick',
604
- type: 'String',
605
- uri: 'configuration/entityTypes/Organization/attributes/Nick'
606
522
  },
607
- {
608
- label: 'Name',
609
- name: 'Name',
610
- type: 'String',
611
- uri: 'configuration/entityTypes/Organization/attributes/Name'
612
- }
613
- ],
614
- metadata: metadata_test_data_1.metadata,
615
- mode: 'Editing'
616
- });
617
- expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
618
- expect(mdmActions.entityCreated).toHaveBeenCalledWith(mockedNewEntity);
619
- expect(props.onChangeAttribute).toHaveBeenCalledWith({
620
- attributeType: props.attributeType,
621
- uri: props.attributeValue.uri,
622
- value: __assign(__assign({}, props.attributeValue), { label: mockedNewEntity.label, refEntity: [
623
- {
624
- objectURI: mockedNewEntity.uri,
625
- type: mockedNewEntity.type
626
- }
627
- ], refRelation: [
628
- {
629
- objectURI: 'relations/123referencedAttrUri',
630
- type: 'configuration/sources/Reltio'
631
- }
632
- ] })
633
- });
634
- });
523
+ _a);
524
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { refEntity: [
525
+ {
526
+ crosswalks: [],
527
+ objectURI: refEntityUri,
528
+ type: 'configuration/entityTypes/Organization'
529
+ }
530
+ ] }) });
531
+ mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
532
+ user = setUp({ props: props, mdmValues: mdmValues }).user;
533
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
534
+ case 1:
535
+ _b.sent();
536
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
537
+ case 2:
538
+ _b.sent();
539
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create new Organization'))];
540
+ case 3:
541
+ _b.sent();
542
+ expect(mdmActions.entityDeleted).toHaveBeenCalledWith(refEntityUri);
543
+ expect(mdmActions.entityCreated).toHaveBeenCalledWith({
544
+ attributes: {},
545
+ timestamp: expect.any(Number),
546
+ type: 'configuration/entityTypes/Organization',
547
+ uri: expect.any(String)
548
+ });
549
+ expect(props.onChangeAttribute).toHaveBeenCalledWith({
550
+ attributeType: props.attributeType,
551
+ uri: props.attributeValue.uri,
552
+ value: __assign(__assign({}, props.attributeValue), { label: undefined, refEntity: [{ objectURI: expect.any(String), type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
553
+ });
554
+ return [2 /*return*/];
555
+ }
635
556
  });
636
- });
557
+ }); });
558
+ it('should create new entity with init value when onCreate prop was called with initValue argument', function () { return __awaiter(void 0, void 0, void 0, function () {
559
+ var props, user;
560
+ return __generator(this, function (_a) {
561
+ switch (_a.label) {
562
+ case 0:
563
+ props = __assign(__assign({}, defaultProps), { attributeValue: __assign(__assign({}, defaultProps.attributeValue), { label: 'organization entity 1', refEntity: [
564
+ {
565
+ crosswalks: [],
566
+ objectURI: 'entities/0C32GxR',
567
+ type: 'configuration/entityTypes/Organization'
568
+ }
569
+ ], refRelation: [
570
+ {
571
+ crosswalks: [],
572
+ objectURI: 'relations/T79PZtL',
573
+ type: 'configuration/sources/Reltio'
574
+ }
575
+ ] }) });
576
+ user = setUp({ props: props }).user;
577
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
578
+ case 1:
579
+ _a.sent();
580
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
581
+ case 2:
582
+ _a.sent();
583
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create new Organization'))];
584
+ case 3:
585
+ _a.sent();
586
+ expect(mdmActions.entityDeleted).not.toHaveBeenCalled();
587
+ expect(mdmActions.entityCreated).toHaveBeenCalledWith({
588
+ attributes: {},
589
+ timestamp: expect.any(Number),
590
+ type: 'configuration/entityTypes/Organization',
591
+ uri: expect.any(String)
592
+ });
593
+ expect(props.onChangeAttribute).toHaveBeenCalledWith({
594
+ attributeType: props.attributeType,
595
+ uri: props.attributeValue.uri,
596
+ value: __assign(__assign({}, props.attributeValue), { label: undefined, refEntity: [{ objectURI: expect.any(String), type: 'configuration/entityTypes/Organization' }], refRelation: [{ objectURI: 'relations/T79PZtL', type: 'configuration/sources/Reltio' }] })
597
+ });
598
+ return [2 /*return*/];
599
+ }
600
+ });
601
+ }); });
637
602
  });
638
- describe('useScrollToAttributeError tests', function () {
603
+ describe('errors highlighting', function () {
639
604
  var fullError = {
640
- type: 'invalid',
605
+ type: mdm_sdk_1.ErrorType.invalid,
641
606
  attributeTypeUri: defaultProps.attributeType.uri,
642
607
  parentUri: defaultProps.attributeValue.uri,
643
608
  uri: 'someUrl',
644
- source: 'validationService',
645
- severity: 'ERROR'
609
+ source: mdm_sdk_1.ErrorSource.validationService,
610
+ severity: mdm_sdk_1.ErrorSeverity.ERROR
646
611
  };
647
612
  it('should not highlight error if it have uri', function () {
648
- var component = setUp({ error: fullError });
649
- expect(component.find('ReferenceAttributeEditor').prop('highlightedError')).toBe(null);
650
- expect(useScrollToAttributeError_1.useScrollToAttributeError.mock.calls[0][0]).toMatchObject({
651
- highlightedError: null,
652
- isSimple: true
653
- });
613
+ setUp({ error: fullError });
614
+ expect(scrollIntoRef).not.toHaveBeenCalledWith();
654
615
  });
655
616
  it('should highlight error if it have same parent uri, empty uri, and attribute type uri', function () {
656
617
  var error = __assign(__assign({}, fullError), { uri: '' });
657
- var component = setUp({ error: error });
658
- var highlightedError = {
659
- element: error,
660
- highlightError: highlightErrorSpy,
661
- scrollIntoRef: scrollIntoRefSpy,
662
- type: ScrollToElementContext_1.ScrollType.Error
663
- };
664
- expect(component.find('ReferenceAttributeEditor').prop('highlightedError')).toMatchObject(highlightedError);
665
- expect(useScrollToAttributeError_1.useScrollToAttributeError.mock.calls[0][0]).toMatchObject({ highlightedError: highlightedError, isSimple: true });
618
+ setUp({ error: error });
619
+ expect(scrollIntoRef).toHaveBeenCalled();
666
620
  });
667
621
  });
668
622
  });