@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
@@ -51,548 +51,401 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  var react_1 = __importDefault(require("react"));
54
- var enzyme_1 = require("enzyme");
55
- var test_utils_1 = require("react-dom/test-utils");
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
56
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
57
- var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
58
57
  var EntitySelector_1 = require("./EntitySelector");
59
- var metadata = {
58
+ var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
59
+ var test_utils_1 = require("../test-utils");
60
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { typeAheadSearch: jest.fn() })); });
61
+ var allEntities = [
62
+ {
63
+ uri: 'entities/uri1',
64
+ label: 'Earth',
65
+ secondaryLabel: 'Our planet',
66
+ type: 'configuration/entityTypes/HCP'
67
+ },
68
+ {
69
+ uri: 'entities/uri2',
70
+ label: '',
71
+ type: 'configuration/entityTypes/HCP'
72
+ },
73
+ {
74
+ uri: 'entities/uri3',
75
+ label: 'Phone',
76
+ secondaryLabel: 'Device for calls',
77
+ type: 'configuration/entityTypes/Company'
78
+ },
79
+ {
80
+ uri: 'entities/uri4',
81
+ label: 'Book',
82
+ type: 'configuration/entityTypes/Company'
83
+ }
84
+ ];
85
+ var defaultMetadata = {
60
86
  entityTypes: [
61
87
  {
62
88
  uri: 'configuration/entityTypes/HCP',
63
- label: 'HCP'
64
- },
65
- {
66
- uri: 'configuration/entityTypes/HCA',
67
- label: 'HCA'
89
+ label: 'HCP',
90
+ attributes: [
91
+ {
92
+ uri: 'configuration/entityTypes/HCP/attributes/FirstName',
93
+ type: 'String',
94
+ name: 'FirstName',
95
+ label: 'First Name'
96
+ },
97
+ {
98
+ uri: 'configuration/entityTypes/HCP/attributes/LastName',
99
+ type: 'String',
100
+ name: 'LastName',
101
+ label: 'Last Name'
102
+ }
103
+ ]
68
104
  },
69
- {
70
- uri: 'configuration/entityTypes/HCO',
71
- label: 'HCO',
72
- abstract: true
73
- }
105
+ { uri: 'configuration/entityTypes/Company', label: 'Company', attributes: [] },
106
+ { uri: 'configuration/entityTypes/HCO', label: 'HCO', abstract: true }
74
107
  ]
75
108
  };
