@reltio/components 1.4.2070 → 1.4.2072

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