@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
@@ -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
  });