76
- var mockOnChange = jest.fn();
77
- var mockEntities = [];
78
- jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { typeAheadSearch: jest.fn() })); });
79
- describe('EntitySelector', function () {
80
- var globalSearchRequestOptions = {
81
- searchOptions: 'searchByOv',
82
- activityFilter: undefined,
83
- globalFilter: '123'
109
+ var defaultGlobalSearchRequestOptions = {
110
+ searchOptions: 'searchByOv',
111
+ activityFilter: undefined,
112
+ globalFilter: '123'
113
+ };
114
+ var defaultProps = {
115
+ metadata: defaultMetadata,
116
+ globalSearchRequestOptions: defaultGlobalSearchRequestOptions,
117
+ mode: mdm_sdk_1.Mode.Editing,
118
+ onChange: jest.fn()
119
+ };
120
+ var defaultMdmValues = {
121
+ modifiedEntities: {},
122
+ dependentLookups: { structure: {}, editors: {}, initedTypeUris: [] },
123
+ uiPath: 'https://reltio.com'
124
+ };
125
+ var defaultMdmActions = {
126
+ addAttributes: jest.fn(),
127
+ removeAttribute: jest.fn(),
128
+ modifyAttribute: jest.fn(),
129
+ openEntity: jest.fn()
130
+ };
131
+ var setUp = function (_a) {
132
+ 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.mdmActions, mdmActions = _e === void 0 ? defaultMdmActions : _e;
133
+ var user = user_event_1.default.setup();
134
+ var Providers = function (_a) {
135
+ var children = _a.children;
136
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: mdmActions }, children));
84
137
  };
85
- beforeAll(function () {
86
- mdm_sdk_1.typeAheadSearch.mockImplementation(function () {
87
- return new Promise(function (resolve) {
88
- resolve(mockEntities);
138
+ return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(EntitySelector_1.EntitySelector, __assign({}, props)), { wrapper: Providers })), { user: user });
139
+ };
140
+ describe('Entity selector tests', function () {
141
+ beforeEach(function () {
142
+ mdm_sdk_1.typeAheadSearch.mockImplementation(function (entityTypes, searchValue) {
143
+ if (searchValue === void 0) { searchValue = ''; }
144
+ var filteredEntities = allEntities.filter(function (_a) {
145
+ var type = _a.type, label = _a.label;
146
+ return entityTypes.some(function (_a) {
147
+ var uri = _a.uri;
148
+ return type === uri;
149
+ }) &&
150
+ label.toLowerCase().startsWith(searchValue.toLowerCase());
89
151
  });
152
+ return Promise.resolve(filteredEntities);
90
153
  });
91
154
  });
92
- describe('label', function () {
93
- it('for one entity type', function () {
94
- var entityTypesUris = ['configuration/entityTypes/HCP'];
95
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
96
- expect(wrapper.find('DropDownSelector').prop('label')).toBe('Select HCP profile');
97
- });
98
- it('for several entity types', function () {
99
- var entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
100
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
101
- expect(wrapper.find('DropDownSelector').prop('label')).toBe('Select profile');
102
- });
103
- });
104
- describe('components', function () {
105
- it('should contain Group in case several entity types', function () {
106
- var entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
107
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
108
- expect(wrapper.find('DropDownSelector').prop('components').Group).toBeDefined();
109
- });
110
- it('should contain ClearIndicator in case temp entity', function () {
111
- var entityTypesUris = ['configuration/entityTypes/HCP'];
112
- var tempEntity = {
113
- entityUri: 'entities/uri$$12345',
114
- entityType: entityTypesUris[0]
115
- };
116
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { entity: tempEntity, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
117
- expect(wrapper.find('DropDownSelector').prop('components').ClearIndicator).toBeDefined();
118
- });
155
+ afterEach(function () {
156
+ jest.clearAllMocks();
119
157
  });
120
- it('should merge TextFieldProps and provide it to DropDownSelector', function () {
121
- var entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
122
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata, TextFieldProps: { id: 'test' } }));
123
- expect(wrapper.find('DropDownSelector').prop('TextFieldProps')).toEqual({
124
- 'data-reltio-id': 'reltio-entity-selector',
125
- id: 'test'
158
+ it('should render correctly for single entity type', function () { return __awaiter(void 0, void 0, void 0, function () {
159
+ var props, user, options;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0:
163
+ props = __assign(__assign({}, defaultProps), { entityTypesUris: ['configuration/entityTypes/HCP'] });
164
+ user = setUp({ props: props }).user;
165
+ react_2.screen.getByText('Select HCP profile');
166
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
167
+ case 1:
168
+ _a.sent();
169
+ options = react_2.screen.getAllByRole('option');
170
+ expect(options).toHaveLength(2);
171
+ expect(options[0]).toHaveTextContent('HEarth, Our planet');
172
+ expect(options[1]).toHaveTextContent('H<No label>');
173
+ expect(react_2.screen.queryByText('HCP')).not.toBeInTheDocument();
174
+ expect(react_2.screen.queryByText('Create new HCP')).not.toBeInTheDocument();
175
+ expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith([defaultMetadata.entityTypes[0]], '', __assign(__assign({}, defaultGlobalSearchRequestOptions), { max: 20, sendMasked: false }));
176
+ return [2 /*return*/];
177
+ }
126
178
  });
127
- });
128
- it('should call typeAheadSearch on DropDownSelector "getOptions" prop calling', function () { return __awaiter(void 0, void 0, void 0, function () {
129
- var entityTypesUris, tempEntity, wrapper, entityTypes, options;
179
+ }); });
180
+ it('should render correctly for several entity types', function () { return __awaiter(void 0, void 0, void 0, function () {
181
+ var props, user, options;
130
182
  return __generator(this, function (_a) {
131
183
  switch (_a.label) {
132
184
  case 0:
133
- entityTypesUris = ['configuration/entityTypes/HCP'];
134
- tempEntity = {
135
- entityUri: 'entities/uri$$12345',
136
- entityType: entityTypesUris[0]
137
- };
138
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { entity: tempEntity, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata, max: 5, globalSearchRequestOptions: globalSearchRequestOptions }));
139
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
140
- return __generator(this, function (_a) {
141
- wrapper.find('DropDownSelector').prop('getOptions')();
142
- return [2 /*return*/];
143
- });
144
- }); })];
185
+ props = __assign(__assign({}, defaultProps), { entityTypesUris: ['configuration/entityTypes/HCP', 'configuration/entityTypes/Company'] });
186
+ user = setUp({ props: props }).user;
187
+ react_2.screen.getByText('Select profile');
188
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
145
189
  case 1:
146
190
  _a.sent();
147
- entityTypes = [metadata.entityTypes[0]];
148
- options = __assign(__assign({}, globalSearchRequestOptions), { max: 5, sendMasked: false });
149
- expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith(entityTypes, undefined, options);
191
+ options = react_2.screen.getAllByRole('option');
192
+ expect(options).toHaveLength(4);
193
+ react_2.screen.getByText('HCP');
194
+ expect(options[0]).toHaveTextContent('HEarth, Our planet');
195
+ expect(options[1]).toHaveTextContent('H<No label>');
196
+ react_2.screen.getByText('Company');
197
+ expect(options[2]).toHaveTextContent('CPhone, Device for calls');
198
+ expect(options[3]).toHaveTextContent('CBook');
199
+ expect(react_2.screen.queryByText('Create new HCP')).not.toBeInTheDocument();
200
+ expect(react_2.screen.queryByText('Create new Company')).not.toBeInTheDocument();
201
+ expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith([defaultMetadata.entityTypes[0], defaultMetadata.entityTypes[1]], '', __assign(__assign({}, defaultGlobalSearchRequestOptions), { max: 20, sendMasked: false }));
150
202
  return [2 /*return*/];
151
203
  }
152
204
  });
153
205
  }); });
154
- it('should call typeAheadSearch on DropDownSelector "getOptions" prop calling with default max param', function () { return __awaiter(void 0, void 0, void 0, function () {
155
- var entityTypesUris, tempEntity, wrapper, entityTypes, options;
206
+ it('should render correctly for several entity types in case of entities list has only one type', function () { return __awaiter(void 0, void 0, void 0, function () {
207
+ var props, user, options;
156
208
  return __generator(this, function (_a) {
157
209
  switch (_a.label) {
158
210
  case 0:
159
- entityTypesUris = ['configuration/entityTypes/HCP'];
160
- tempEntity = {
161
- entityUri: 'entities/uri$$12345',
162
- entityType: entityTypesUris[0]
163
- };
164
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { entity: tempEntity, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
165
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
166
- return __generator(this, function (_a) {
167
- wrapper.find('DropDownSelector').prop('getOptions')();
168
- return [2 /*return*/];
169
- });
170
- }); })];
211
+ mdm_sdk_1.typeAheadSearch.mockResolvedValue(allEntities.slice(0, 2));
212
+ props = __assign(__assign({}, defaultProps), { entityTypesUris: ['configuration/entityTypes/HCP', 'configuration/entityTypes/Company'] });
213
+ user = setUp({ props: props }).user;
214
+ react_2.screen.getByText('Select profile');
215
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
171
216
  case 1:
172
217
  _a.sent();
173
- entityTypes = [metadata.entityTypes[0]];
174
- options = {
175
- max: 20,
176
- sendMasked: false
177
- };
178
- expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith(entityTypes, undefined, options);
218
+ options = react_2.screen.getAllByRole('option');
219
+ expect(options).toHaveLength(2);
220
+ expect(options[0]).toHaveTextContent('HEarth, Our planet');
221
+ expect(options[1]).toHaveTextContent('H<No label>');
222
+ expect(react_2.screen.queryByText('HCP')).not.toBeInTheDocument();
179
223
  return [2 /*return*/];
180
224
  }
181
225
  });
182
226
  }); });
183
- it('should render EntityCreator in case temp entity', function () {
184
- var mdmValues = { modifiedEntities: {} };
185
- var entityTypesUris = ['configuration/entityTypes/HCP'];
186
- var tempEntity = {
187
- entityUri: 'entities/uri$$12345',
188
- entityType: entityTypesUris[0]
189
- };
190
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
191
- react_1.default.createElement(EntitySelector_1.EntitySelector, { entity: tempEntity, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata })));
192
- expect(wrapper.find('EntityCreator')).toHaveLength(1);
193
- });
194
- it('should not render EntityCreator in case existed entity', function () {
195
- var mdmValues = { modifiedEntities: {} };
196
- var entityTypesUris = ['configuration/entityTypes/HCP'];
197
- var entity = {
198
- entityUri: 'entities/uri12345',
199
- entityType: entityTypesUris[0]
200
- };
201
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
202
- react_1.default.createElement(EntitySelector_1.EntitySelector, { entity: entity, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata })));
203
- expect(wrapper.find('EntityCreator')).toHaveLength(0);
204
- });
205
- it('should add dummy entity in case empty list of options', function () { return __awaiter(void 0, void 0, void 0, function () {
206
- var entityTypesUris, wrapper, options;
227
+ it('should render correctly in case of no results found', function () { return __awaiter(void 0, void 0, void 0, function () {
228
+ var props, user;
207
229
  return __generator(this, function (_a) {
208
230
  switch (_a.label) {
209
231
  case 0:
210
- entityTypesUris = ['configuration/entityTypes/HCP'];
211
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
212
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
213
- return __generator(this, function (_a) {
214
- switch (_a.label) {
215
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
216
- case 1:
217
- options = _a.sent();
218
- return [2 /*return*/];
219
- }
220
- });
221
- }); })];
232
+ mdm_sdk_1.typeAheadSearch.mockResolvedValue([]);
233
+ props = __assign(__assign({}, defaultProps), { entityTypesUris: ['configuration/entityTypes/HCP'] });
234
+ user = setUp({ props: props }).user;
235
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
222
236
  case 1:
223
237
  _a.sent();
224
- expect(options).toEqual([
225
- {
226
- label: '',
227
- uri: '',
228
- entityType: {}
229
- }
230
- ]);
238
+ react_2.screen.getByText('No results found');
231
239
  return [2 /*return*/];
232
240
  }
233
241
  });
234
242
  }); });
