@openui5/sap.ui.core 1.124.1 → 1.125.0

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 (641) hide show
  1. package/.reuse/dep5 +5 -0
  2. package/THIRDPARTY.txt +7 -0
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +4 -4
  5. package/src/jquery.sap.properties.js +2 -2
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/jquery.sap.ui.js +6 -2
  10. package/src/sap/base/Event.js +1 -1
  11. package/src/sap/base/Eventing.js +1 -1
  12. package/src/sap/base/config.js +1 -1
  13. package/src/sap/base/i18n/LanguageTag.js +1 -1
  14. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  15. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  16. package/src/sap/base/util/restricted/_castArray.js +1 -1
  17. package/src/sap/base/util/restricted/_compact.js +1 -1
  18. package/src/sap/base/util/restricted/_curry.js +1 -1
  19. package/src/sap/base/util/restricted/_debounce.js +1 -1
  20. package/src/sap/base/util/restricted/_difference.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_flatten.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  29. package/src/sap/base/util/restricted/_intersection.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isNil.js +1 -1
  35. package/src/sap/base/util/restricted/_max.js +1 -1
  36. package/src/sap/base/util/restricted/_merge.js +1 -1
  37. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  38. package/src/sap/base/util/restricted/_min.js +1 -1
  39. package/src/sap/base/util/restricted/_omit.js +1 -1
  40. package/src/sap/base/util/restricted/_pick.js +1 -1
  41. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  42. package/src/sap/base/util/restricted/_throttle.js +1 -1
  43. package/src/sap/base/util/restricted/_toArray.js +1 -1
  44. package/src/sap/base/util/restricted/_union.js +1 -1
  45. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  46. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  47. package/src/sap/base/util/restricted/_uniq.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  50. package/src/sap/base/util/restricted/_without.js +1 -1
  51. package/src/sap/base/util/restricted/_xor.js +1 -1
  52. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  53. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  56. package/src/sap/ui/Device.js +3 -3
  57. package/src/sap/ui/Global.js +4 -4
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/Interface.js +1 -1
  61. package/src/sap/ui/base/ManagedObject.js +1 -1
  62. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  63. package/src/sap/ui/base/Metadata.js +1 -1
  64. package/src/sap/ui/base/Object.js +1 -1
  65. package/src/sap/ui/base/ObjectPool.js +1 -1
  66. package/src/sap/ui/core/.library +3 -3
  67. package/src/sap/ui/core/BusyIndicator.js +1 -1
  68. package/src/sap/ui/core/Component.js +6 -3
  69. package/src/sap/ui/core/ComponentContainer.js +1 -1
  70. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  71. package/src/sap/ui/core/ComponentSupport.js +1 -1
  72. package/src/sap/ui/core/Configuration.js +1 -1
  73. package/src/sap/ui/core/Control.js +1 -1
  74. package/src/sap/ui/core/Core.js +18 -25
  75. package/src/sap/ui/core/CustomData.js +1 -1
  76. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  77. package/src/sap/ui/core/Element.js +1 -1
  78. package/src/sap/ui/core/ElementMetadata.js +4 -3
  79. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  80. package/src/sap/ui/core/EventBus.js +1 -1
  81. package/src/sap/ui/core/ExtensionPoint.js +23 -9
  82. package/src/sap/ui/core/Fragment.js +15 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/History.js +1 -1
  85. package/src/sap/ui/core/Icon.js +84 -50
  86. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +1 -1
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +66 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/ListItem.js +1 -1
  95. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  96. package/src/sap/ui/core/Locale.js +1 -1
  97. package/src/sap/ui/core/LocaleData.js +1 -1
  98. package/src/sap/ui/core/Manifest.js +1 -1
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/RenderManager.js +1 -1
  101. package/src/sap/ui/core/Renderer.js +1 -1
  102. package/src/sap/ui/core/ResizeHandler.js +1 -1
  103. package/src/sap/ui/core/ScrollBar.js +1 -1
  104. package/src/sap/ui/core/SeparatorItem.js +1 -1
  105. package/src/sap/ui/core/Title.js +1 -1
  106. package/src/sap/ui/core/TooltipBase.js +1 -1
  107. package/src/sap/ui/core/UIArea.js +5 -5
  108. package/src/sap/ui/core/UIComponent.js +23 -16
  109. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  110. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  111. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  112. package/src/sap/ui/core/XMLComposite.js +1 -1
  113. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  114. package/src/sap/ui/core/XMLTemplateProcessor.js +110 -74
  115. package/src/sap/ui/core/cldr/zh_TW.json +20 -20
  116. package/src/sap/ui/core/date/UI5Date.js +1 -1
  117. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  118. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  119. package/src/sap/ui/core/dnd/DragAndDrop.js +29 -23
  120. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  121. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  122. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  123. package/src/sap/ui/core/dnd/DropInfo.js +6 -3
  124. package/src/sap/ui/core/format/DateFormat.js +3 -3
  125. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  126. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  127. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  128. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  129. package/src/sap/ui/core/library.js +3 -3
  130. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  131. package/src/sap/ui/core/message/Message.js +1 -1
  132. package/src/sap/ui/core/message/MessageManager.js +1 -1
  133. package/src/sap/ui/core/message/MessageParser.js +1 -1
  134. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  135. package/src/sap/ui/core/mvc/Controller.js +77 -77
  136. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  137. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  138. package/src/sap/ui/core/mvc/JSView.js +1 -1
  139. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  140. package/src/sap/ui/core/mvc/View.js +10 -2
  141. package/src/sap/ui/core/mvc/XMLProcessingMode.js +4 -1
  142. package/src/sap/ui/core/mvc/XMLView.js +33 -5
  143. package/src/sap/ui/core/mvc/XMLViewRenderer.js +40 -7
  144. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  145. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  146. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  147. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  148. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  149. package/src/sap/ui/core/routing/async/TargetCache.js +12 -1
  150. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  151. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  152. package/src/sap/ui/core/service/Service.js +1 -1
  153. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  155. package/src/sap/ui/core/support/Plugin.js +1 -1
  156. package/src/sap/ui/core/support/Support.js +1 -1
  157. package/src/sap/ui/core/support/bootstrapFallback.js +1 -1
  158. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  159. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  160. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  163. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  164. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  165. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  166. package/src/sap/ui/core/theming/Parameters.js +2 -2
  167. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  168. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  169. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  170. package/src/sap/ui/core/tmpl/Template.js +1 -1
  171. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  172. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  173. package/src/sap/ui/core/util/Export.js +1 -1
  174. package/src/sap/ui/core/util/ExportCell.js +1 -1
  175. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  176. package/src/sap/ui/core/util/ExportRow.js +1 -1
  177. package/src/sap/ui/core/util/ExportType.js +1 -1
  178. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  179. package/src/sap/ui/core/util/File.js +1 -1
  180. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  181. package/src/sap/ui/core/util/MockServer.js +1 -1
  182. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  183. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  184. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  185. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  188. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  190. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  191. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  192. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  193. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  194. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  195. package/src/sap/ui/debug/ControlTree.js +1 -1
  196. package/src/sap/ui/debug/DebugEnv.js +1 -1
  197. package/src/sap/ui/debug/PropertyList.js +1 -1
  198. package/src/sap/ui/dom/jquery/control.js +6 -3
  199. package/src/sap/ui/model/Binding.js +10 -0
  200. package/src/sap/ui/model/ClientModel.js +1 -1
  201. package/src/sap/ui/model/CompositeDataState.js +1 -1
  202. package/src/sap/ui/model/CompositeType.js +1 -1
  203. package/src/sap/ui/model/DataState.js +1 -1
  204. package/src/sap/ui/model/FieldHelp.js +362 -0
  205. package/src/sap/ui/model/MetaModel.js +1 -1
  206. package/src/sap/ui/model/Model.js +1 -1
  207. package/src/sap/ui/model/SelectionModel.js +1 -1
  208. package/src/sap/ui/model/SimpleType.js +1 -1
  209. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  210. package/src/sap/ui/model/Type.js +1 -1
  211. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -12
  212. package/src/sap/ui/model/json/JSONModel.js +6 -5
  213. package/src/sap/ui/model/message/MessageModel.js +1 -1
  214. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  215. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  216. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  217. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  218. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  219. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  220. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  221. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  222. package/src/sap/ui/model/odata/type/Date.js +1 -1
  223. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  224. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  225. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  226. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  227. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  228. package/src/sap/ui/model/odata/type/Double.js +1 -1
  229. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  230. package/src/sap/ui/model/odata/type/Int.js +1 -1
  231. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  233. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  234. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  235. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  236. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  237. package/src/sap/ui/model/odata/type/Single.js +1 -1
  238. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  239. package/src/sap/ui/model/odata/type/String.js +1 -1
  240. package/src/sap/ui/model/odata/type/Time.js +1 -1
  241. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  242. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  243. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  244. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  245. package/src/sap/ui/model/odata/v2/ODataModel.js +50 -6
  246. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  247. package/src/sap/ui/model/odata/v4/Context.js +45 -13
  248. package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
  249. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +68 -68
  250. package/src/sap/ui/model/odata/v4/ODataListBinding.js +283 -212
  251. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +41 -39
  252. package/src/sap/ui/model/odata/v4/ODataModel.js +236 -209
  253. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +202 -202
  254. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  255. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +90 -20
  256. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +5 -0
  257. package/src/sap/ui/model/odata/v4/lib/_Cache.js +38 -42
  258. package/src/sap/ui/model/odata/v4/lib/_Helper.js +93 -68
  259. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +78 -78
  260. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +1 -1
  261. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +20 -20
  262. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +60 -60
  263. package/src/sap/ui/model/resource/ResourceModel.js +7 -2
  264. package/src/sap/ui/model/type/Boolean.js +1 -1
  265. package/src/sap/ui/model/type/Currency.js +1 -1
  266. package/src/sap/ui/model/type/Date.js +1 -1
  267. package/src/sap/ui/model/type/DateInterval.js +1 -1
  268. package/src/sap/ui/model/type/DateTime.js +1 -1
  269. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  270. package/src/sap/ui/model/type/FileSize.js +1 -1
  271. package/src/sap/ui/model/type/Float.js +1 -1
  272. package/src/sap/ui/model/type/Integer.js +1 -1
  273. package/src/sap/ui/model/type/String.js +1 -1
  274. package/src/sap/ui/model/type/Time.js +1 -1
  275. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  276. package/src/sap/ui/model/type/Unit.js +1 -1
  277. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  278. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +1 -1
  279. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  280. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  281. package/src/sap/ui/test/OpaPlugin.js +36 -12
  282. package/src/sap/ui/test/generic/TestBase.js +1 -1
  283. package/src/sap/ui/util/Storage.js +1 -1
  284. package/test/sap/ui/core/BindableResponseHeaders.html +4 -4
  285. package/test/sap/ui/core/ComponentCleanup.html +46 -46
  286. package/test/sap/ui/core/ComponentManifestFirst.html +26 -20
  287. package/test/sap/ui/core/ContextMenuSupport.html +9 -10
  288. package/test/sap/ui/core/DesigntimeOverview.html +1 -1
  289. package/test/sap/ui/core/EventBroadcaster.html +2 -2
  290. package/test/sap/ui/core/FieldGroup.html +70 -61
  291. package/test/sap/ui/core/GenericEventBinding.html +26 -23
  292. package/test/sap/ui/core/HTMLControl.html +46 -38
  293. package/test/sap/ui/core/HTMLSanitizer.html +70 -45
  294. package/test/sap/ui/core/IntervalTrigger.html +22 -21
  295. package/test/sap/ui/core/InvisibleControls.html +72 -72
  296. package/test/sap/ui/core/InvisibleText.html +2 -2
  297. package/test/sap/ui/core/LRUPersistentCache.html +19 -18
  298. package/test/sap/ui/core/LabelEnablement.html +18 -29
  299. package/test/sap/ui/core/Localization.html +40 -65
  300. package/test/sap/ui/core/Localization_HeapUsage.html +11 -12
  301. package/test/sap/ui/core/ManagedObjectModel.html +6 -7
  302. package/test/sap/ui/core/ODataAnnotationsPerformance.html +592 -602
  303. package/test/sap/ui/core/ODataV2CanonicalRequests.html +8 -8
  304. package/test/sap/ui/core/ODataV2Messages.html +1 -1
  305. package/test/sap/ui/core/ODataV2MessagesPerf.html +131 -132
  306. package/test/sap/ui/core/Popup.html +18 -14
  307. package/test/sap/ui/core/PopupWithUserSelection.html +4 -4
  308. package/test/sap/ui/core/StashedControlSupport.html +1 -1
  309. package/test/sap/ui/core/ThemeParameters.html +32 -20
  310. package/test/sap/ui/core/ValidateURL.html +109 -75
  311. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  312. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +1 -4
  313. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.controller.js +0 -1
  314. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Main.controller.js +0 -1
  315. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.html +0 -1
  316. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/Component.js +1 -5
  317. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -10
  318. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Component.js +4 -1
  319. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/manifest.json +37 -0
  320. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Component.js +5 -1
  321. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/manifest.json +42 -0
  322. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +6 -3
  323. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Main.view.xml +4 -1
  324. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/manifest.json +49 -0
  325. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  326. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  327. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  328. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  329. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/Component.js +1 -0
  330. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/manifest.json +1 -2
  331. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/Component.js +1 -0
  332. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -2
  333. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Component.js +1 -0
  334. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/manifest.json +1 -2
  335. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Component.js +1 -0
  336. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -2
  337. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/Component.js +1 -0
  338. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/manifest.json +1 -2
  339. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/Component.js +1 -0
  340. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -2
  341. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Component.js +1 -0
  342. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +35 -31
  343. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/manifest.json +1 -10
  344. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Component.js +1 -0
  345. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/manifest.json +2 -11
  346. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Component.js +1 -0
  347. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +71 -68
  348. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.html +0 -1
  349. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/manifest.json +3 -11
  350. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +1 -0
  351. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +0 -1
  352. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +7 -16
  353. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Component.js +1 -0
  354. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Main.controller.js +3 -3
  355. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.html +0 -1
  356. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/manifest.json +1 -10
  357. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Component.js +1 -0
  358. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/FieldGroups.view.xml +0 -1
  359. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.html +0 -1
  360. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/manifest.json +3 -11
  361. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +1 -0
  362. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +46 -43
  363. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +12 -10
  364. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/manifest.json +3 -11
  365. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Component.js +1 -0
  366. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +21 -18
  367. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.html +0 -1
  368. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/manifest.json +4 -7
  369. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/Component.js +1 -0
  370. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/manifest.json +1 -10
  371. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +1 -0
  372. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +21 -18
  373. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -10
  374. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Component.js +1 -0
  375. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +25 -22
  376. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.html +0 -1
  377. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +5 -4
  378. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.html +0 -1
  379. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/manifest.json +3 -7
  380. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Component.js +1 -0
  381. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.html +0 -1
  382. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/manifest.json +3 -11
  383. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +1 -0
  384. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.html +0 -1
  385. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/manifest.json +2 -10
  386. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Component.js +1 -0
  387. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +60 -57
  388. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.html +0 -1
  389. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/manifest.json +4 -6
  390. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/Component.js +1 -0
  391. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/manifest.json +3 -11
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Component.js +1 -0
  393. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.view.xml +0 -1
  394. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.html +0 -1
  395. package/test/sap/ui/core/demokit/sample/odata/v4/Products/manifest.json +3 -10
  396. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Component.js +1 -0
  397. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.html +0 -1
  398. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +81 -69
  399. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +44 -9
  400. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +49 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +14 -0
  402. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/manifest.json +1 -10
  403. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Component.js +1 -0
  404. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.html +0 -1
  405. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +2 -11
  406. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Component.js +1 -0
  407. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.html +0 -1
  408. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +2 -11
  409. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +1 -2
  410. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.html +0 -1
  411. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/manifest.json +3 -10
  412. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Component.js +1 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.html +0 -1
  414. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +6 -5
  415. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Component.js +1 -0
  416. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.html +0 -1
  417. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/manifest.json +2 -10
  418. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Component.js +1 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.html +0 -1
  420. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/manifest.json +3 -10
  421. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.html +0 -1
  422. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/manifest.json +3 -11
  423. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  424. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  425. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  426. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  427. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  428. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  429. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  430. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  431. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  432. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  433. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  434. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  435. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  436. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  437. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  438. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  439. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  440. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  441. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  442. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  443. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  444. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  445. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  446. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  447. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  448. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  449. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  450. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  451. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  452. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  453. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  454. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  455. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  456. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  457. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  458. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  459. package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +1 -0
  460. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  461. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/Component.js +1 -0
  462. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/index.html +0 -1
  463. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/manifest.json +2 -13
  464. package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +1 -0
  465. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  466. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/Component.js +1 -0
  467. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/index.html +0 -1
  468. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/manifest.json +2 -13
  469. package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +1 -0
  470. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  471. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/Component.js +1 -0
  472. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/index.html +0 -1
  473. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/manifest.json +2 -13
  474. package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +1 -0
  475. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  476. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/Component.js +1 -0
  477. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/index.html +0 -1
  478. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/manifest.json +2 -13
  479. package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +1 -0
  480. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  481. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/Component.js +1 -0
  482. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/index.html +0 -1
  483. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/manifest.json +2 -13
  484. package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +1 -0
  485. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  486. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/Component.js +1 -0
  487. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/index.html +0 -1
  488. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/manifest.json +2 -13
  489. package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +1 -0
  490. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  491. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/Component.js +1 -0
  492. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/index.html +0 -1
  493. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/manifest.json +2 -13
  494. package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +1 -0
  495. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  496. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/Component.js +1 -0
  497. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/index.html +0 -1
  498. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/manifest.json +2 -13
  499. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.html +0 -1
  500. package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +1 -0
  501. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  502. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/Component.js +1 -0
  503. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/index.html +0 -1
  504. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/manifest.json +2 -11
  505. package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +1 -0
  506. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  507. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/Component.js +1 -0
  508. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/index.html +0 -1
  509. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/manifest.json +2 -11
  510. package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +1 -0
  511. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  512. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/Component.js +1 -0
  513. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/index.html +0 -1
  514. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/manifest.json +2 -11
  515. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.html +0 -1
  516. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  517. package/test/sap/ui/core/getComputedStyle.html +2 -1
  518. package/test/sap/ui/core/getComputedStyleFF.html +1 -1
  519. package/test/sap/ui/core/internal/samples/client/MusicCollection/Component.js +5 -8
  520. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.controller.js +6 -2
  521. package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.view.xml +7 -3
  522. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -3
  523. package/test/sap/ui/core/internal/samples/client/MusicCollection/manifest.json +1 -13
  524. package/test/sap/ui/core/internal/samples/odata/twoFields/Component.js +3 -45
  525. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +37 -1
  526. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.view.xml +5 -5
  527. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -3
  528. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -3
  529. package/test/sap/ui/core/internal/samples/odata/twoFields/manifest.json +1 -11
  530. package/test/sap/ui/core/internal/samples/odata/v2/Products/Component.js +3 -22
  531. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.controller.js +16 -22
  532. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +3 -2
  533. package/test/sap/ui/core/internal/samples/odata/v2/Products/SandboxModel.js +1 -1
  534. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -3
  535. package/test/sap/ui/core/internal/samples/odata/v2/Products/manifest.json +2 -13
  536. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +1 -0
  537. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +49 -41
  538. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -4
  539. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/manifest.json +3 -12
  540. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +1 -0
  541. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +2 -2
  542. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +4 -3
  543. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -3
  544. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/manifest.json +1 -11
  545. package/test/sap/ui/core/qunit/Fragment.qunit.js +20 -20
  546. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +4 -4
  547. package/test/sap/ui/core/qunit/Icon.qunit.js +217 -1
  548. package/test/sap/ui/core/qunit/RenderManager.qunit.js +18 -5
  549. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +15 -18
  550. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +5 -13
  551. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +2 -2
  552. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +36 -1
  553. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +475 -290
  554. package/test/sap/ui/core/qunit/component/Models.qunit.js +0 -70
  555. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +86 -0
  556. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +86 -1
  557. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Cell_Found.fragment.xml +5 -0
  558. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Column.fragment.xml +5 -0
  559. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EPinNestedView.view.xml +51 -0
  560. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/ExtensionPointProvider.js +27 -4
  561. package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Main.view.xml +5 -0
  562. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Main.view.xml +0 -1
  563. package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Sub2.view.xml +1 -3
  564. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +72 -2
  565. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +14 -2
  566. package/test/sap/ui/core/qunit/generic/ControlRenderer.qunit.js +4 -1
  567. package/test/sap/ui/core/qunit/generic/legacy/ControlRenderer.qunit.js +4 -0
  568. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  569. package/test/sap/ui/core/qunit/loader/amd/base_tag/_launchTest.js +2 -4
  570. package/test/sap/ui/core/qunit/loader/amd/config_paths/_launchTest.js +2 -4
  571. package/test/sap/ui/core/qunit/loader/amd/config_paths_relative/_launchTest.js +2 -4
  572. package/test/sap/ui/core/qunit/loader/amdAPIs.qunit.js +3 -0
  573. package/test/sap/ui/core/qunit/model/Binding.qunit.js +13 -0
  574. package/test/sap/ui/core/qunit/model/FieldHelp.qunit.js +864 -0
  575. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +2 -2
  576. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +8 -6
  577. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +7 -7
  578. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +131 -22
  579. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -2
  580. package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +1 -3
  581. package/test/sap/ui/core/qunit/mvc/testdata/cache.view.xml +1 -1
  582. package/test/sap/ui/core/qunit/mvc/testdata/legacy/test.view.xml +32 -0
  583. package/test/sap/ui/core/qunit/mvc/testdata/test.view.xml +2 -15
  584. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +148 -1
  585. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +55 -6
  586. package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +14 -0
  587. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +54 -0
  588. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +277 -15
  589. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +580 -13
  590. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +86 -5
  591. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +268 -5
  592. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +20 -0
  593. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +4 -10
  594. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +61 -13
  595. package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +17 -14
  596. package/test/sap/ui/core/qunit/routing/async/Views.qunit.js +3 -0
  597. package/test/sap/ui/core/qunit/test/starter/find/main.js +6 -4
  598. package/test/sap/ui/core/qunit/testdata/routing/HistoryIFrame.html +2 -1
  599. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
  600. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +51 -22
  601. package/test/sap/ui/core/qunit/ui/Device.qunit.js +24 -0
  602. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +47 -1
  603. package/test/sap/ui/core/relnotes/changes-1.124.json +1 -21
  604. package/test/sap/ui/core/relnotes/changes-1.125.json +37 -0
  605. package/test/sap/ui/core/samples/ResponsiveDemo.html +97 -103
  606. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  607. package/test/sap/ui/core/samples/draganddrop/DragAndDrop.html +2 -2
  608. package/test/sap/ui/core/samples/mvc/Product.html +1 -7
  609. package/test/sap/ui/core/samples/mvc/ViewPreprocessor.html +20 -12
  610. package/test/sap/ui/core/samples/mvc/XMLView.html +77 -24
  611. package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +13 -19
  612. package/test/sap/ui/core/samples/mvc/controller/Async.controller.js +0 -1
  613. package/test/sap/ui/core/samples/mvc/controller/Product.controller.js +0 -1
  614. package/test/sap/ui/core/samples/mvc/views/Async.view.xml +16 -57
  615. package/test/sap/ui/core/samples/mvc/views/Dummy.fragment.xml +2 -2
  616. package/test/sap/ui/core/samples/mvc/views/Dummy.view.xml +2 -2
  617. package/test/sap/ui/core/samples/mvc/views/Product.view.xml +16 -57
  618. package/test/sap/ui/core/util/PasteHelper.html +148 -147
  619. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  620. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  621. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  622. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  623. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  624. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  625. package/test/testsuite/js/settings.js +5 -4
  626. package/test/testsuite/styles/main.css +5 -0
  627. package/test/sap/ui/core/ResourceRoots.html +0 -28
  628. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/component.json +0 -17
  629. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/component.json +0 -18
  630. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/component.json +0 -30
  631. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +0 -52
  632. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Component.js +0 -30
  633. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Sandbox.js +0 -51
  634. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L0_top5.json +0 -32
  635. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_A_skip8.json +0 -138
  636. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_B.json +0 -17
  637. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_C.json +0 -17
  638. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_top8.json +0 -93
  639. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/metadata.xml +0 -2322
  640. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/i18n/i18n.properties +0 -3
  641. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/manifest.json +0 -69
