@reltio/components 1.4.2045 → 1.4.2047

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