235
- it('should process entities list to get options in case one type', function () { return __awaiter(void 0, void 0, void 0, function () {
236
- var entityTypesUris, wrapper, options;
243
+ it('should search correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
244
+ var props, user, options;
237
245
  return __generator(this, function (_a) {
238
246
  switch (_a.label) {
239
247
  case 0:
240
- entityTypesUris = ['configuration/entityTypes/HCP'];
241
- mockEntities = [
242
- {
243
- uri: 'entities/uri12345',
244
- label: '12345',
245
- type: 'configuration/entityTypes/HCP'
246
- },
247
- {
248
- uri: 'entities/uri12346',
249
- label: '12346',
250
- type: 'configuration/entityTypes/HCP'
251
- }
252
- ];
253
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
254
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
255
- return __generator(this, function (_a) {
256
- switch (_a.label) {
257
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
258
- case 1:
259
- options = _a.sent();
260
- return [2 /*return*/];
261
- }
262
- });
263
- }); })];
248
+ props = __assign(__assign({}, defaultProps), { max: 10, entityTypesUris: ['configuration/entityTypes/HCP'] });
249
+ user = setUp({ props: props }).user;
250
+ return [4 /*yield*/, user.type(react_2.screen.getByRole('combobox'), 'ea')];
264
251
  case 1:
265
252
  _a.sent();
266
- expect(options).toEqual([
267
- {
268
- entityType: {
269
- label: 'HCP',
270
- uri: 'configuration/entityTypes/HCP'
271
- },
272
- label: '12345',
273
- type: 'configuration/entityTypes/HCP',
274
- uri: 'entities/uri12345'
275
- },
276
- {
277
- entityType: {
278
- label: 'HCP',
279
- uri: 'configuration/entityTypes/HCP'
280
- },
281
- label: '12346',
282
- type: 'configuration/entityTypes/HCP',
283
- uri: 'entities/uri12346'
284
- }
285
- ]);
253
+ options = react_2.screen.getAllByRole('option');
254
+ expect(options).toHaveLength(1);
255
+ expect(options[0]).toHaveTextContent('HEarth, Our planet');
256
+ expect(mdm_sdk_1.typeAheadSearch).toHaveBeenCalledWith([defaultMetadata.entityTypes[0]], 'ea', __assign(__assign({}, defaultGlobalSearchRequestOptions), { max: 10, sendMasked: false }));
257
+ return [2 /*return*/];
258
+ }
259
+ });
260
+ }); });
261
+ it('should render correctly in case of temp entity', function () { return __awaiter(void 0, void 0, void 0, function () {
262
+ var entityUri, entityType, mdmValues, props, user, entityCreator;
263
+ var _a;
264
+ return __generator(this, function (_b) {
265
+ switch (_b.label) {
266
+ case 0:
267
+ entityUri = 'entities/uri$$123';
268
+ entityType = 'configuration/entityTypes/HCP';
269
+ mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: (_a = {}, _a[entityUri] = { uri: entityUri, type: entityType }, _a) });
270
+ props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, entityTypesUris: [entityType], entity: { entityUri: entityUri, entityType: entityType, entityLabel: 'Temp entity' } });
271
+ user = setUp({ props: props, mdmValues: mdmValues }).user;
272
+ expect(react_2.screen.getByText('New HCP will be created')).not.toHaveAttribute('href');
273
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
274
+ case 1:
275
+ _b.sent();
276
+ entityCreator = react_2.screen.getByTestId('entity-creator');
277
+ (0, react_2.within)(entityCreator).getByText('First Name');
278
+ (0, react_2.within)(entityCreator).getByText('Last Name');
279
+ expect((0, test_utils_1.getMuiIconByName)('Clear')).toBeInTheDocument();
280
+ return [4 /*yield*/, user.click((0, test_utils_1.getMuiIconByName)('Clear'))];
281
+ case 2:
282
+ _b.sent();
283
+ expect(props.onChange).toHaveBeenCalledWith({});
286
284
  return [2 /*return*/];
287
285
  }
288
286
  });
