@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
@@ -1,18 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var helpers_1 = require("./helpers");
4
3
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
5
- var values = [
6
- {
7
- uri: (0, mdm_sdk_1.generateNewRelationUri)()
8
- },
9
- {
10
- uri: 'ui/kl/io/89'
11
- },
12
- {
13
- uri: 'relations/yuyi/attributes/uiouoi'
14
- }
15
- ];
4
+ var helpers_1 = require("./helpers");
5
+ var values = [{ uri: (0, mdm_sdk_1.generateNewRelationUri)() }, { uri: 'ui/kl/io/89' }, { uri: 'relations/yuyi/attributes/uiouoi' }];
16
6
  describe('Attribute pager utils', function () {
17
7
  describe('filterNewValues', function () {
18
8
  it('should return only new attribute', function () {
@@ -49,212 +49,318 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
49
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
+ var _a;
52
53
  Object.defineProperty(exports, "__esModule", { value: true });
53
54
  var react_1 = __importDefault(require("react"));
54
- var enzyme_1 = require("enzyme");
55
- var react_2 = require("@testing-library/react");
56
55
  var user_event_1 = __importDefault(require("@testing-library/user-event"));
57
- var PinnedAttributesContext_1 = require("../contexts/PinnedAttributesContext");
56
+ var react_2 = require("@testing-library/react");
57
+ var ramda_1 = require("ramda");
58
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
58
59
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
59
- var EditModeAttributesView_1 = require("./EditModeAttributesView");
60
+ var ScrollToElementContext_1 = require("../contexts/ScrollToElementContext");
60
61
  var HiddenAttributesContext_1 = require("../contexts/HiddenAttributesContext");
61
- jest.mock('../contexts/MdmModuleContext', function () { return (__assign(__assign({}, jest.requireActual('../contexts/MdmModuleContext')), { useMdmAction: jest.fn(), useMdmMetadata: jest.fn(), useMdmUserRoles: jest.fn(), useMdmModifiedEntity: jest.fn(), useMdmDependentLookupEditorState: jest.fn() })); });
62
- var metadata = {
63
- entityTypes: []
62
+ var EditModeAttributesView_1 = require("./EditModeAttributesView");
63
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { uploadImage: jest.fn() })); });
64
+ var defaultEntity = {
65
+ uri: 'entities/1E4APrQW',
66
+ type: 'configuration/entityTypes/HCP'
64
67
  };
65
- var pinnedAttributes = [
66
- {
67
- roles: ['ROLE_ADMIN'],
68
- attributes: [
69
- 'configuration/entityTypes/HCA/attributes/SubTypeCode',
70
- 'configuration/entityTypes/HCA/attributes/Department'
71
- ]
72
- }
73
- ];
74
- var entity = { uri: 'entities/123' };
75
- var setUp = function (props) { return (0, enzyme_1.shallow)(react_1.default.createElement(EditModeAttributesView_1.EditModeAttributesView, __assign({ entity: entity }, props))); };
76
- describe('EditModeAttributesView', function () {
77
- describe('PinnedAttributesContext', function () {
78
- beforeEach(function () {
79
- MdmModuleContext_1.useMdmMetadata.mockReturnValue(metadata);
80
- MdmModuleContext_1.useMdmUserRoles.mockReturnValue([]);
81
- MdmModuleContext_1.useMdmModifiedEntity.mockReturnValue(null);
82
- MdmModuleContext_1.useMdmAction.mockReturnValue(jest.fn());
83
- });
84
- afterEach(function () {
85
- jest.clearAllMocks();
86
- });
87
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes for this user', function () {
88
- MdmModuleContext_1.useMdmUserRoles.mockReturnValue(['ROLE_ADMIN']);
89
- var component = setUp({ pinnedAttributes: pinnedAttributes });
90
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider)).toHaveLength(1);
91
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider).prop('value')).toEqual(pinnedAttributes[0].attributes);
92
- });
93
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array for user without roles', function () {
94
- var component = setUp({ pinnedAttributes: pinnedAttributes });
95
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider)).toHaveLength(1);
96
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider).prop('value')).toEqual([]);
97
- });
98
- it('should render PinnedAttributesContext.Provider with passing pinnedAttributes as empty array if no pinnedAttributes', function () {
99
- var component = setUp({});
100
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider)).toHaveLength(1);
101
- expect(component.find(PinnedAttributesContext_1.PinnedAttributesContext.Provider).prop('value')).toEqual([]);
102
- });
103
- });
104
- describe('rule based attributes', function () {
105
- var metadata = {
106
- entityTypes: [
68
+ var defaultModifiedEntities = (_a = {}, _a[defaultEntity.uri] = defaultEntity, _a);
69
+ var defaultMetadata = {
70
+ uri: 'configuration',
71
+ entityTypes: [
72
+ {
73
+ uri: 'configuration/entityTypes/HCP',
74
+ attributes: [
107
75
  {
108
- uri: 'configuration/entityTypes/HCP',
76
+ uri: 'configuration/entityTypes/HCP/attributes/FirstLevelNested',
77
+ name: 'FirstLevelNested',
78
+ type: 'Nested',
109
79
  attributes: [
110
80
  {
111
- name: 'Category1',
112
- type: 'String',
113
- uri: 'configuration/entityTypes/HCP/attributes/Category1'
114
- },
115
- {
116
- name: 'Category2',
117
- type: 'String',
118
- uri: 'configuration/entityTypes/HCP/attributes/Category2'
119
- },
120
- {
121
- name: 'Category3',
81
+ label: 'FirstLevelNestedSub1_HCP',
82
+ name: 'FirstLevelNestedSub1',
83
+ uri: 'configuration/entityTypes/HCP/attributes/FirstLevelNested/attributes/FirstLevelNestedSub1',
122
84
  type: 'String',
123
- uri: 'configuration/entityTypes/HCP/attributes/Category3'
85
+ required: true
124
86
  },
125
87
  {
126
- name: 'Category4',
127
- type: 'String',
128
- uri: 'configuration/entityTypes/HCP/attributes/Category4'
129
- },
130
- {
131
- name: 'Nested1',
132
- label: 'Nested1',
133
- type: 'Nested',
134
- uri: 'configuration/entityTypes/HCP/attributes/Nested1',
135
- attributes: [
136
- {
137
- name: 'NestedCategory1',
138
- type: 'String',
139
- uri: 'configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory1'
140
- },
141
- {
142
- name: 'NestedCategory2',
143
- type: 'String',
144
- uri: 'configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory2'
145
- }
146
- ]
88
+ label: 'Int',
89
+ name: 'Int',
90
+ uri: 'configuration/entityTypes/HCP/attributes/FirstLevelNested/attributes/Int',
91
+ type: 'Int'
147
92
  }
148
93
  ]
94
+ },
95
+ {
96
+ label: 'First Name',
97
+ name: 'FirstName',
98
+ type: 'String',
99
+ uri: 'configuration/entityTypes/HCP/attributes/FirstName'
100
+ },
101
+ {
102
+ label: 'Middle Name',
103
+ name: 'MiddleName',
104
+ type: 'String',
105
+ uri: 'configuration/entityTypes/HCP/attributes/MiddleName'
106
+ },
107
+ {
108
+ label: 'Last Name',
109
+ name: 'LastName',
110
+ type: 'String',
111
+ uri: 'configuration/entityTypes/HCP/attributes/LastName'
112
+ },
113
+ {
114
+ label: 'Image Gallery',
115
+ name: 'ImageGallery',
116
+ required: true,
117
+ type: 'Image',
118
+ uri: 'configuration/entityTypes/HCP/attributes/ImageGallery'
149
119
  }
150
120
  ]
121
+ }
122
+ ]
123
+ };
124
+ var defaultMdmValues = {
125
+ modifiedEntities: defaultModifiedEntities,
126
+ metadata: defaultMetadata,
127
+ dependentLookups: { editors: {}, structure: {}, initedTypeUris: [] },
128
+ profileErrors: [],
129
+ user: { roles: [] }
130
+ };
131
+ var mdmActions = {
132
+ addAttributes: jest.fn(),
133
+ modifyAttribute: jest.fn(),
134
+ removeAttribute: jest.fn(),
135
+ errorDeactivated: jest.fn()
136
+ };
137
+ var defaultProps = { entity: defaultEntity, mode: mdm_sdk_1.Mode.Editing };
138
+ describe('Edit mode attributes view tests', function () {
139
+ var scrollSpy = jest.fn();
140
+ window.HTMLElement.prototype.scrollIntoView = scrollSpy;
141
+ var setUp = function (_a) {
142
+ 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.hiddenAttributesContextValue, hiddenAttributesContextValue = _e === void 0 ? {} : _e, _f = _b.userOptions, userOptions = _f === void 0 ? {} : _f;
143
+ var user = user_event_1.default.setup(userOptions);
144
+ var Providers = function (_a) {
145
+ var children = _a.children;
146
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: mdmActions },
147
+ react_1.default.createElement(HiddenAttributesContext_1.HiddenAttributesContext.Provider, { value: hiddenAttributesContextValue },
148
+ react_1.default.createElement(ScrollToElementContext_1.ScrollToElementProvider, null, children))));
151
149
  };
152
- var setUp = function (props, hiddenAttributes) {
153
- var user = user_event_1.default.setup();
154
- var Providers = function (_a) {
155
- var children = _a.children;
156
- return (react_1.default.createElement(HiddenAttributesContext_1.HiddenAttributesContext.Provider, { value: hiddenAttributes }, children));
157
- };
158
- return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(EditModeAttributesView_1.EditModeAttributesView, __assign({}, props)), { wrapper: Providers })), { user: user });
159
- };
160
- beforeAll(function () {
161
- MdmModuleContext_1.useMdmUserRoles.mockReturnValue([]);
162
- MdmModuleContext_1.useMdmAction.mockReturnValue(jest.fn());
163
- MdmModuleContext_1.useMdmMetadata.mockReturnValue(metadata);
150
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(EditModeAttributesView_1.EditModeAttributesView, __assign({}, props)), { wrapper: Providers }));
151
+ };
152
+ beforeAll(function () {
153
+ jest.useFakeTimers();
154
+ });
155
+ afterEach(function () {
156
+ jest.runOnlyPendingTimers();
157
+ });
158
+ it('should highlight last added attribute', function () { return __awaiter(void 0, void 0, void 0, function () {
159
+ var metadata, mdmValues, user, moreAttributesButton, popover, attributes;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0:
163
+ metadata = (0, ramda_1.assocPath)(['entityTypes', 0, 'attributes', 0, 'required'], true, defaultMetadata);
164
+ mdmValues = __assign(__assign({}, defaultMdmValues), { metadata: metadata });
165
+ user = setUp({ mdmValues: mdmValues, userOptions: { delay: null } }).user;
166
+ moreAttributesButton = react_2.screen.getAllByRole('button', { name: 'More attributes' })[0];
167
+ return [4 /*yield*/, user.click(moreAttributesButton)];
168
+ case 1:
169
+ _a.sent();
170
+ popover = react_2.screen.getByRole('presentation');
171
+ return [4 /*yield*/, user.click((0, react_2.within)(popover).getByText('FirstLevelNested'))];
172
+ case 2:
173
+ _a.sent();
174
+ return [4 /*yield*/, user.click(popover.firstChild)];
175
+ case 3:
176
+ _a.sent(); // click on backdrop
177
+ (0, react_2.act)(function () {
178
+ jest.runOnlyPendingTimers();
179
+ });
180
+ attributes = react_2.screen.getAllByTestId('reltio-edit-attribute');
181
+ expect(attributes[0]).toHaveClass('highlighted');
182
+ expect(scrollSpy).toHaveBeenCalledTimes(1);
183
+ (0, react_2.act)(function () {
184
+ jest.runOnlyPendingTimers();
185
+ });
186
+ expect(attributes[0]).not.toHaveClass('highlighted');
187
+ return [2 /*return*/];
188
+ }
164
189
  });
190
+ }); });
191
+ describe('image attribute behaviour', function () {
192
+ var profileErrors = [
193
+ {
194
+ parentUri: 'entities/1E4APrQW',
195
+ uri: '',
196
+ attributeTypeUri: 'configuration/entityTypes/HCP/attributes/ImageGallery',
197
+ message: 'Attribute is required',
198
+ type: mdm_sdk_1.ErrorType.missed
199
+ }
200
+ ];
201
+ it('should render required and missed image attribute in edit mode correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
202
+ return __generator(this, function (_a) {
203
+ setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { profileErrors: profileErrors }) });
204
+ expect(react_2.screen.getByText('*')).toBeInTheDocument();
205
+ expect(react_2.screen.getByText('Attribute is required')).toBeInTheDocument();
206
+ return [2 /*return*/];
207
+ });
208
+ }); });
209
+ it('should deactivate error for required and missed image attribute after image was added', function () { return __awaiter(void 0, void 0, void 0, function () {
210
+ var resolveUploadImage, user, file;
211
+ return __generator(this, function (_a) {
212
+ switch (_a.label) {
213
+ case 0:
214
+ mdm_sdk_1.uploadImage.mockImplementation(function () {
215
+ return new Promise(function (resolve) {
216
+ resolveUploadImage = resolve;
217
+ });
218
+ });
219
+ user = setUp({
220
+ mdmValues: __assign(__assign({}, defaultMdmValues), { profileErrors: profileErrors }),
221
+ userOptions: { delay: null, applyAccept: false }
222
+ }).user;
223
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('reltio-upload-image-button'))];
224
+ case 1:
225
+ _a.sent();
226
+ file = new File(['test file content'], 'test.png', { type: 'image/png' });
227
+ return [4 /*yield*/, user.upload(react_2.screen.getByTestId('upload-image-button'), file)];
228
+ case 2:
229
+ _a.sent();
230
+ return [4 /*yield*/, react_2.screen.findByTestId('reltio-linear-load-indicator')];
231
+ case 3:
232
+ _a.sent();
233
+ return [4 /*yield*/, (0, react_2.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
234
+ return __generator(this, function (_a) {
235
+ switch (_a.label) {
236
+ case 0: return [4 /*yield*/, resolveUploadImage('Image')];
237
+ case 1:
238
+ _a.sent();
239
+ return [2 /*return*/];
240
+ }
241
+ });
242
+ }); })];
243
+ case 4:
244
+ _a.sent();
245
+ expect(react_2.screen.queryByTestId('reltio-linear-load-indicator')).not.toBeInTheDocument();
246
+ expect(mdmActions.errorDeactivated).toHaveBeenCalledWith('configuration/entityTypes/HCP/attributes/ImageGallery--entities/1E4APrQW');
247
+ return [2 /*return*/];
248
+ }
249
+ });
250
+ }); });
251
+ });
252
+ describe('pinned attributes', function () {
253
+ var pinnedAttributes = [
254
+ {
255
+ roles: ['ROLE_ADMIN'],
256
+ attributes: [
257
+ 'configuration/entityTypes/HCP/attributes/LastName',
258
+ 'configuration/entityTypes/HCP/attributes/FirstName'
259
+ ]
260
+ }
261
+ ];
262
+ it('should render pinned attributes correctly with passing pinnedAttributes for this user', function () {
263
+ var mdmValues = __assign(__assign({}, defaultMdmValues), { user: { roles: ['ROLE_ADMIN'] } });
264
+ var props = __assign(__assign({}, defaultProps), { pinnedAttributes: pinnedAttributes });
265
+ setUp({ props: props, mdmValues: mdmValues });
266
+ var labels = react_2.screen.getAllByTestId('reltio-attribute-label');
267
+ expect(labels).toHaveLength(3);
268
+ expect(labels[0]).toHaveTextContent('First Name');
269
+ expect(labels[1]).toHaveTextContent('Last Name');
270
+ expect(labels[2]).toHaveTextContent('Image Gallery*');
271
+ });
272
+ it('should not render pinned attributes with passing pinnedAttributes as empty array for user without roles', function () {
273
+ var props = __assign(__assign({}, defaultProps), { pinnedAttributes: pinnedAttributes });
274
+ setUp({ props: props });
275
+ var labels = react_2.screen.getAllByTestId('reltio-attribute-label');
276
+ expect(labels).toHaveLength(1);
277
+ expect(labels[0]).toHaveTextContent('Image Gallery*');
278
+ });
279
+ it('should not render pinned attributes with passing pinnedAttributes as empty array if no pinnedAttributes', function () {
280
+ setUp();
281
+ var labels = react_2.screen.getAllByTestId('reltio-attribute-label');
282
+ expect(labels).toHaveLength(1);
283
+ expect(labels[0]).toHaveTextContent('Image Gallery*');
284
+ });
285
+ });
286
+ describe('rule based attributes', function () {
165
287
  it('should hide attributes if there are no rules allow to show the attribute', function () {
166
- var entity = {
167
- type: 'configuration/entityTypes/HCP',
168
- uri: 'entities/uri_e'
288
+ var _a;
289
+ var defaultEntity = {
290
+ uri: 'entities/1E4APrQW',
291
+ type: 'configuration/entityTypes/HCP'
169
292
  };
170
- MdmModuleContext_1.useMdmModifiedEntity.mockReturnValue({
171
- type: 'configuration/entityTypes/HCP',
172
- uri: 'entities/uri_e',
173
- attributes: {
174
- Category1: [
293
+ var modifiedEntities = __assign(__assign({}, defaultModifiedEntities), (_a = {}, _a[defaultEntity.uri] = __assign(__assign({}, defaultEntity), { attributes: {
294
+ FirstName: [
175
295
  {
176
- uri: 'entities/uri_e/attributes/uri1',
177
- value: 'category1_value1'
296
+ uri: 'entities/1E4APrQW/attributes/FirstName/uri1',
297
+ value: 'first name value'
178
298
  }
179
299
  ],
180
- Category2: [
300
+ MiddleName: [
181
301
  {
182
- uri: 'entities/uri_e/attributes/uri2',
183
- value: 'category2_value1'
302
+ uri: 'entities/1E4APrQW/attributes/MiddleName/uri2',
303
+ value: 'middle name value'
184
304
  }
185
305
  ],
186
- Category3: [
306
+ LastName: [
187
307
  {
188
- uri: 'entities/uri_e/attributes/uri3',
189
- value: 'category3_value1'
190
- }
191
- ],
192
- Category4: [
193
- {
194
- uri: 'entities/uri_e/attributes/uri4',
195
- value: 'category4_value1'
308
+ uri: 'entities/1E4APrQW/attributes/LastName/uri3',
309
+ value: 'last name value'
196
310
  }
197
311
  ]
198
- }
199
- });
200
- var hiddenAttributes = {
201
- 'entities/uri_e': [
202
- 'configuration/entityTypes/HCP/attributes/Category2',
203
- 'configuration/entityTypes/HCP/attributes/Category3',
204
- 'configuration/entityTypes/HCP/attributes/Category4'
312
+ } }), _a));
313
+ var mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
314
+ var hiddenAttributesContextValue = {
315
+ 'entities/1E4APrQW': [
316
+ 'configuration/entityTypes/HCP/attributes/FirstName',
317
+ 'configuration/entityTypes/HCP/attributes/LastName'
205
318
  ]
206
319
  };
207
- setUp({ entity: entity }, hiddenAttributes);
208
- expect(react_2.screen.getByText('category1_value1')).toBeInTheDocument();
209
- expect(react_2.screen.queryByText('category2_value1')).not.toBeInTheDocument();
210
- expect(react_2.screen.queryByText('category3_value1')).not.toBeInTheDocument();
211
- expect(react_2.screen.queryByText('category4_value1')).not.toBeInTheDocument();
320
+ setUp({ mdmValues: mdmValues, hiddenAttributesContextValue: hiddenAttributesContextValue });
321
+ react_2.screen.getByText('Middle Name');
322
+ expect(react_2.screen.queryByText('First Name')).not.toBeInTheDocument();
323
+ expect(react_2.screen.queryByText('Last Name')).not.toBeInTheDocument();
212
324
  });
213
325
  it('should hide nested attributes if there are no rules allow to show the attribute', function () { return __awaiter(void 0, void 0, void 0, function () {
214
- var entity, hiddenAttributes, user;
215
- return __generator(this, function (_a) {
216
- switch (_a.label) {
326
+ var modifiedEntities, mdmValues, hiddenAttributesContextValue, user;
327
+ var _a;
328
+ return __generator(this, function (_b) {
329
+ switch (_b.label) {
217
330
  case 0:
218
- entity = {
219
- type: 'configuration/entityTypes/HCP',
220
- uri: 'entities/uri_e'
221
- };
222
- MdmModuleContext_1.useMdmModifiedEntity.mockReturnValue({
223
- type: 'configuration/entityTypes/HCP',
224
- uri: 'entities/uri_e',
225
- attributes: {
226
- Nested1: [
331
+ modifiedEntities = __assign(__assign({}, defaultModifiedEntities), (_a = {}, _a[defaultEntity.uri] = __assign(__assign({}, defaultEntity), { attributes: {
332
+ FirstLevelNested: [
227
333
  {
228
- uri: 'entities/uri_e/attributes/nesteduri1',
334
+ uri: 'entities/1E4APrQW/attributes/uri1',
229
335
  value: {
230
- NestedCategory1: [
336
+ FirstLevelNestedSub1: [
231
337
  {
232
338
  ov: true,
233
- uri: 'entities/uri_e/attributes/nesteduri1/attributes/nestedcaturi1',
234
- value: 'nested_category1_value1'
339
+ uri: 'entities/1E4APrQW/attributes/uri1/attributes/nesteduri1',
340
+ value: 'first level nested sub value'
235
341
  }
236
342
  ],
237
- NestedCategory2: [
343
+ Int: [
238
344
  {
239
345
  ov: true,
240
- uri: 'entities/uri_e/attributes/nesteduri1/attributes/nestedcaturi2',
241
- value: 'nested_category2_value1'
346
+ uri: 'entities/1E4APrQW/attributes/uri1/attributes/nesteduri2',
347
+ value: '3456'
242
348
  }
243
349
  ]
244
350
  }
245
351
  }
246
352
  ]
247
- }
248
- });
249
- hiddenAttributes = {
250
- 'entities/uri_e': ['configuration/entityTypes/HCP/attributes/Nested1/attributes/NestedCategory2']
353
+ } }), _a));
354
+ mdmValues = __assign(__assign({}, defaultMdmValues), { modifiedEntities: modifiedEntities });
355
+ hiddenAttributesContextValue = {
356
+ 'entities/1E4APrQW': ['configuration/entityTypes/HCP/attributes/FirstLevelNested/attributes/Int']
251
357
  };
252
- user = setUp({ entity: entity }, hiddenAttributes).user;
358
+ user = setUp({ mdmValues: mdmValues, hiddenAttributesContextValue: hiddenAttributesContextValue, userOptions: { delay: null } }).user;
253
359
  return [4 /*yield*/, user.click(react_2.screen.getByTestId('arrow-expand-button'))];
254
360
  case 1:
255
- _a.sent();
256
- expect(react_2.screen.getByText('nested_category1_value1')).toBeInTheDocument();
257
- expect(react_2.screen.queryByText('nested_category2_value1')).not.toBeInTheDocument();
361
+ _b.sent();
362
+ react_2.screen.getByText('FirstLevelNestedSub1_HCP');
363
+ expect(react_2.screen.queryByText('Int')).not.toBeInTheDocument();
258
364
  return [2 /*return*/];
259
365
  }
260
366
  });
@@ -106,7 +106,7 @@ var EditModeComplexAttribute = function (_a) {
106
106
  react_1.default.createElement(ArrowExpandButton_1.ArrowExpandButton, { onClick: function () { return setExpanded(function (value) { return !value; }); }, expanded: expanded, className: styles.expandButton, disabled: deleted }),
107
107
  react_1.default.createElement(ErrorWrapper_1.ErrorWrapper, { errorMessage: errorMessage, classes: { helperText: styles.errorWrapperHelperText } },
108
108
  react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.label, (_b = {}, _b[styles.deleted] = deleted, _b)), "data-reltio-id": "reltio-attribute-complex-label" }, label))),
109
- react_1.default.createElement("div", { className: styles.actions },
109
+ react_1.default.createElement("div", { "data-reltio-id": "reltio-complex-attribute-actions", className: styles.actions },
110
110
  edited && (react_1.default.createElement(Typography_1.default, { variant: "caption", className: styles.editedLabel },
111
111
  "(",
112
112
  ui_i18n_1.default.text('edited'),