@@ -140,8 +140,10 @@ sap.ui.define([
140
140
  // Note: "@$ui5.node.level" is outdated after #move!
141
141
  const iLevel = oElement["@$ui5.node.level"] + iLevelOffset;
142
142
 
143
- // every "created" element needs to know its context, no others must do so
144
- strictEqual(oElement["@$ui5.context.isTransient"] !== undefined,
143
+ // every "created" element needs to know its context (if not using createInPlace!),
144
+ // no others must do so
145
+ strictEqual(oElement["@$ui5.context.isTransient"] !== undefined
146
+ && !oListBinding.getAggregation().createInPlace,
145
147
  _Helper.hasPrivateAnnotation(oElement, "context"),
146
148
  `"context" @ level ${iLevel}`, oElement);
147
149
  if (_Helper.hasPrivateAnnotation(oElement, "context")) {
@@ -5756,8 +5758,20 @@ sap.ui.define([
5756
5758
  // refreshSingle is able to calculate the key predicates in its response and a subsequent PATCH
5757
5759
  // is possible.
5758
5760
  // BCP: 2070137560
5761
+ //
5762
+ // A header message is returned in the response. The targets of the message are pointing to the
5763
+ // binding parameter. The UI5 message contains the adjusted targets. (SNOW: DINC0122620)
5759
5764
  QUnit.test("Context.refresh() in a list relative to a return value context", function (assert) {
5760
- var oTable,
5765
+ var oMessage = {
5766
+ additionalTargets : [
5767
+ "$Parameter/SalesOrder/SO_2_SOITEM(ProductID='HT-1000')/ProductID"
5768
+ ],
5769
+ code : "foo-42",
5770
+ message : "text",
5771
+ numericSeverity : 1,
5772
+ target : "$Parameter/SalesOrder/SO_2_SOITEM(ProductID='HT-1000')/Name"
5773
+ },
5774
+ oTable,
5761
5775
  sView = '\
5762
5776
  <FlexBox binding="{/SalesOrderList(\'1\')}">\
5763
5777
  <Text id="id" text="{SalesOrderID}"/>\
@@ -5794,7 +5808,22 @@ sap.ui.define([
5794
5808
  ProductID : "HT-1000"
5795
5809
  }
5796
5810
  }]
5797
- });
5811
+ }, {
5812
+ "sap-messages" : JSON.stringify([oMessage])
5813
+ })
5814
+ .expectMessages([{
5815
+ code : "foo-42",
5816
+ message : "text",
5817
+ persistent : true,
5818
+ targets : [
5819
+ "/SalesOrderList('1')/SO_2_SOITEM(ProductID='HT-1000')/Name",
5820
+ "/SalesOrderList('1')/SO_2_SOITEM(ProductID='HT-1000')/ProductID"
5821
+ ],
5822
+ technicalDetails : {
5823
+ originalMessage : oMessage
5824
+ },
5825
+ type : "Success"
5826
+ }]);
5798
5827
 
5799
5828
  return Promise.all([
5800
5829
  that.oView.byId("action").getObjectBinding().invoke(),
@@ -18978,8 +19007,18 @@ sap.ui.define([
18978
19007
  // result.
18979
19008
  // JIRA: CPOUI5UISERVICESV3-965
18980
19009
  // BCP: 2070134549
19010
+ //
19011
+ // A header message is returned in the response. The target of the message is pointing to the
19012
+ // binding parameter. The UI5 message contains the adjusted target. (SNOW: DINC0122620)
18981
19013
  QUnit.test("Rel. bound function, auto-$expand/$select (BCP 2070134549)", function (assert) {
18982
- var sFunctionName = "com.sap.gateway.default.iwbep.tea_busi.v0001"
19014
+ var oMessage = {
19015
+ // additional targets are missing intentionally
19016
+ code : "foo-42",
19017
+ message : "text",
19018
+ numericSeverity : 1,
19019
+ target : "$Parameter/_it/Name"
19020
+ },
19021
+ sFunctionName = "com.sap.gateway.default.iwbep.tea_busi.v0001"
18983
19022
  + ".__FAKE__FuGetEmployeesByManager",
18984
19023
  oModel = this.createTeaBusiModel({autoExpandSelect : true}),
18985
19024
  sView = '\
@@ -19005,7 +19044,21 @@ sap.ui.define([
19005
19044
  ID : "6",
19006
19045
  Name : "Susan Bay"
19007
19046
  }]
19047
+ }, {
19048
+ "sap-messages" : JSON.stringify([oMessage])
19008
19049
  })
19050
+ .expectMessages([{
19051
+ code : "foo-42",
19052
+ message : "text",
19053
+ persistent : true,
19054
+ targets : [
19055
+ "/MANAGERS('1')/Name"
19056
+ ],
19057
+ technicalDetails : {
19058
+ originalMessage : oMessage
19059
+ },
19060
+ type : "Success"
19061
+ }])
19009
19062
  .expectChange("TEAM_ID", "TEAM_03")
19010
19063
  .expectChange("id", ["3", "6"])
19011
19064
  .expectChange("name", ["Jonathan Smith", "Susan Bay"]);
@@ -25437,6 +25490,7 @@ sap.ui.define([
25437
25490
  //
25438
25491
  // Selection on header and root context (JIRA: CPOUI5ODATAV4-1943).
25439
25492
  // Data binding for selection (JIRA: CPOUI5ODATAV4-1944).
25493
+ // Get previous or next sibling (JIRA: CPOUI5ODATAV4-2558)
25440
25494
  //
25441
25495
  // Use $count (JIRA: CPOUI5ODATAV4-1855).
25442
25496
  // Old vs. new format of RecursiveHierarchy annotation (JIRA: CPOUI5ODATAV4-2401).
@@ -25520,7 +25574,7 @@ sap.ui.define([
25520
25574
  })
25521
25575
  .expectChange("count");
25522
25576
 
25523
- return this.createView(assert, sView, oModel).then(function () {
25577
+ return this.createView(assert, sView, oModel).then(async function () {
25524
25578
  oTable = that.oView.byId("table");
25525
25579
  oRoot = oTable.getRows()[0].getBindingContext();
25526
25580
  oListBinding = oRoot.getBinding();
@@ -25579,6 +25633,10 @@ sap.ui.define([
25579
25633
  }
25580
25634
  }, "technical properties have been removed");
25581
25635
 
25636
+ // code under test
25637
+ assert.strictEqual(await oRoot.requestSibling(-1), null, "CPOUI5ODATAV4-2558");
25638
+ assert.strictEqual(await oRoot.requestSibling(+1), null, "CPOUI5ODATAV4-2558");
25639
+
25582
25640
  // code under test
25583
25641
  checkSelected(assert, oRoot, undefined);
25584
25642
  checkSelected(assert, oHeaderContext, false);
@@ -26645,6 +26703,7 @@ sap.ui.define([
26645
26703
  // JIRA: CPOUI5ODATAV4-2355
26646
26704
  //
26647
26705
  // Use LimitedRank after #create (JIRA: CPOUI5ODATAV4-2430)
26706
+ // Get previous or next sibling (JIRA: CPOUI5ODATAV4-2558)
26648
26707
  QUnit.test("Recursive Hierarchy: expand to 2, collapse & expand root etc.", function (assert) {
26649
26708
  var oCollapsed,
26650
26709
  oListBinding,
@@ -26725,7 +26784,7 @@ sap.ui.define([
26725
26784
  })
26726
26785
  .expectChange("count");
26727
26786
 
26728
- return this.createView(assert, sView, oModel).then(function () {
26787
+ return this.createView(assert, sView, oModel).then(async function () {
26729
26788
  oTable = that.oView.byId("table");
26730
26789
  oListBinding = oTable.getBinding("rows");
26731
26790
 
@@ -26755,6 +26814,12 @@ sap.ui.define([
26755
26814
  Name : "Kappa"
26756
26815
  }, "technical properties have been removed");
26757
26816
 
26817
+ const [oBeta, oKappa, oLambda] = oListBinding.getCurrentContexts();
26818
+ // code under test
26819
+ assert.strictEqual(await oKappa.requestSibling(-1), oBeta, "CPOUI5ODATAV4-2558");
26820
+ assert.strictEqual(await oKappa.requestSibling(), oLambda, "CPOUI5ODATAV4-2558");
26821
+ assert.strictEqual(await oKappa.requestSibling(+1), oLambda, "CPOUI5ODATAV4-2558");
26822
+
26758
26823
  // code under test
26759
26824
  assert.strictEqual(oListBinding.getDownloadUrl(), sTeaBusi + "EMPLOYEES"
26760
26825
  + "?$apply=orderby(AGE%20desc)"
@@ -26786,7 +26851,7 @@ sap.ui.define([
26786
26851
  oTable.setFirstVisibleRow(0);
26787
26852
 
26788
26853
  return that.waitForChanges(assert, "scroll up");
26789
- }).then(function () {
26854
+ }).then(async function () {
26790
26855
  var oNameBinding;
26791
26856
 
26792
26857
  oRoot = oTable.getRows()[0].getBindingContext();
@@ -26810,6 +26875,12 @@ sap.ui.define([
26810
26875
  Name : "Alpha"
26811
26876
  }, "technical properties have been removed");
26812
26877
 
26878
+ const [/*oAlpha*/, oBeta, oKappa, oLambda] = oListBinding.getAllCurrentContexts();
26879
+ // code under test
26880
+ //TODO assert.strictEqual(await oAlpha.requestSibling(), null, "CPOUI5ODATAV4-2558");
26881
+ assert.strictEqual(await oBeta.requestSibling(-1), null, "CPOUI5ODATAV4-2558");
26882
+ assert.strictEqual(await oKappa.requestSibling(), oLambda, "CPOUI5ODATAV4-2558");
26883
+
26813
26884
  that.expectRequest({
26814
26885
  batchNo : 3,
26815
26886
  method : "PATCH",
@@ -26851,10 +26922,16 @@ sap.ui.define([
26851
26922
  [false, 2, "1", "0", "Beta", 55],
26852
26923
  [undefined, 2, "2", "0", "Kappa: κ", 66]
26853
26924
  ], 6);
26925
+ const [, oBeta] = oListBinding.getCurrentContexts();
26854
26926
 
26855
26927
  // code under test
26856
26928
  oRoot.collapse();
26857
26929
 
26930
+ assert.throws(function () {
26931
+ // code under test
26932
+ oBeta.requestSibling();
26933
+ }, new Error("Unsupported context: " + oBeta));
26934
+
26858
26935
  return that.waitForChanges(assert, "collapse root");
26859
26936
  }).then(function () {
26860
26937
  checkTable("root collapsed", assert, oTable, [
@@ -26907,7 +26984,12 @@ sap.ui.define([
26907
26984
  oCollapsed.expand();
26908
26985
 
26909
26986
  return that.waitForChanges(assert, "expand initially collapsed node");
26910
- }).then(function () {
26987
+ }).then(async function () {
26988
+ const [, oBeta, oGamma] = oListBinding.getCurrentContexts();
26989
+ // code under test (JIRA: CPOUI5ODATAV4-2558)
26990
+ const oZeta0 = await oGamma.requestSibling(); // Note: new context created here
26991
+
26992
+ // BEWARE: calls #getAllCurrentContexts!
26911
26993
  checkTable("initially collapsed node expanded", assert, oTable, [
26912
26994
  "/EMPLOYEES('0')",
26913
26995
  "/EMPLOYEES('1')",
@@ -26930,6 +27012,16 @@ sap.ui.define([
26930
27012
  Name : "Beta"
26931
27013
  }, "technical properties have been removed");
26932
27014
 
27015
+ const [,,, oZeta, oKappa] = oListBinding.getAllCurrentContexts();
27016
+ assert.strictEqual(oZeta0, oZeta);
27017
+ // code under test
27018
+ assert.strictEqual(await oBeta.requestSibling(+1), oKappa, "CPOUI5ODATAV4-2558");
27019
+ assert.strictEqual(await oKappa.requestSibling(-1), oBeta, "CPOUI5ODATAV4-2558");
27020
+ assert.strictEqual(await oGamma.requestSibling(-1), null, "CPOUI5ODATAV4-2558");
27021
+ assert.strictEqual(await oGamma.requestSibling(+1), oZeta, "CPOUI5ODATAV4-2558");
27022
+ assert.strictEqual(await oZeta.requestSibling(-1), oGamma, "CPOUI5ODATAV4-2558");
27023
+ assert.strictEqual(await oZeta.requestSibling(+1), null, "CPOUI5ODATAV4-2558");
27024
+
26933
27025
  that.expectRequest(sTopLevelsSelectUrl + "&$skip=4&$top=2", {
26934
27026
  value : [{
26935
27027
  AGE : 58,
@@ -27029,7 +27121,7 @@ sap.ui.define([
27029
27121
  oListBinding.getHeaderContext().requestSideEffects(["AGE"]),
27030
27122
  that.waitForChanges(assert, "create new root, side effect: AGE for all rows")
27031
27123
  ]);
27032
- }).then(function () {
27124
+ }).then(async function () {
27033
27125
  checkTable("new root created, after side effect: AGE for all rows", assert, oTable, [
27034
27126
  "/EMPLOYEES('9')",
27035
27127
  "/EMPLOYEES('0')"
@@ -27039,6 +27131,13 @@ sap.ui.define([
27039
27131
  ]);
27040
27132
  checkCreatedPersisted(assert, oNewRoot);
27041
27133
 
27134
+ const [oAleph, oAlpha] = oListBinding.getCurrentContexts();
27135
+ // code under test
27136
+ assert.strictEqual(await oAlpha.requestSibling(+1), oAleph,
27137
+ "CPOUI5ODATAV4-2558 ignoring out-of-place nodes");
27138
+ assert.strictEqual(await oAleph.requestSibling(-1), oAlpha,
27139
+ "CPOUI5ODATAV4-2558 ignoring out-of-place nodes");
27140
+
27042
27141
  that.expectRequest(sTopLevelsSelectUrl + "&$skip=1&$top=1", {
27043
27142
  value : [{
27044
27143
  AGE : 155,
@@ -30255,6 +30354,10 @@ sap.ui.define([
30255
30354
  // code under test
30256
30355
  oRoot.move({parent : oListBinding.getHeaderContext()});
30257
30356
  }, new Error("Cannot move to " + sFriend));
30357
+ assert.throws(function () {
30358
+ // code under test
30359
+ oListBinding.getHeaderContext().requestSibling();
30360
+ }, new Error("Unsupported context: " + sFriend));
30258
30361
 
30259
30362
  checkTable("root is leaf", assert, oTable, [
30260
30363
  sFriend + "(ArtistID='0',IsActiveEntity=false)"
@@ -30316,6 +30419,10 @@ sap.ui.define([
30316
30419
  // code under test
30317
30420
  oRoot.move({parent : oBeta});
30318
30421
  }, new Error("Cannot move to " + oBeta), "too early");
30422
+ assert.throws(function () {
30423
+ // code under test
30424
+ oBeta.requestSibling();
30425
+ }, new Error("Unsupported context: " + oBeta), "too early");
30319
30426
 
30320
30427
  return that.waitForChanges(assert, "create 1st child");
30321
30428
  }).then(function () {
@@ -31522,6 +31629,10 @@ sap.ui.define([
31522
31629
  // code under test
31523
31630
  oNewChild.move({parent : oNewRoot});
31524
31631
  }, new Error("Cannot move to " + oNewRoot), "too late");
31632
+ assert.throws(function () {
31633
+ // code under test
31634
+ oNewRoot.requestSibling();
31635
+ }, new Error("Unsupported context: " + oNewRoot), "too late");
31525
31636
 
31526
31637
  await Promise.all([
31527
31638
  oDeleteNewRootPromise,
@@ -35836,6 +35947,11 @@ sap.ui.define([
35836
35947
  [true, 1, "Alpha*"],
35837
35948
  [undefined, 2, "Theta*"]
35838
35949
  ], 7);
35950
+ assert.deepEqual(oBinding.getAllCurrentContexts()[0].getObject(), {
35951
+ "@$ui5.node.level" : 1,
35952
+ ID : "7",
35953
+ Name : "Eta*"
35954
+ }, "no LimitedRank");
35839
35955
 
35840
35956
  this.expectRequest(sUrlWithExpandLevels
35841
35957
  + "&$select=DescendantCount,DistanceFromRoot,DrillState,ID,Name"
@@ -37691,6 +37807,438 @@ make root = ${bMakeRoot}`;
37691
37807
  assert.strictEqual(oBeta.getIndex(), 0);
37692
37808
  });
37693
37809
 
37810
+ //*********************************************************************************************
37811
+ // Scenario: A hierarchy uses "$$aggregation.createInPlace". In this mode new nodes are not part
37812
+ // of the hierarchy as long as they are transient.
37813
+ // Create a node, but because of a filter this node doesn't become part of the hierarchy and is
37814
+ // therefore not displayed.
37815
+ // Create a child below an expanded parent on a level within the given expandTo range, it is
37816
+ // inserted "in place" at the last sibling position.
37817
+ // Create a child below a leaf, also on a level within the given expandTo range.
37818
+ // JIRA: CPOUI5ODATAV4-2560
37819
+ QUnit.test("Recursive Hierarchy: createInPlace", async function (assert) {
37820
+ const oModel = this.createTeaBusiModel({autoExpandSelect : true});
37821
+ const sSelect = "&$select=DescendantCount,DistanceFromRoot,DrillState,ID,Name";
37822
+ const sUrl = "EMPLOYEES"
37823
+ + "?$apply=ancestors($root/EMPLOYEES,OrgChart,ID,filter(Is_Manager),keep start)"
37824
+ + "/com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/EMPLOYEES"
37825
+ + ",HierarchyQualifier='OrgChart',NodeProperty='ID',Levels=2)";
37826
+ const sView = `
37827
+ <t:Table id="table" rows="{path : '/EMPLOYEES',
37828
+ parameters : {
37829
+ $$aggregation : {
37830
+ createInPlace : true,
37831
+ expandTo : 2,
37832
+ hierarchyQualifier : 'OrgChart'
37833
+ },
37834
+ $count : true,
37835
+ $filter : 'Is_Manager'
37836
+ }}" threshold="0" visibleRowCount="1">
37837
+ <Text text="{= %{@$ui5.node.isExpanded} }"/>
37838
+ <Text text="{= %{@$ui5.node.level} }"/>
37839
+ <Text text="{ID}"/>
37840
+ <Text text="{Name}"/>
37841
+ </t:Table>`;
37842
+
37843
+ // 1 Alpha
37844
+ // 3 Gamma
37845
+ // 4 Delta (created)
37846
+ // 2 Beta
37847
+ // 5 Epsilon (created)
37848
+ // (42 FilteredOut (created, but filtered out))
37849
+ this.expectRequest("EMPLOYEES/$count?$filter=Is_Manager", 3)
37850
+ .expectRequest(sUrl + sSelect + "&$count=true&$skip=0&$top=1", {
37851
+ "@odata.count" : "3",
37852
+ value : [{
37853
+ DescendantCount : "1",
37854
+ DistanceFromRoot : "0",
37855
+ DrillState : "expanded",
37856
+ ID : "1",
37857
+ Name : "Alpha"
37858
+ }]
37859
+ });
37860
+
37861
+ await this.createView(assert, sView, oModel);
37862
+
37863
+ const oTable = this.oView.byId("table");
37864
+ checkTable("initial page", assert, oTable, [
37865
+ "/EMPLOYEES('1')"
37866
+ ], [
37867
+ [true, 1, "1", "Alpha"]
37868
+ ], 3);
37869
+ const oListBinding = oTable.getBinding("rows");
37870
+
37871
+ this.expectRequest({
37872
+ method : "POST",
37873
+ url : "EMPLOYEES",
37874
+ payload : {
37875
+ Name : "FilteredOut"
37876
+ }
37877
+ }, {
37878
+ ID : "42",
37879
+ Name : "FilteredOut"
37880
+ })
37881
+ .expectRequest(sUrl + "&$filter=ID eq '42'&$select=LimitedRank", {
37882
+ value : [] // filtered out
37883
+ });
37884
+
37885
+ // code under test
37886
+ const oFilteredOut = oListBinding.create({
37887
+ Name : "FilteredOut"
37888
+ }, /*bSkipRefresh*/true);
37889
+
37890
+ assert.strictEqual(oFilteredOut.getIndex(), undefined);
37891
+ assert.strictEqual(oFilteredOut.isTransient(), true);
37892
+ checkTable("while create FilteredOut is pending", assert, oTable, [
37893
+ "/EMPLOYEES('1')"
37894
+ ], [
37895
+ [true, 1, "1", "Alpha"]
37896
+ ], 3);
37897
+ assert.strictEqual(oListBinding.getCount(), 3);
37898
+
37899
+ await Promise.all([
37900
+ oFilteredOut.created(),
37901
+ this.waitForChanges(assert, "create FilteredOut")
37902
+ ]);
37903
+
37904
+ assert.strictEqual(oFilteredOut.getIndex(), undefined, "not part of the hierarchy");
37905
+ assert.strictEqual(oFilteredOut.isTransient(), undefined);
37906
+ assert.strictEqual(oFilteredOut.getPath(), "/EMPLOYEES('42')");
37907
+ assert.strictEqual(oFilteredOut.getBinding(), undefined, "FilteredOut is destroyed");
37908
+ assert.throws(function () {
37909
+ oFilteredOut.setKeepAlive(true);
37910
+ }, "already destroyed");
37911
+ checkTable("after create FilteredOut", assert, oTable, [
37912
+ "/EMPLOYEES('1')"
37913
+ ], [
37914
+ [true, 1, "1", "Alpha"]
37915
+ ], 3);
37916
+ assert.strictEqual(oListBinding.getCount(), 3);
37917
+
37918
+ this.expectRequest(sUrl + sSelect + "&$skip=1&$top=2", {
37919
+ value : [{
37920
+ DescendantCount : "0",
37921
+ DistanceFromRoot : "1",
37922
+ DrillState : "leaf",
37923
+ ID : "3",
37924
+ Name : "Gamma"
37925
+ }, {
37926
+ DescendantCount : "0",
37927
+ DistanceFromRoot : "0",
37928
+ DrillState : "leaf",
37929
+ ID : "2",
37930
+ Name : "Beta"
37931
+ }]
37932
+ });
37933
+
37934
+ await this.checkAllContexts("after FilteredOut is destroyed", assert, oListBinding,
37935
+ ["@$ui5.node.isExpanded", "@$ui5.node.level", "ID", "Name"], [
37936
+ [true, 1, "1", "Alpha"],
37937
+ [undefined, 2, "3", "Gamma"],
37938
+ [undefined, 1, "2", "Beta"]
37939
+ ]);
37940
+ const oAlpha = oListBinding.getAllCurrentContexts()[0];
37941
+
37942
+ this.expectRequest({
37943
+ method : "POST",
37944
+ url : "EMPLOYEES",
37945
+ payload : {
37946
+ "EMPLOYEE_2_MANAGER@odata.bind" : "EMPLOYEES('1')",
37947
+ Name : "Delta"
37948
+ }
37949
+ }, {
37950
+ ID : "4",
37951
+ Name : "Delta"
37952
+ })
37953
+ .expectRequest(sUrl + "&$filter=ID eq '4'&$select=LimitedRank", {
37954
+ value : [{LimitedRank : "2"}]
37955
+ });
37956
+
37957
+ // code under test
37958
+ const oDelta = oListBinding.create({
37959
+ "@$ui5.node.parent" : oAlpha,
37960
+ Name : "Delta"
37961
+ }, /*bSkipRefresh*/true);
37962
+ const oDeltaCreated = oDelta.created();
37963
+
37964
+ assert.strictEqual(oDelta.getIndex(), undefined);
37965
+ assert.strictEqual(oDelta.isTransient(), true);
37966
+ checkTable("while create Delta is pending", assert, oTable, [
37967
+ "/EMPLOYEES('1')",
37968
+ "/EMPLOYEES('3')",
37969
+ "/EMPLOYEES('2')"
37970
+ ], [
37971
+ [true, 1, "1", "Alpha"]
37972
+ ]);
37973
+ assert.strictEqual(oListBinding.getCount(), 3);
37974
+
37975
+ await Promise.all([
37976
+ oDeltaCreated,
37977
+ this.waitForChanges(assert, "create Delta")
37978
+ ]);
37979
+
37980
+ assert.strictEqual(oDelta.getIndex(), 2);
37981
+ assert.strictEqual(oDelta.isTransient(), false);
37982
+ checkCreatedPersisted(assert, oDelta, oDeltaCreated);
37983
+ await this.checkAllContexts("after create Delta", assert, oListBinding,
37984
+ ["@$ui5.node.isExpanded", "@$ui5.node.level", "ID", "Name"], [
37985
+ [true, 1, "1", "Alpha"],
37986
+ [undefined, 2, "3", "Gamma"],
37987
+ [undefined, 2, "4", "Delta"],
37988
+ [undefined, 1, "2", "Beta"]
37989
+ ]);
37990
+ assert.strictEqual(oListBinding.getCount(), 3); // TODO: update $count; CPOUI5ODATAV4-2245
37991
+ const oBeta = oListBinding.getAllCurrentContexts()[3];
37992
+
37993
+ this.expectRequest({
37994
+ method : "POST",
37995
+ url : "EMPLOYEES",
37996
+ payload : {
37997
+ "EMPLOYEE_2_MANAGER@odata.bind" : "EMPLOYEES('2')",
37998
+ Name : "Epsilon"
37999
+ }
38000
+ }, {
38001
+ ID : "5",
38002
+ Name : "Epsilon"
38003
+ })
38004
+ .expectRequest(sUrl + "&$filter=ID eq '5'&$select=LimitedRank", {
38005
+ value : [{LimitedRank : "4"}]
38006
+ });
38007
+
38008
+ // code under test
38009
+ const oEpsilon = oListBinding.create({
38010
+ "@$ui5.node.parent" : oBeta,
38011
+ Name : "Epsilon"
38012
+ }, /*bSkipRefresh*/true);
38013
+ const oEpsilonCreated = oEpsilon.created();
38014
+
38015
+ assert.strictEqual(oEpsilon.getIndex(), undefined);
38016
+ assert.strictEqual(oEpsilon.isTransient(), true);
38017
+ checkTable("while create Epsilon is pending", assert, oTable, [
38018
+ "/EMPLOYEES('1')",
38019
+ "/EMPLOYEES('3')",
38020
+ "/EMPLOYEES('4')",
38021
+ "/EMPLOYEES('2')"
38022
+ ], [
38023
+ [true, 1, "1", "Alpha"]
38024
+ ]);
38025
+ assert.strictEqual(oListBinding.getCount(), 3);
38026
+
38027
+ await Promise.all([
38028
+ oEpsilonCreated,
38029
+ this.waitForChanges(assert, "create Epsilon")
38030
+ ]);
38031
+
38032
+ assert.strictEqual(oEpsilon.getIndex(), 4);
38033
+ assert.strictEqual(oEpsilon.isTransient(), false);
38034
+ checkCreatedPersisted(assert, oEpsilon, oEpsilonCreated);
38035
+ await this.checkAllContexts("after create Epsilon", assert, oListBinding,
38036
+ ["@$ui5.node.isExpanded", "@$ui5.node.level", "ID", "Name"], [
38037
+ [true, 1, "1", "Alpha"],
38038
+ [undefined, 2, "3", "Gamma"],
38039
+ [undefined, 2, "4", "Delta"],
38040
+ [true, 1, "2", "Beta"],
38041
+ [undefined, 2, "5", "Epsilon"]
38042
+ ]);
38043
+ assert.strictEqual(oListBinding.getCount(), 3); // TODO: update $count; CPOUI5ODATAV4-2245
38044
+ });
38045
+
38046
+ //*********************************************************************************************
38047
+ // Scenario: A hierarchy uses "$$aggregation.createInPlace". Create a root node which is created
38048
+ // and shown in-place between two existing nodes. Use the special cases model to ensure the node
38049
+ // property is properly requested.
38050
+ // Expand a node to see that createInPlace activated a unified cache (side-effects expand).
38051
+ // JIRA: CPOUI5ODATAV4-2560
38052
+ QUnit.test("Recursive Hierarchy: createInPlace, root", async function (assert) {
38053
+ const sUrl = "Artists?$apply=ancestors($root/Artists,OrgChart,_/NodeID"
38054
+ + ",filter(sendsAutographs),keep start)"
38055
+ + "/com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/Artists"
38056
+ + ",HierarchyQualifier='OrgChart',NodeProperty='_/NodeID',Levels=1)";
38057
+ const sSelect = "&$select=ArtistID,IsActiveEntity,Name,_/DrillState,_/NodeID";
38058
+ const oModel = this.createSpecialCasesModel({autoExpandSelect : true});
38059
+ const sView = `
38060
+ <t:Table id="table" rows="{path : '/Artists',
38061
+ parameters : {
38062
+ $$aggregation : {
38063
+ createInPlace : true,
38064
+ hierarchyQualifier : 'OrgChart'
38065
+ },
38066
+ $count : true,
38067
+ $filter : 'sendsAutographs'
38068
+ }}" threshold="0">
38069
+ <Text text="{= %{@$ui5.node.isExpanded} }"/>
38070
+ <Text text="{= %{@$ui5.node.level} }"/>
38071
+ <Text text="{ArtistID}"/>
38072
+ <Text text="{Name}"/>
38073
+ <Text text="{_/NodeID}"/>
38074
+ </t:Table>`;
38075
+
38076
+ // 1 Alpha
38077
+ // 3 Gamma (created)
38078
+ // 2 Beta
38079
+ // 4 Delta
38080
+
38081
+ this.expectRequest("Artists/$count?$filter=sendsAutographs", 3)
38082
+ .expectRequest(sUrl + sSelect + "&$count=true&$skip=0&$top=10", {
38083
+ "@odata.count" : "2",
38084
+ value : [{
38085
+ ArtistID : "1",
38086
+ IsActiveEntity : false,
38087
+ Name : "Alpha",
38088
+ _ : {
38089
+ DrillState : "leaf",
38090
+ NodeID : "1,false"
38091
+ }
38092
+ }, {
38093
+ ArtistID : "2",
38094
+ IsActiveEntity : false,
38095
+ Name : "Beta",
38096
+ _ : {
38097
+ DrillState : "collapsed",
38098
+ NodeID : "2,false"
38099
+ }
38100
+ }]
38101
+ });
38102
+
38103
+ await this.createView(assert, sView, oModel);
38104
+
38105
+ const oTable = this.oView.byId("table");
38106
+ checkTable("initial page", assert, oTable, [
38107
+ "/Artists(ArtistID='1',IsActiveEntity=false)",
38108
+ "/Artists(ArtistID='2',IsActiveEntity=false)"
38109
+ ], [
38110
+ [undefined, 1, "1", "Alpha", "1,false"],
38111
+ [false, 1, "2", "Beta", "2,false"]
38112
+ ]);
38113
+ const oListBinding = oTable.getBinding("rows");
38114
+
38115
+ this.expectRequest({
38116
+ method : "POST",
38117
+ url : "Artists",
38118
+ payload : {
38119
+ Name : "Gamma"
38120
+ }
38121
+ }, {
38122
+ ArtistID : "3",
38123
+ IsActiveEntity : false,
38124
+ Name : "Gamma",
38125
+ _ : null // not available w/ RAP for a non-hierarchical request
38126
+ })
38127
+ .expectRequest(sUrl + "&$filter=ArtistID eq '3' and IsActiveEntity eq false"
38128
+ + "&$select=_/Limited_Rank,_/NodeID", {
38129
+ value : [{
38130
+ _ : {
38131
+ Limited_Rank : "1",
38132
+ NodeID : "3,false"
38133
+ }
38134
+ }]
38135
+ });
38136
+
38137
+ // code under test
38138
+ const oGamma = oListBinding.create({
38139
+ Name : "Gamma"
38140
+ }, /*bSkipRefresh*/true);
38141
+ const oGammaCreated = oGamma.created();
38142
+
38143
+ assert.strictEqual(oGamma.getIndex(), undefined);
38144
+ assert.strictEqual(oGamma.isTransient(), true);
38145
+ checkTable("while create Gamma is pending", assert, oTable, [
38146
+ "/Artists(ArtistID='1',IsActiveEntity=false)",
38147
+ "/Artists(ArtistID='2',IsActiveEntity=false)"
38148
+ ], [
38149
+ [undefined, 1, "1", "Alpha", "1,false"],
38150
+ [false, 1, "2", "Beta", "2,false"]
38151
+ ]);
38152
+ assert.strictEqual(oListBinding.getCount(), 3);
38153
+
38154
+ await Promise.all([
38155
+ oGammaCreated,
38156
+ this.waitForChanges(assert, "create Gamma")
38157
+ ]);
38158
+
38159
+ assert.strictEqual(oGamma.getIndex(), 1);
38160
+ assert.strictEqual(oGamma.isTransient(), false);
38161
+ checkCreatedPersisted(assert, oGamma, oGammaCreated);
38162
+ checkTable("after create Gamma", assert, oTable, [
38163
+ "/Artists(ArtistID='1',IsActiveEntity=false)",
38164
+ "/Artists(ArtistID='3',IsActiveEntity=false)",
38165
+ "/Artists(ArtistID='2',IsActiveEntity=false)"
38166
+ ], [
38167
+ [undefined, 1, "1", "Alpha", "1,false"],
38168
+ [undefined, 1, "3", "Gamma", "3,false"],
38169
+ [false, 1, "2", "Beta", "2,false"]
38170
+ ]);
38171
+ assert.strictEqual(oListBinding.getCount(), 3); // TODO: update $count; CPOUI5ODATAV4-2245
38172
+ const oBeta = oListBinding.getCurrentContexts()[2];
38173
+
38174
+ this.expectRequest("Artists/$count?$filter=sendsAutographs", 4)
38175
+ .expectRequest(sUrl.slice(0, -1)
38176
+ + ",ExpandLevels=" + JSON.stringify([{NodeID : "2,false", Levels : 1}]) + ")"
38177
+ + sSelect.replace(",Name,", ",Name,_/DescendantCount,_/DistanceFromRoot,")
38178
+ + "&$count=true&$skip=0&$top=10", {
38179
+ "@odata.count" : "4",
38180
+ value : [{
38181
+ ArtistID : "1",
38182
+ IsActiveEntity : false,
38183
+ Name : "Alpha",
38184
+ _ : {
38185
+ DescendantCount : "0",
38186
+ DistanceFromRoot : "0",
38187
+ DrillState : "leaf",
38188
+ NodeID : "1,false"
38189
+ }
38190
+ }, {
38191
+ ArtistID : "3",
38192
+ IsActiveEntity : false,
38193
+ Name : "Gamma",
38194
+ _ : {
38195
+ DescendantCount : "0",
38196
+ DistanceFromRoot : "0",
38197
+ DrillState : "leaf",
38198
+ NodeID : "3,false"
38199
+ }
38200
+ }, {
38201
+ ArtistID : "2",
38202
+ IsActiveEntity : false,
38203
+ Name : "Beta",
38204
+ _ : {
38205
+ DescendantCount : "1",
38206
+ DistanceFromRoot : "0",
38207
+ DrillState : "expanded",
38208
+ NodeID : "2,false"
38209
+ }
38210
+ }, {
38211
+ ArtistID : "4",
38212
+ IsActiveEntity : false,
38213
+ Name : "Delta",
38214
+ _ : {
38215
+ DescendantCount : "0",
38216
+ DistanceFromRoot : "1",
38217
+ DrillState : "leaf",
38218
+ NodeID : "4,false"
38219
+ }
38220
+ }]
38221
+ });
38222
+
38223
+ // code under test
38224
+ oBeta.expand();
38225
+
38226
+ await this.waitForChanges(assert, "expand Beta");
38227
+
38228
+ checkTable("after expand Beta", assert, oTable, [
38229
+ "/Artists(ArtistID='1',IsActiveEntity=false)",
38230
+ "/Artists(ArtistID='3',IsActiveEntity=false)",
38231
+ "/Artists(ArtistID='2',IsActiveEntity=false)",
38232
+ "/Artists(ArtistID='4',IsActiveEntity=false)"
38233
+ ], [
38234
+ [undefined, 1, "1", "Alpha", "1,false"],
38235
+ [undefined, 1, "3", "Gamma", "3,false"],
38236
+ [true, 1, "2", "Beta", "2,false"],
38237
+ [undefined, 2, "4", "Delta", "4,false"]
38238
+ ]);
38239
+ assert.strictEqual(oListBinding.getCount(), 4);
38240
+ });
38241
+
37694
38242
  //*********************************************************************************************
37695
38243
  // Scenario: Show the first level of a recursive hierarchy ("Alpha", "Omega"), expand "Alpha".
37696
38244
  // Scroll to "Delta". Request side effects for the list binding. The parent node will not
@@ -37698,6 +38246,8 @@ make root = ${bMakeRoot}`;
37698
38246
  // Determine the parent node of "Delta" with #getParent. It is not available at the moment.
37699
38247
  // Try to request the parent node of "Alpha" and "Delta".
37700
38248
  // JIRA: CPOUI5ODATAV4-2342
38249
+ //
38250
+ // Request next sibling via group level cache (JIRA: CPOUI5ODATAV4-2558)
37701
38251
  QUnit.test("Recursive Hierarchy: getParent/requestParent after requestSideEffects",
37702
38252
  async function (assert) {
37703
38253
  const oModel = this.createTeaBusiModel({autoExpandSelect : true});
@@ -37776,15 +38326,32 @@ make root = ${bMakeRoot}`;
37776
38326
  [true, 1, "0", "Alpha"],
37777
38327
  [undefined, 2, "1", "Beta"]
37778
38328
  ], 6);
38329
+ const [, oBeta, oGamma] = oAlpha.getBinding().getAllCurrentContexts();
38330
+ assert.strictEqual(oGamma.getProperty("Name"), "Gamma",
38331
+ "double check that index was right");
38332
+
38333
+ // code under test
38334
+ assert.strictEqual(await oGamma.requestSibling(-1), oBeta, "CPOUI5ODATAV4-2558");
37779
38335
 
37780
38336
  this.expectRequest("EMPLOYEES?$apply=descendants($root/EMPLOYEES,OrgChart,ID"
37781
38337
  + ",filter(ID eq '0'),1)"
37782
- + "&$select=DrillState,ID,Name&$skip=2&$top=2", {
38338
+ + "&$select=DrillState,ID,Name&$skip=2&$top=1", {
37783
38339
  value : [{
37784
38340
  DrillState : "leaf",
37785
38341
  ID : "3",
37786
38342
  Name : "Delta"
37787
- }, {
38343
+ }]
38344
+ });
38345
+
38346
+ // code under test
38347
+ const oDelta = await oGamma.requestSibling(+1);
38348
+
38349
+ assert.strictEqual(oDelta.getProperty("Name"), "Delta", "CPOUI5ODATAV4-2558");
38350
+
38351
+ this.expectRequest("EMPLOYEES?$apply=descendants($root/EMPLOYEES,OrgChart,ID"
38352
+ + ",filter(ID eq '0'),1)"
38353
+ + "&$select=DrillState,ID,Name&$skip=3&$top=1", {
38354
+ value : [{
37788
38355
  DrillState : "leaf",
37789
38356
  ID : "4",
37790
38357
  Name : "Epsilon"
@@ -37807,7 +38374,7 @@ make root = ${bMakeRoot}`;
37807
38374
  [undefined, 2, "3", "Delta"],
37808
38375
  [undefined, 2, "4", "Epsilon"]
37809
38376
  ]);
37810
- const oDelta = oTable.getRows()[0].getBindingContext();
38377
+ assert.strictEqual(oDelta, oTable.getRows()[0].getBindingContext());
37811
38378
 
37812
38379
  this.expectRequest("EMPLOYEES?$select=ID,Name&$filter=ID eq '3' or ID eq '4'"
37813
38380
  + "&$top=2", {