289
287
  }); });
290
- it('should add label <No label> in case empty label', function () { return __awaiter(void 0, void 0, void 0, function () {
291
- var entityTypesUris, wrapper, options;
288
+ it('should render correctly in case of existing entity', function () { return __awaiter(void 0, void 0, void 0, function () {
289
+ var entity, props, user;
292
290
  return __generator(this, function (_a) {
293
291
  switch (_a.label) {
294
292
  case 0:
295
- entityTypesUris = ['configuration/entityTypes/HCP'];
296
- mockEntities = [
297
- {
298
- uri: 'entities/uri12345',
299
- label: '',
300
- type: 'configuration/entityTypes/HCP'
301
- }
302
- ];
303
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
304
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
305
- return __generator(this, function (_a) {
306
- switch (_a.label) {
307
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
308
- case 1:
309
- options = _a.sent();
310
- return [2 /*return*/];
311
- }
312
- });
313
- }); })];
293
+ entity = allEntities[0];
294
+ props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, entityTypesUris: [entity.type], entity: { entityUri: entity.uri, entityType: entity.type, entityLabel: entity.label } });
295
+ user = setUp({ props: props }).user;
296
+ expect(react_2.screen.getByRole('link', { name: 'Earth' })).toHaveAttribute('href', 'https://reltio.com#p~com.reltio.plugins.entity.default.DefaultPerspective_e~entities/uri1');
297
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
314
298
  case 1:
315
299
  _a.sent();
316
- expect(options).toEqual([
317
- {
318
- entityType: {
319
- label: 'HCP',
320
- uri: 'configuration/entityTypes/HCP'
321
- },
322
- label: '<No label>',
323
- type: 'configuration/entityTypes/HCP',
324
- uri: 'entities/uri12345'
325
- }
326
- ]);
300
+ expect(react_2.screen.queryByTestId('entity-creator')).not.toBeInTheDocument();
301
+ expect((0, test_utils_1.getMuiIconByName)('Clear')).not.toBeInTheDocument();
327
302
  return [2 /*return*/];
328
303
  }
329
304
  });
330
305
  }); });
331
- it('should process entities list to get options in case two types', function () { return __awaiter(void 0, void 0, void 0, function () {
332
- var entityTypesUris, wrapper, options;
306
+ it('should not open entity by click on link if "disableLinkClick" select prop is true', function () { return __awaiter(void 0, void 0, void 0, function () {
307
+ var entity, props, user;
333
308
  return __generator(this, function (_a) {
334
309
  switch (_a.label) {
335
310
  case 0:
336
- entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
337
- mockEntities = [
338
- {
339
- uri: 'entities/uri12345',
340
- label: '12345',
341
- type: 'configuration/entityTypes/HCP'
342
- },
343
- {
344
- uri: 'entities/uri12346',
345
- label: '12346',
346
- type: 'configuration/entityTypes/HCA'
347
- }
348
- ];
349
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
350
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
351
- return __generator(this, function (_a) {
352
- switch (_a.label) {
353
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
354
- case 1:
355
- options = _a.sent();
356
- return [2 /*return*/];
357
- }
358
- });
359
- }); })];
311
+ entity = allEntities[0];
312
+ props = __assign(__assign({}, defaultProps), { disableLinkClick: true, mode: mdm_sdk_1.Mode.Editing, entityTypesUris: [entity.type], entity: { entityUri: entity.uri, entityType: entity.type, entityLabel: entity.label } });
313
+ user = setUp({ props: props }).user;
314
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Earth'))];
360
315
  case 1:
361
316
  _a.sent();
362
- expect(options).toEqual([
363
- {
364
- entityType: 'configuration/entityTypes/HCP',
365
- label: 'HCP',
366
- options: [
367
- {
368
- entityType: {
369
- label: 'HCP',
370
- uri: 'configuration/entityTypes/HCP'
371
- },
372
- label: '12345',
373
- type: 'configuration/entityTypes/HCP',
374
- uri: 'entities/uri12345'
375
- }
376
- ]
377
- },
378
- {
379
- entityType: 'configuration/entityTypes/HCA',
380
- label: 'HCA',
381
- options: [
382
- {
383
- entityType: {
384
- label: 'HCA',
385
- uri: 'configuration/entityTypes/HCA'
386
- },
387
- label: '12346',
388
- type: 'configuration/entityTypes/HCA',
389
- uri: 'entities/uri12346'
390
- }
391
- ]
392
- }
393
- ]);
317
+ expect(defaultMdmActions.openEntity).not.toHaveBeenCalled();
394
318
  return [2 /*return*/];
395
319
  }
396
320
  });
397
321
  }); });
398
- it('should process entities list to get options in case two types with entities only for one type', function () { return __awaiter(void 0, void 0, void 0, function () {
399
- var onCreateMock, entityTypesUris, wrapper, options;
322
+ it('should use default behaviour for link if control or command is pressed', function () { return __awaiter(void 0, void 0, void 0, function () {
323
+ var entity, props, user;
400
324
  return __generator(this, function (_a) {
401
325
  switch (_a.label) {
402
326
  case 0:
403
- onCreateMock = jest.fn();
404
- entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
405
- mockEntities = [
406
- {
407
- uri: 'entities/uri12345',
408
- label: '12345',
409
- type: 'configuration/entityTypes/HCP'
410
- }
411
- ];
412
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onCreate: onCreateMock, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
413
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
414
- return __generator(this, function (_a) {
415
- switch (_a.label) {
416
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
417
- case 1:
418
- options = _a.sent();
419
- return [2 /*return*/];
420
- }
421
- });
422
- }); })];
327
+ entity = allEntities[0];
328
+ props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, entityTypesUris: [entity.type], entity: { entityUri: entity.uri, entityType: entity.type, entityLabel: entity.label } });
329
+ user = setUp({ props: props }).user;
330
+ return [4 /*yield*/, user.keyboard('{Control>}')];
423
331
  case 1:
424
332
  _a.sent();
425
- expect(options).toEqual([
426
- {
427
- entityType: 'configuration/entityTypes/HCP',
428
- label: 'HCP',
429
- options: [
430
- {
431
- entityType: {
432
- label: 'HCP',
433
- uri: 'configuration/entityTypes/HCP'
434
- },
435
- label: '12345',
436
- type: 'configuration/entityTypes/HCP',
437
- uri: 'entities/uri12345'
438
- }
439
- ]
440
- },
441
- {
442
- entityType: 'configuration/entityTypes/HCA',
443
- label: 'HCA',
444
- options: [
445
- {
446
- label: '',
447
- uri: '',
448
- entityType: {}
449
- }
450
- ]
451
- }
452
- ]);
333
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Earth'))];
334
+ case 2:
335
+ _a.sent();
336
+ expect(defaultMdmActions.openEntity).not.toHaveBeenCalled();
453
337
  return [2 /*return*/];
454
338
  }
455
339
  });
456
340
  }); });
457
- it('should process entities list to get options in case two types (one is abstract) and with entities only for one type', function () { return __awaiter(void 0, void 0, void 0, function () {
458
- var onCreateMock, entityTypesUris, wrapper, options;
341
+ it('should open entity by click on click in basic case correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
342
+ var entity, props, user;
459
343
  return __generator(this, function (_a) {
460
344
  switch (_a.label) {
461
345
  case 0:
462
- expect.assertions(1);
463
- onCreateMock = jest.fn();
464
- entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCO'];
465
- mockEntities = [
466
- {
467
- uri: 'entities/uri12345',
468
- label: '12345',
469
- type: 'configuration/entityTypes/HCP'
470
- }
471
- ];
472
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onCreate: onCreateMock, onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
473
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
474
- return __generator(this, function (_a) {
475
- switch (_a.label) {
476
- case 0: return [4 /*yield*/, wrapper.find('DropDownSelector').prop('getOptions')()];
477
- case 1:
478
- options = _a.sent();
479
- return [2 /*return*/];
480
- }
481
- });
482
- }); })];
346
+ entity = allEntities[0];
347
+ props = __assign(__assign({}, defaultProps), { mode: mdm_sdk_1.Mode.Editing, entityTypesUris: [entity.type], entity: { entityUri: entity.uri, entityType: entity.type, entityLabel: entity.label } });
348
+ user = setUp({ props: props }).user;
349
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Earth'))];
483
350
  case 1:
484
351
  _a.sent();
485
- expect(options).toEqual([
486
- {
487
- entityType: {
488
- label: 'HCP',
489
- uri: 'configuration/entityTypes/HCP'
490
- },
491
- label: '12345',
492
- type: 'configuration/entityTypes/HCP',
493
- uri: 'entities/uri12345'
494
- }
495
- ]);
352
+ expect(defaultMdmActions.openEntity).toHaveBeenCalledWith({ uri: 'entities/uri1' });
496
353
  return [2 /*return*/];
497
354
  }
498
355
  });
499
356
  }); });
500
- it('should not pass onCreate to DropDownSelector if onCreate prop is not provided', function () { return __awaiter(void 0, void 0, void 0, function () {
501
- var entityTypesUris, wrapper;
357
+ it('should change entity correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
358
+ var props, user;
502
359
  return __generator(this, function (_a) {
503
- entityTypesUris = ['configuration/entityTypes/HCP'];
504
- wrapper = (0, enzyme_1.mount)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
505
- expect(wrapper.find('DropDownSelector').prop('onCreate')).toBe(undefined);
506
- expect(wrapper.find('DropDownSelector').prop('createLabel')).toBe(undefined);
507
- return [2 /*return*/];
360
+ switch (_a.label) {
361
+ case 0:
362
+ props = __assign(__assign({}, defaultProps), { entityTypesUris: ['configuration/entityTypes/HCP'] });
363
+ user = setUp({ props: props }).user;
364
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
365
+ case 1:
366
+ _a.sent();
367
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Earth'))];
368
+ case 2:
369
+ _a.sent();
370
+ expect(props.onChange).toHaveBeenCalledWith(__assign({ entityType: defaultMetadata.entityTypes[0] }, allEntities[0]));
371
+ return [2 /*return*/];
372
+ }
508
373
  });
509
374
  }); });
510
- it('should run onCreate for one type', function () { return __awaiter(void 0, void 0, void 0, function () {
511
- var entityTypesUris, onCreateMock, wrapper;
375
+ it('should render create button and handle click correctly for single entity type in case of onCreate prop is passed and input is filled', function () { return __awaiter(void 0, void 0, void 0, function () {
376
+ var props, user;
512
377
  return __generator(this, function (_a) {
513
378
  switch (_a.label) {
514
379
  case 0:
515
- entityTypesUris = ['configuration/entityTypes/HCP'];
516
- onCreateMock = jest.fn();
517
- wrapper = (0, enzyme_1.mount)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, onCreate: onCreateMock, entityTypesUris: entityTypesUris, metadata: metadata }));
518
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
519
- return __generator(this, function (_a) {
520
- wrapper.find('DropDownSelector').prop('onInputChange')('someValue');
521
- return [2 /*return*/];
522
- });
523
- }); })];
380
+ props = __assign(__assign({}, defaultProps), { onCreate: jest.fn(), entityTypesUris: ['configuration/entityTypes/HCP'] });
381
+ user = setUp({ props: props }).user;
382
+ return [4 /*yield*/, user.type(react_2.screen.getByRole('combobox'), 'ea')];
524
383
  case 1:
525
384
  _a.sent();
526
- wrapper.update();
527
- (0, test_utils_1.act)(function () { return wrapper.find('DropDownSelector').prop('onCreate')('someValue'); });
528
- expect(onCreateMock).toHaveBeenCalledWith('configuration/entityTypes/HCP', 'someValue');
529
- expect(wrapper.find('DropDownSelector').prop('createLabel')).toEqual('Create "someValue" as new HCP');
385
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create "ea" as new HCP'))];
386
+ case 2:
387
+ _a.sent();
388
+ expect(props.onCreate).toHaveBeenCalledWith('configuration/entityTypes/HCP', 'ea');
530
389
  return [2 /*return*/];
531
390
  }
532
391
  });
533
392
  }); });
534
- it('should run onCreate for several types', function () { return __awaiter(void 0, void 0, void 0, function () {
535
- var entityTypesUris, onCreateMock, wrapper;
393
+ it('should render create button and handle click correctly for single entity type in case of onCreate prop is passed and input is empty', function () { return __awaiter(void 0, void 0, void 0, function () {
394
+ var props, user;
536
395
  return __generator(this, function (_a) {
537
396
  switch (_a.label) {
538
397
  case 0:
539
- entityTypesUris = ['configuration/entityTypes/HCP', 'configuration/entityTypes/HCA'];
540
- onCreateMock = jest.fn();
541
- wrapper = (0, enzyme_1.mount)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, onCreate: onCreateMock, entityTypesUris: entityTypesUris, metadata: metadata }));
542
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
543
- return __generator(this, function (_a) {
544
- wrapper.find('DropDownSelector').prop('onInputChange')('someValue');
545
- wrapper.find('DropDownSelector').prop('onCreate')('someValue', 'configuration/entityTypes/HCA');
546
- return [2 /*return*/];
547
- });
548
- }); })];
398
+ props = __assign(__assign({}, defaultProps), { onCreate: jest.fn(), entityTypesUris: ['configuration/entityTypes/HCP'] });
399
+ user = setUp({ props: props }).user;
400
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
549
401
  case 1:
550
402
  _a.sent();
551
- expect(onCreateMock).toHaveBeenCalledWith('configuration/entityTypes/HCA', 'someValue');
403
+ react_2.screen.getByText('Create new HCP');
404
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create new HCP'))];
405
+ case 2:
406
+ _a.sent();
407
+ expect(props.onCreate).toHaveBeenCalledWith('configuration/entityTypes/HCP', '');
552
408
  return [2 /*return*/];
553
409
  }
554
410
  });
555
411
  }); });
556
- it('should run onChange', function () { return __awaiter(void 0, void 0, void 0, function () {
557
- var entityTypesUris, wrapper;
412
+ it('should render create buttons and handle click correctly for several entity types in case of onCreate prop is passed and input is filled', function () { return __awaiter(void 0, void 0, void 0, function () {
413
+ var props, user, input;
558
414
  return __generator(this, function (_a) {
559
415
  switch (_a.label) {
560
416
  case 0:
561
- entityTypesUris = ['configuration/entityTypes/HCP'];
562
- wrapper = (0, enzyme_1.mount)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
563
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
564
- return __generator(this, function (_a) {
565
- wrapper.find('DropDownSelector').prop('onInputChange')('someValue');
566
- wrapper.find('DropDownSelector').prop('onChange')('newValue');
567
- return [2 /*return*/];
568
- });
569
- }); })];
417
+ props = __assign(__assign({}, defaultProps), { onCreate: jest.fn(), entityTypesUris: ['configuration/entityTypes/HCP', 'configuration/entityTypes/Company'] });
418
+ user = setUp({ props: props }).user;
419
+ input = react_2.screen.getByRole('combobox');
420
+ return [4 /*yield*/, user.type(input, 'bo')];
570
421
  case 1:
571
422
  _a.sent();
572
- expect(mockOnChange).toHaveBeenCalledWith('newValue');
573
- expect(wrapper.find('Input').prop('value')).toBe('');
423
+ expect(input).toHaveValue('bo');
424
+ react_2.screen.getByText('Create "bo" as new HCP');
425
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create "bo" as new Company'))];
426
+ case 2:
427
+ _a.sent();
428
+ expect(props.onCreate).toHaveBeenCalledWith('configuration/entityTypes/Company', 'bo');
429
+ expect(input).toHaveValue('');
574
430
  return [2 /*return*/];
575
431
  }
576
432
  });
577
433
  }); });
578
- it('should run onClear', function () { return __awaiter(void 0, void 0, void 0, function () {
579
- var entityTypesUris, wrapper;
434
+ it('should render create buttons and handle click correctly for several entity types in case of onCreate prop is passed and input is empty', function () { return __awaiter(void 0, void 0, void 0, function () {
435
+ var props, user;
580
436
  return __generator(this, function (_a) {
581
437
  switch (_a.label) {
582
438
  case 0:
583
- entityTypesUris = ['configuration/entityTypes/HCP'];
584
- wrapper = (0, enzyme_1.mount)(react_1.default.createElement(EntitySelector_1.EntitySelector, { onChange: mockOnChange, entityTypesUris: entityTypesUris, metadata: metadata }));
585
- return [4 /*yield*/, (0, test_utils_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
586
- return __generator(this, function (_a) {
587
- wrapper.find('DropDownSelector').prop('onInputChange')('someValue');
588
- wrapper.find('DropDownSelector').prop('onClear')();
589
- return [2 /*return*/];
590
- });
591
- }); })];
439
+ props = __assign(__assign({}, defaultProps), { onCreate: jest.fn(), entityTypesUris: ['configuration/entityTypes/HCP', 'configuration/entityTypes/Company'] });
440
+ user = setUp({ props: props }).user;
441
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('select-dropdown-indicator'))];
592
442
  case 1:
593
443
  _a.sent();
594
- expect(mockOnChange).toHaveBeenCalled();
595
- expect(wrapper.find('Input').prop('value')).toBe('');
444
+ react_2.screen.getByText('Create new HCP');
445
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Create new Company'))];
446
+ case 2:
447
+ _a.sent();
448
+ expect(props.onCreate).toHaveBeenCalledWith('configuration/entityTypes/Company', '');
596
449
  return [2 /*return*/];
597
450
  }
598
451
  });