@openui5/sap.ui.core 1.122.1 → 1.123.1

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 (534) hide show
  1. package/.dtsgenrc +7 -1
  2. package/.eslintrc.json +3 -0
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -17
  5. package/src/jquery.sap.properties.js +1 -1
  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/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/future.js +3 -1
  13. package/src/sap/base/i18n/Formatting.js +119 -94
  14. package/src/sap/base/i18n/LanguageTag.js +1 -1
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +3 -3
  58. package/src/sap/ui/Global.js +7 -4
  59. package/src/sap/ui/base/BindingInfo.js +22 -0
  60. package/src/sap/ui/base/Event.js +1 -1
  61. package/src/sap/ui/base/EventProvider.js +1 -1
  62. package/src/sap/ui/base/Interface.js +1 -1
  63. package/src/sap/ui/base/ManagedObject.js +5 -14
  64. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  65. package/src/sap/ui/base/Metadata.js +15 -14
  66. package/src/sap/ui/base/Object.js +1 -1
  67. package/src/sap/ui/base/ObjectPool.js +1 -1
  68. package/src/sap/ui/core/.library +1 -1
  69. package/src/sap/ui/core/BusyIndicator.js +1 -1
  70. package/src/sap/ui/core/Component.js +17 -16
  71. package/src/sap/ui/core/ComponentContainer.js +1 -1
  72. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  73. package/src/sap/ui/core/ComponentSupport.js +1 -1
  74. package/src/sap/ui/core/Configuration.js +53 -18
  75. package/src/sap/ui/core/Control.js +1 -1
  76. package/src/sap/ui/core/Core.js +58 -21
  77. package/src/sap/ui/core/CustomData.js +1 -1
  78. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  79. package/src/sap/ui/core/Element.js +1 -1
  80. package/src/sap/ui/core/ElementMetadata.js +1 -1
  81. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  82. package/src/sap/ui/core/EventBus.js +6 -2
  83. package/src/sap/ui/core/Fragment.js +10 -5
  84. package/src/sap/ui/core/HTML.js +1 -1
  85. package/src/sap/ui/core/History.js +1 -1
  86. package/src/sap/ui/core/Icon.js +1 -1
  87. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  88. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  89. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  90. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  91. package/src/sap/ui/core/InvisibleText.js +1 -1
  92. package/src/sap/ui/core/Item.js +1 -1
  93. package/src/sap/ui/core/LabelEnablement.js +1 -1
  94. package/src/sap/ui/core/LayoutData.js +1 -1
  95. package/src/sap/ui/core/ListItem.js +1 -1
  96. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  97. package/src/sap/ui/core/Locale.js +1 -1
  98. package/src/sap/ui/core/LocaleData.js +37 -21
  99. package/src/sap/ui/core/Manifest.js +1 -1
  100. package/src/sap/ui/core/Message.js +1 -1
  101. package/src/sap/ui/core/RenderManager.js +7 -1
  102. package/src/sap/ui/core/Renderer.js +4 -1
  103. package/src/sap/ui/core/ResizeHandler.js +1 -1
  104. package/src/sap/ui/core/ScrollBar.js +2 -2
  105. package/src/sap/ui/core/SeparatorItem.js +1 -1
  106. package/src/sap/ui/core/Title.js +1 -1
  107. package/src/sap/ui/core/TooltipBase.js +1 -1
  108. package/src/sap/ui/core/UIArea.js +37 -47
  109. package/src/sap/ui/core/UIComponent.js +1 -1
  110. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  111. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  112. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  113. package/src/sap/ui/core/XMLComposite.js +1 -1
  114. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  115. package/src/sap/ui/core/XMLTemplateProcessor.js +12 -0
  116. package/src/sap/ui/core/_IconRegistry.js +1 -0
  117. package/src/sap/ui/core/date/UI5Date.js +1 -1
  118. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  119. package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
  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 +1 -1
  124. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  125. package/src/sap/ui/core/format/NumberFormat.js +28 -3
  126. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  127. package/src/sap/ui/core/getCompatibilityVersion.js +6 -2
  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/HTMLView.js +1 -1
  136. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  137. package/src/sap/ui/core/mvc/JSView.js +1 -1
  138. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  139. package/src/sap/ui/core/mvc/View.js +12 -7
  140. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  141. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  142. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  143. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  144. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  145. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  146. package/src/sap/ui/core/rules/CoreHelper.support.js +2 -3
  147. package/src/sap/ui/core/rules/Misc.support.js +3 -12
  148. package/src/sap/ui/core/rules/Theming.support.js +5 -9
  149. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  150. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  151. package/src/sap/ui/core/service/Service.js +1 -1
  152. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  153. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  154. package/src/sap/ui/core/support/Plugin.js +1 -1
  155. package/src/sap/ui/core/support/Support.js +1 -20
  156. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  157. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  158. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  159. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  160. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  161. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  163. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  164. package/src/sap/ui/core/themes/base/.theming +3 -1
  165. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  166. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  167. package/src/sap/ui/core/theming/Parameters.js +5 -1
  168. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  169. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  170. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  171. package/src/sap/ui/core/tmpl/Template.js +1 -1
  172. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  173. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  174. package/src/sap/ui/core/util/Export.js +2 -2
  175. package/src/sap/ui/core/util/ExportCell.js +2 -2
  176. package/src/sap/ui/core/util/ExportColumn.js +2 -2
  177. package/src/sap/ui/core/util/ExportRow.js +2 -2
  178. package/src/sap/ui/core/util/ExportType.js +2 -2
  179. package/src/sap/ui/core/util/ExportTypeCSV.js +2 -2
  180. package/src/sap/ui/core/util/File.js +1 -1
  181. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  182. package/src/sap/ui/core/util/MockServer.js +1 -1
  183. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  184. package/src/sap/ui/core/util/XMLPreprocessor.js +8 -13
  185. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  186. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  187. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  188. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  189. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  190. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  191. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  192. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  193. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  194. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  195. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  196. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  197. package/src/sap/ui/debug/ControlTree.js +1 -1
  198. package/src/sap/ui/debug/DebugEnv.js +1 -1
  199. package/src/sap/ui/debug/PropertyList.js +1 -1
  200. package/src/sap/ui/dom/jquery/Aria.js +19 -0
  201. package/src/sap/ui/events/jquery/EventExtension.js +4 -3
  202. package/src/sap/ui/model/ClientModel.js +1 -1
  203. package/src/sap/ui/model/CompositeDataState.js +1 -1
  204. package/src/sap/ui/model/CompositeType.js +4 -4
  205. package/src/sap/ui/model/DataState.js +2 -2
  206. package/src/sap/ui/model/ManagedObjectBindingSupport.js +22 -33
  207. package/src/sap/ui/model/MetaModel.js +1 -1
  208. package/src/sap/ui/model/Model.js +1 -1
  209. package/src/sap/ui/model/SelectionModel.js +1 -1
  210. package/src/sap/ui/model/SimpleType.js +1 -1
  211. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  212. package/src/sap/ui/model/Type.js +1 -1
  213. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  214. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +7 -1
  215. package/src/sap/ui/model/json/JSONModel.js +1 -1
  216. package/src/sap/ui/model/message/MessageModel.js +1 -1
  217. package/src/sap/ui/model/odata/AnnotationHelper.js +11 -8
  218. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  219. package/src/sap/ui/model/odata/ODataExpressionAddons.js +21 -0
  220. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  221. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  222. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  223. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  224. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  225. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  226. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  227. package/src/sap/ui/model/odata/type/Date.js +1 -1
  228. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  229. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  230. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  231. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  232. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  233. package/src/sap/ui/model/odata/type/Double.js +1 -1
  234. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  235. package/src/sap/ui/model/odata/type/Int.js +1 -1
  236. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  237. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  238. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  239. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  240. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  241. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  242. package/src/sap/ui/model/odata/type/Single.js +1 -1
  243. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  244. package/src/sap/ui/model/odata/type/String.js +1 -1
  245. package/src/sap/ui/model/odata/type/Time.js +1 -1
  246. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  247. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  248. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  249. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  250. package/src/sap/ui/model/odata/v2/ODataModel.js +17 -48
  251. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  252. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +2 -0
  253. package/src/sap/ui/model/odata/v4/Context.js +66 -22
  254. package/src/sap/ui/model/odata/v4/ODataBinding.js +10 -11
  255. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +207 -180
  256. package/src/sap/ui/model/odata/v4/ODataListBinding.js +75 -52
  257. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +9 -11
  258. package/src/sap/ui/model/odata/v4/ODataModel.js +34 -35
  259. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -9
  260. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +20 -8
  261. package/src/sap/ui/model/odata/v4/SubmitMode.js +1 -1
  262. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +126 -46
  263. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +56 -11
  264. package/src/sap/ui/model/odata/v4/lib/_Cache.js +21 -34
  265. package/src/sap/ui/model/odata/v4/lib/_Helper.js +16 -27
  266. package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +2 -6
  267. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +1 -1
  268. package/src/sap/ui/model/odata/v4/lib/_Parser.js +6 -5
  269. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +49 -38
  270. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +75 -24
  271. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +3 -4
  272. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +4 -12
  273. package/src/sap/ui/model/odata/v4/lib/_V4MetadataConverter.js +1 -1
  274. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  275. package/src/sap/ui/model/type/Boolean.js +1 -1
  276. package/src/sap/ui/model/type/Currency.js +48 -4
  277. package/src/sap/ui/model/type/Date.js +1 -1
  278. package/src/sap/ui/model/type/DateInterval.js +1 -1
  279. package/src/sap/ui/model/type/DateTime.js +1 -1
  280. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  281. package/src/sap/ui/model/type/FileSize.js +1 -1
  282. package/src/sap/ui/model/type/Float.js +1 -1
  283. package/src/sap/ui/model/type/Integer.js +1 -1
  284. package/src/sap/ui/model/type/String.js +1 -1
  285. package/src/sap/ui/model/type/Time.js +1 -1
  286. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  287. package/src/sap/ui/model/type/Unit.js +5 -4
  288. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  289. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  290. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +4 -1
  291. package/src/sap/ui/test/ModuleTracking.js +46 -0
  292. package/src/sap/ui/test/OpaBuilder.js +19 -19
  293. package/src/sap/ui/test/autowaiter/_jsAnimationWaiter.js +39 -6
  294. package/src/sap/ui/test/generic/TestBase.js +1 -1
  295. package/src/sap/ui/util/Storage.js +1 -1
  296. package/src/sap/ui/util/_enforceNoReturnValue.js +3 -1
  297. package/src/ui5loader-autoconfig.js +22 -16
  298. package/src/ui5loader.js +38 -1
  299. package/test/sap/ui/core/demokit/docuindex.json +17 -6
  300. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/Component.js +1 -1
  301. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/Controller.controller.js +30 -47
  302. package/test/sap/ui/core/demokit/sample/Messaging/BasicMessages/MessagePopover.fragment.xml +13 -0
  303. package/test/sap/ui/core/demokit/sample/Messaging/BasicMessages/View.view.xml +135 -0
  304. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicMessages/manifest.json +2 -2
  305. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/Component.js +1 -1
  306. package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/Controller.controller.js +58 -0
  307. package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/MessagePopover.fragment.xml +13 -0
  308. package/test/sap/ui/core/demokit/sample/Messaging/BasicODataMessages/View.view.xml +57 -0
  309. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/mockserver.js +11 -13
  310. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/manifest.json +2 -2
  311. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/Component.js +1 -1
  312. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/manifest.json +2 -1
  313. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/package.json +1 -1
  314. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +11 -0
  315. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/Component.js +2 -2
  316. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/App.controller.js +12 -0
  317. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/BaseController.js +41 -0
  318. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +54 -0
  319. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/controller/NotFound.controller.js +9 -11
  320. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/fragment/MessagePopover.fragment.xml +13 -0
  321. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/i18n/i18n.properties +9 -0
  322. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/index.html +20 -0
  323. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/index.js +16 -0
  324. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockserver.js +27 -27
  325. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/manifest.json +7 -4
  326. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/view/App.view.xml +1 -1
  327. package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/view/Employee.view.xml +6 -6
  328. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/webapp/view/NotFound.view.xml +13 -0
  329. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Types.controller.js +1 -1
  330. package/test/sap/ui/core/demokit/sample/common/Helper.js +8 -9
  331. package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +1 -1
  332. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/GherkinTestRunner.html +2 -2
  333. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/GherkinTestRunner.html +2 -2
  334. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/GherkinTestRunner.html +2 -2
  335. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/Steps.js +4 -5
  336. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithUIComponent/GherkinTestRunner.html +2 -2
  337. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  338. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  339. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  340. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  341. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +1 -0
  342. package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Main.controller.js +1 -1
  343. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ObjectPage.controller.js +2 -2
  344. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +1 -1
  345. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +1 -1
  346. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/MIT.ListBinding.html +1 -1
  347. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Main.controller.js +5 -7
  348. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Main.view.xml +2 -2
  349. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/MIT.ListBindingTemplate.html +1 -1
  350. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +3 -3
  351. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +6 -5
  352. package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/ObjectPage.controller.js +5 -7
  353. package/test/sap/ui/core/demokit/sample/odata/v4/Products/MIT.Products.html +2 -2
  354. package/test/sap/ui/core/demokit/sample/odata/v4/Products/pages/Main.js +1 -1
  355. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +27 -9
  356. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/MIT.SalesOrderTP100.html +1 -1
  357. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/MIT.SalesOrderTP100.html +1 -1
  358. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.Basics.html +1 -1
  359. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderAdditionalTargets.html +1 -1
  360. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreate.html +1 -1
  361. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreateMultiple.html +1 -1
  362. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderCreateRelative.html +1 -1
  363. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/MIT.SalesOrderMessageHandling.html +3 -3
  364. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +5 -5
  365. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -3
  366. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +7 -9
  367. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/MessageHandling.js +3 -3
  368. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/MIT.RTA.html +2 -2
  369. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/MIT.SalesOrdersTemplate.html +1 -1
  370. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/MIT.Sticky.html +3 -3
  371. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Main.controller.js +3 -3
  372. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/pages/Main.js +1 -1
  373. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  374. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  375. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  376. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  377. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  378. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  379. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  380. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  381. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  382. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  383. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  384. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  385. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  386. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  387. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  388. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  389. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  390. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  391. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  392. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  393. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  394. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  395. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  396. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  397. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  398. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  399. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  400. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  401. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  402. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  403. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  404. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  405. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  406. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  407. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  408. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  409. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  410. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  411. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  412. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  413. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  414. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  415. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -1
  416. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  417. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -1
  418. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  419. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -1
  420. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -1
  421. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  422. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -1
  423. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -1
  424. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  425. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +1 -1
  426. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -1
  427. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  428. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +1 -1
  429. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -1
  430. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  431. package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +1 -1
  432. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +12 -3
  433. package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +33 -38
  434. package/test/sap/ui/core/qunit/CustomThemeFallback_unavoidablySync.qunit.js +119 -0
  435. package/test/sap/ui/core/qunit/EventBus.qunit.js +15 -0
  436. package/test/sap/ui/core/qunit/Lib_terminologies.qunit.js +109 -0
  437. package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.qunit.js +19 -0
  438. package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.view.xml +27 -0
  439. package/test/sap/ui/core/qunit/app/ThemeClassParameters.qunit.js +105 -140
  440. package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +75 -2
  441. package/test/sap/ui/core/qunit/base/Config.qunit.js +6 -2
  442. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +4 -1
  443. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +6 -2
  444. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +6 -3
  445. package/test/sap/ui/core/qunit/base/Config_global.qunit.html +5 -2
  446. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +5 -2
  447. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +5 -2
  448. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +5 -1
  449. package/test/sap/ui/core/qunit/base/Config_url.qunit.html +5 -2
  450. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery-without-jquery-ui-position.qunit.html +2 -1
  451. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery.qunit.html +2 -1
  452. package/test/sap/ui/core/qunit/bootstrap/DebugMode.beforeBootstrap.qunit.js +7 -0
  453. package/test/sap/ui/core/qunit/bootstrap/DebugModeAsync.qunit.html +10 -4
  454. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +7 -0
  455. package/test/sap/ui/core/qunit/component/Component_keepAlive.qunit.js +9 -0
  456. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.html +2 -2
  457. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.html +2 -2
  458. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.html +2 -2
  459. package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +2 -2
  460. package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +2 -2
  461. package/test/sap/ui/core/qunit/gherkin/testHarnessTests.js +1 -1
  462. package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +1 -1
  463. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +15 -15
  464. package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
  465. package/test/sap/ui/core/qunit/loader/config.qunit.js +14 -6
  466. package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +288 -0
  467. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +12 -0
  468. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +7 -2
  469. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +225 -40
  470. package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBinding.qunit.js +78 -7
  471. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +142 -17
  472. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +93 -87
  473. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +116 -86
  474. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +3 -3
  475. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1828 -548
  476. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +1 -1
  477. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +1 -1
  478. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +26 -23
  479. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +9 -0
  480. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +251 -113
  481. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +50 -0
  482. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +3 -3
  483. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +31 -11
  484. package/test/sap/ui/core/qunit/odata/v4/lib/_Parser.qunit.js +8 -2
  485. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +46 -31
  486. package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +144 -45
  487. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +5 -5
  488. package/test/sap/ui/core/qunit/odata/v4/lib/data/v2/QM_INSP_PLAN_SRV/metadata.xml +3 -3
  489. package/test/sap/ui/core/qunit/odata/v4/lib/data/v2/QM_INSP_PLAN_SRV/metadata_only.xml +3 -3
  490. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +82 -0
  491. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/i18n/i18n_fr.properties +1 -0
  492. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/i18n/terminologies/oil/i18n_fr.properties +2 -0
  493. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/library-preload.js +2 -2
  494. package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/themes/sap_hcb/library.css +3 -0
  495. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +19 -1
  496. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +14 -0
  497. package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +37 -20
  498. package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +21 -0
  499. package/test/sap/ui/core/qunit/types/Types.qunit.js +126 -15
  500. package/test/sap/ui/core/qunit/ui5classes/ManagedObject.qunit.js +58 -4
  501. package/test/sap/ui/core/relnotes/changes-1.122.json +0 -22
  502. package/test/sap/ui/core/relnotes/changes-1.123.json +47 -0
  503. package/test/sap/ui/core/samples/databinding/DataBindingDeclarativeSyntax.js +55 -56
  504. package/test/sap/ui/core/samples/databinding/DatabindingDeclarativeSyntax.html +4 -4
  505. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  506. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  507. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  508. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  509. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  510. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  511. package/test/testsuite/js/testfwk.js +47 -64
  512. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/MessagePopover.fragment.xml +0 -13
  513. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/View.view.xml +0 -136
  514. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +0 -74
  515. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/MessagePopover.fragment.xml +0 -13
  516. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/View.view.xml +0 -58
  517. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +0 -11
  518. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/App.controller.js +0 -14
  519. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/BaseController.js +0 -55
  520. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +0 -56
  521. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/fragment/MessagePopover.fragment.xml +0 -13
  522. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/i18n/i18n.properties +0 -5
  523. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +0 -42
  524. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/view/NotFound.view.xml +0 -11
  525. package/test/sap/ui/core/qunit/app/beforeBootstrap.js +0 -19
  526. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +0 -24
  527. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/metadata.xml +0 -0
  528. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/mockdata/Employees.json +0 -0
  529. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/BasicODataMessages/localService/response/ODataErrorResponse.json +0 -0
  530. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/metadata.xml +0 -0
  531. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockdata/Employees.json +0 -0
  532. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/mockdata/Employees_3.json +0 -0
  533. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/response/ODataErrorResponseTemplate.json +0 -0
  534. /package/test/sap/ui/core/demokit/sample/{MessageManager → Messaging}/ODataBackendMessagesComp/webapp/localService/response/SAP-Message-Header.json +0 -0
@@ -57,14 +57,14 @@ sap.ui.define([
57
57
  * @returns {object}
58
58
  * the data
59
59
  */
60
- function createData(iLength, iStart, bDrillDown, iCount, bKeyPredicates) {
60
+ // eslint-disable-next-line default-param-last
61
+ function createData(iLength, iStart = 0, bDrillDown, iCount, bKeyPredicates) {
61
62
  var oData = {value : []},
62
63
  i;
63
64
 
64
65
  if (iCount !== undefined) {
65
66
  oData.value.$count = iCount;
66
67
  }
67
- iStart = iStart || 0;
68
68
  for (i = 0; i < iLength; i += 1) {
69
69
  oData.value[i] = {
70
70
  Name : "Name " + (iStart + i),
@@ -93,7 +93,7 @@ sap.ui.define([
93
93
  // create ODataModel
94
94
  this.oModel = new ODataModel({serviceUrl : "/service/?sap-client=111"});
95
95
  this.oModel.setSizeLimit(3);
96
- // ensure that the requestor does not trigger requests
96
+ // ensure that the requestor does not invoke requests
97
97
  this.mock(this.oModel.oRequestor).expects("request").never();
98
98
  // avoid that the cache requests actual metadata for faked responses
99
99
  this.mock(this.oModel.oRequestor.oModelInterface).expects("fetchMetadata").atLeast(0)
@@ -4042,11 +4042,19 @@ sap.ui.define([
4042
4042
 
4043
4043
  QUnit.test(sTitle, function (assert) {
4044
4044
  var oBinding = this.bindList("/EMPLOYEES", {/*oContext*/}),
4045
- aContexts = [{}, {}, {}],
4045
+ aContexts = [
4046
+ {setSelected : mustBeMocked},
4047
+ {setSelected : mustBeMocked},
4048
+ {setSelected : mustBeMocked}
4049
+ ],
4046
4050
  oContextMock = this.mock(Context),
4047
4051
  i,
4048
4052
  sPath,
4049
- aResults = [{}, {}, {}],
4053
+ aResults = [
4054
+ {setSelected : mustBeMocked},
4055
+ {setSelected : mustBeMocked},
4056
+ {setSelected : mustBeMocked}
4057
+ ],
4050
4058
  iServerIndex,
4051
4059
  iStart = 2;
4052
4060
 
@@ -4070,7 +4078,11 @@ sap.ui.define([
4070
4078
  .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
4071
4079
  sPath, iServerIndex)
4072
4080
  .returns(aContexts[i - iStart]);
4081
+ this.mock(aContexts[i - iStart]).expects("setSelected")
4082
+ .withExactArgs("~selected~");
4073
4083
  }
4084
+ this.mock(oBinding.oHeaderContext).expects("isSelected").exactly(aContexts.length)
4085
+ .withExactArgs().returns("~selected~");
4074
4086
 
4075
4087
  // code under test
4076
4088
  assert.strictEqual(oBinding.createContexts(iStart, aResults), true);
@@ -4097,7 +4109,7 @@ sap.ui.define([
4097
4109
 
4098
4110
  function result(iLength, iCount) {
4099
4111
  // only active created contexts add to $count
4100
- iCount = iCount && iCount + (bCreated ? 1 : 0);
4112
+ iCount &&= iCount + (bCreated ? 1 : 0);
4101
4113
  return createData(iLength, 0, true, iCount);
4102
4114
  }
4103
4115
 
@@ -4226,7 +4238,7 @@ sap.ui.define([
4226
4238
  var oBinding = this.bindList("/EMPLOYEES", {/*oContext*/}),
4227
4239
  oContext1 = Context.create(this.oModel, oBinding, "/EMPLOYEES/1", 1),
4228
4240
  oContext2 = Context.create(this.oModel, oBinding, "/EMPLOYEES/2", 2),
4229
- oContext3 = {},
4241
+ oContext3 = {setSelected : mustBeMocked},
4230
4242
  oContextMock = this.mock(Context);
4231
4243
 
4232
4244
  oBinding.mPreviousContextsByPath = {
@@ -4240,6 +4252,9 @@ sap.ui.define([
4240
4252
  .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
4241
4253
  "/EMPLOYEES/3", 3)
4242
4254
  .returns(oContext3);
4255
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
4256
+ .withExactArgs().returns("~selected~");
4257
+ this.mock(oContext3).expects("setSelected").withExactArgs("~selected~");
4243
4258
  this.mock(this.oModel).expects("addPrerenderingTask")
4244
4259
  .withExactArgs(sinon.match.func).callsArg(0);
4245
4260
  this.mock(oBinding).expects("destroyPreviousContexts").withExactArgs(["/EMPLOYEES/0"]);
@@ -4329,7 +4344,7 @@ sap.ui.define([
4329
4344
  var oBinding = this.bindList("/EMPLOYEES"),
4330
4345
  oCreatedContext = Context.create(this.oModel, oBinding, "/EMPLOYEES('1')", -1,
4331
4346
  SyncPromise.resolve()),
4332
- oNewContext = {};
4347
+ oNewContext = {setSelected : mustBeMocked};
4333
4348
 
4334
4349
  oBinding.mPreviousContextsByPath = {
4335
4350
  "/EMPLOYEES('1')" : oCreatedContext
@@ -4339,6 +4354,9 @@ sap.ui.define([
4339
4354
  .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
4340
4355
  "/EMPLOYEES('1')", 0)
4341
4356
  .returns(oNewContext);
4357
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
4358
+ .withExactArgs().returns("~selected~");
4359
+ this.mock(oNewContext).expects("setSelected").withExactArgs("~selected~");
4342
4360
  this.mock(this.oModel).expects("addPrerenderingTask")
4343
4361
  .withExactArgs(sinon.match.func).callsArg(0);
4344
4362
  this.mock(oCreatedContext).expects("destroy").withExactArgs();
@@ -4735,25 +4753,6 @@ sap.ui.define([
4735
4753
  });
4736
4754
  });
4737
4755
 
4738
- //*********************************************************************************************
4739
- QUnit.test("_delete: recursive hierarchy, restrictions not met", function (assert) {
4740
- const oBinding = this.bindList("/EMPLOYEES");
4741
-
4742
- // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
4743
- // too far :-(
4744
- oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
4745
-
4746
- const oContext = {
4747
- // noIndex
4748
- toString : function () { return "~toString~"; } // cannot be mocked?
4749
- };
4750
-
4751
- assert.throws(function () {
4752
- // code under test
4753
- oBinding.delete("~oGroupLock~", "~sEditUrl~", oContext);
4754
- }, new Error("Unsupported kept-alive context: ~toString~"));
4755
- });
4756
-
4757
4756
  //*********************************************************************************************
4758
4757
  QUnit.test("create: callbacks and eventing", function (assert) {
4759
4758
  var oBinding = this.bindList("/EMPLOYEES"),
@@ -5361,12 +5360,14 @@ sap.ui.define([
5361
5360
  created : function () {},
5362
5361
  fetchValue : function () {},
5363
5362
  getPath : function () {},
5363
+ setSelected : mustBeMocked,
5364
5364
  updateAfterCreate : function () {}
5365
5365
  },
5366
5366
  oNewContext1 = {
5367
5367
  created : function () {},
5368
5368
  fetchValue : function () {},
5369
5369
  getPath : function () {},
5370
+ setSelected : mustBeMocked,
5370
5371
  updateAfterCreate : function () {}
5371
5372
  },
5372
5373
  bNotAllowed = aAtEnd[0] && !aAtEnd[1],
@@ -5399,6 +5400,9 @@ sap.ui.define([
5399
5400
  oNewContext0.oCreatedPromise = Promise.resolve(arguments[4]);
5400
5401
  return oNewContext0;
5401
5402
  });
5403
+ this.mock(oBinding.oHeaderContext).expects("isSelected").exactly(bNotAllowed ? 1 : 2)
5404
+ .withExactArgs().returns("~selected~");
5405
+ this.mock(oNewContext0).expects("setSelected").withExactArgs("~selected~");
5402
5406
  this.mock(oNewContext0).expects("created").exactly(bTransient ? 1 : 0)
5403
5407
  .withExactArgs()
5404
5408
  .callsFake(function () {
@@ -5451,6 +5455,7 @@ sap.ui.define([
5451
5455
  oNewContext1.oCreatedPromise = Promise.resolve(arguments[4]);
5452
5456
  return oNewContext1;
5453
5457
  });
5458
+ this.mock(oNewContext1).expects("setSelected").withExactArgs("~selected~");
5454
5459
  this.mock(oNewContext1).expects("created").exactly(bTransient ? 1 : 0)
5455
5460
  .withExactArgs()
5456
5461
  .callsFake(function () {
@@ -5518,6 +5523,7 @@ sap.ui.define([
5518
5523
  created : function () {},
5519
5524
  fetchValue : function () {},
5520
5525
  getPath : function () { return ""; },
5526
+ setSelected : mustBeMocked,
5521
5527
  refreshDependentBindings : function () {}
5522
5528
  };
5523
5529
 
@@ -5535,6 +5541,9 @@ sap.ui.define([
5535
5541
  sinon.match.same(oBinding), sinon.match.string, -oBinding.iCreatedContexts - 1,
5536
5542
  sinon.match.instanceOf(SyncPromise), undefined)
5537
5543
  .returns(oNewContext);
5544
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
5545
+ .withExactArgs().returns("~selected~");
5546
+ this.mock(oNewContext).expects("setSelected").withExactArgs("~selected~");
5538
5547
  this.mock(oNewContext).expects("fetchValue").withExactArgs().resolves(undefined);
5539
5548
  this.mock(_Helper).expects("setPrivateAnnotation").never();
5540
5549
 
@@ -5704,12 +5713,15 @@ sap.ui.define([
5704
5713
  .and(sinon.match({"@$ui5.node.parent" : "canonical/path"})),
5705
5714
  false, sinon.match.func, sinon.match.func)
5706
5715
  .returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
5707
- const oContext = {fetchValue : mustBeMocked};
5716
+ const oContext = {fetchValue : mustBeMocked, setSelected : mustBeMocked};
5708
5717
  this.mock(Context).expects("create")
5709
5718
  .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
5710
5719
  "~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/3,
5711
5720
  sinon.match.instanceOf(SyncPromise), undefined)
5712
5721
  .returns(oContext);
5722
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
5723
+ .withExactArgs().returns("~selected~");
5724
+ this.mock(oContext).expects("setSelected").withExactArgs("~selected~");
5713
5725
  this.mock(oContext).expects("fetchValue").withExactArgs()
5714
5726
  .returns(SyncPromise.resolve()); //TODO
5715
5727
  this.mock(oBinding).expects("_fireChange")
@@ -5758,12 +5770,15 @@ sap.ui.define([
5758
5770
  sinon.match(rTransientPredicate), "~oEntityData~",
5759
5771
  false, sinon.match.func, sinon.match.func)
5760
5772
  .returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
5761
- const oContext = {fetchValue : mustBeMocked};
5773
+ const oContext = {fetchValue : mustBeMocked, setSelected : mustBeMocked};
5762
5774
  this.mock(Context).expects("create")
5763
5775
  .withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
5764
5776
  "~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/0,
5765
5777
  sinon.match.instanceOf(SyncPromise), undefined)
5766
5778
  .returns(oContext);
5779
+ this.mock(oBinding.oHeaderContext).expects("isSelected")
5780
+ .withExactArgs().returns("~selected~");
5781
+ this.mock(oContext).expects("setSelected").withExactArgs("~selected~");
5767
5782
  this.mock(oContext).expects("fetchValue").withExactArgs()
5768
5783
  .returns(SyncPromise.resolve()); //TODO
5769
5784
  this.mock(oBinding).expects("_fireChange")
@@ -10223,21 +10238,9 @@ sap.ui.define([
10223
10238
  //*********************************************************************************************
10224
10239
  [false, true].forEach(function (bFireChange) {
10225
10240
  QUnit.test("getAllCurrentContexts: bFireChange = " + bFireChange, function (assert) {
10226
- var aAllCurrentContexts,
10227
- oBinding = this.bindList("/EMPLOYEES"),
10228
- oCache = {
10229
- getAllElements : function () {}
10230
- },
10231
- oKeptContext0 = {isEffectivelyKeptAlive : function () {}},
10232
- oKeptContext1 = {isEffectivelyKeptAlive : function () {}},
10233
- oNotKeptContext = {isEffectivelyKeptAlive : function () {}}; // BCP 2270081950:
10234
- // there is a point in time when contexts with keepAlive=false are present in
10235
- // mPreviousContextsByPath which need be filtered out.
10236
-
10237
- oBinding.mPreviousContextsByPath = {
10238
- "~sPath1~" : oKeptContext0,
10239
- "~sPath2~" : oKeptContext1,
10240
- "~sPath3~" : oNotKeptContext
10241
+ const oBinding = this.bindList("/EMPLOYEES");
10242
+ const oCache = {
10243
+ getAllElements : function () {}
10241
10244
  };
10242
10245
 
10243
10246
  this.mock(oBinding).expects("withCache").withExactArgs(sinon.match.func, "", true)
@@ -10245,46 +10248,61 @@ sap.ui.define([
10245
10248
  this.mock(oCache).expects("getAllElements").withExactArgs("path/to/cache")
10246
10249
  .returns("~aElements~");
10247
10250
  this.mock(oBinding).expects("createContexts").withExactArgs(0, "~aElements~")
10248
- .callsFake(function () {
10249
- oBinding.aContexts = ["~oContext0~", undefined, "~oContext2~"];
10250
- return bFireChange;
10251
- });
10251
+ .returns(bFireChange);
10252
10252
  this.mock(oBinding).expects("_fireChange").withExactArgs({reason : ChangeReason.Change})
10253
10253
  .exactly(bFireChange ? 1 : 0);
10254
10254
 
10255
- this.mock(oKeptContext0).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
10256
- this.mock(oKeptContext1).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
10257
- this.mock(oNotKeptContext).expects("isEffectivelyKeptAlive").withExactArgs().returns(false);
10255
+ this.mock(oBinding).expects("_getAllExistingContexts").withExactArgs()
10256
+ .returns("~aContexts~");
10258
10257
 
10259
10258
  // code under test
10260
- aAllCurrentContexts = oBinding.getAllCurrentContexts();
10261
-
10262
- assert.deepEqual(aAllCurrentContexts,
10263
- ["~oContext0~", "~oContext2~", oKeptContext0, oKeptContext1]);
10264
- assert.strictEqual(aAllCurrentContexts[2], oKeptContext0);
10265
- assert.strictEqual(aAllCurrentContexts[3], oKeptContext1);
10259
+ assert.deepEqual(oBinding.getAllCurrentContexts(), "~aContexts~");
10266
10260
  });
10267
10261
  });
10268
10262
 
10269
10263
  //*********************************************************************************************
10270
10264
  QUnit.test("getAllCurrentContexts: currently no cache", function (assert) {
10271
10265
  const oBinding = this.bindList("relativePath");
10272
- oBinding.aContexts = ["~oTransientContext~"];
10273
-
10274
- const oKeptContext = {isEffectivelyKeptAlive : function () {}};
10275
- oBinding.mPreviousContextsByPath = {"~sPath~" : oKeptContext};
10276
10266
 
10277
10267
  this.mock(oBinding).expects("withCache").withExactArgs(sinon.match.func, "", true);
10278
10268
  this.mock(oBinding).expects("createContexts").never();
10279
10269
  this.mock(oBinding).expects("_fireChange").never();
10280
- this.mock(oKeptContext).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
10270
+ this.mock(oBinding).expects("_getAllExistingContexts").withExactArgs()
10271
+ .returns("~aResults~");
10281
10272
 
10282
10273
  // code under test
10283
10274
  const aContexts = oBinding.getAllCurrentContexts();
10284
10275
 
10285
- assert.strictEqual(aContexts.length, 2);
10276
+ assert.strictEqual(aContexts, "~aResults~");
10277
+ });
10278
+
10279
+ //*********************************************************************************************
10280
+ QUnit.test("_getAllExistingContexts", function (assert) {
10281
+ const oBinding = this.bindList("relativePath");
10282
+ oBinding.aContexts = [/*empty*/, undefined, "~oTransientContext~"];
10283
+ const oKeptContext0 = {isEffectivelyKeptAlive : function () {}};
10284
+ const oKeptContext1 = {isEffectivelyKeptAlive : function () {}};
10285
+ const oNotKeptContext = {isEffectivelyKeptAlive : function () {}}; // BCP 2270081950:
10286
+ // there is a point in time when contexts with keepAlive=false are present in
10287
+ // mPreviousContextsByPath which need be filtered out.
10288
+
10289
+ oBinding.mPreviousContextsByPath = {
10290
+ "~sPath1~" : oKeptContext0,
10291
+ "~sPath2~" : oKeptContext1,
10292
+ "~sPath3~" : oNotKeptContext
10293
+ };
10294
+
10295
+ this.mock(oKeptContext0).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
10296
+ this.mock(oKeptContext1).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
10297
+ this.mock(oNotKeptContext).expects("isEffectivelyKeptAlive").withExactArgs().returns(false);
10298
+
10299
+ // code under test
10300
+ const aContexts = oBinding._getAllExistingContexts();
10301
+
10302
+ assert.strictEqual(aContexts.length, 3);
10286
10303
  assert.strictEqual(aContexts[0], "~oTransientContext~");
10287
- assert.strictEqual(aContexts[1], oKeptContext);
10304
+ assert.strictEqual(aContexts[1], oKeptContext0);
10305
+ assert.strictEqual(aContexts[2], oKeptContext1);
10288
10306
  });
10289
10307
 
10290
10308
  //*********************************************************************************************
@@ -10860,7 +10878,7 @@ sap.ui.define([
10860
10878
 
10861
10879
  //*********************************************************************************************
10862
10880
  [false, true].forEach((bCreated) => {
10863
- [-1, +1, 0].forEach((iDirection) => { // child is before or after parent (or right in place)
10881
+ [-1, +1, 0].forEach((iDirection) => { // child starts before or after target (or right in place)
10864
10882
  [false, true].forEach((bIsExpanded) => {
10865
10883
  [1, 4].forEach((iCount) => {
10866
10884
  [1, Number.MAX_SAFE_INTEGER, 1E16].forEach((iExpandTo) => {
@@ -10868,24 +10886,27 @@ sap.ui.define([
10868
10886
  const sTitle = `move: created=${bCreated}, direction=${iDirection}, expanded=${bIsExpanded},
10869
10887
  child nodes added=${iCount}, expandTo=${iExpandTo}, make root=${bMakeRoot}`;
10870
10888
 
10871
- if (bMakeRoot && (iDirection < 0 || iCount > 1)) {
10889
+ if (bMakeRoot && (iDirection < 0 && iExpandTo === 1 || iCount > 1)) {
10872
10890
  return;
10873
10891
  }
10874
10892
 
10875
10893
  QUnit.test(sTitle, function (assert) {
10876
10894
  const iParentIndex = bMakeRoot ? -1 : 42;
10877
- let iChildIndex = iParentIndex + 1;
10895
+ let iNewIndex = iExpandTo > 1 ? 42 : iParentIndex + 1;
10896
+ let iOldIndex = iNewIndex;
10878
10897
  if (iDirection < 0) {
10879
- iChildIndex = 23;
10898
+ iOldIndex = 23;
10880
10899
  } else if (iDirection > 0) {
10881
- iChildIndex = 64;
10900
+ iOldIndex = 64;
10882
10901
  }
10883
10902
  const oChildContext = {
10884
- iIndex : iChildIndex,
10903
+ iIndex : iOldIndex,
10885
10904
  created : mustBeMocked,
10886
10905
  getCanonicalPath : mustBeMocked,
10906
+ getModelIndex : mustBeMocked,
10887
10907
  isExpanded : mustBeMocked,
10888
- setCreatedPersisted : mustBeMocked
10908
+ setCreatedPersisted : mustBeMocked,
10909
+ setPersisted : mustBeMocked
10889
10910
  };
10890
10911
  this.mock(oChildContext).expects("isExpanded").withExactArgs().returns(bIsExpanded);
10891
10912
  this.mock(oChildContext).expects("getCanonicalPath").withExactArgs().returns("/~child~");
@@ -10916,31 +10937,35 @@ child nodes added=${iCount}, expandTo=${iExpandTo}, make root=${bMakeRoot}`;
10916
10937
  .returns(new SyncPromise((resolve) => {
10917
10938
  setTimeout(() => {
10918
10939
  if (oParentContext) {
10919
- this.mock(oParentContext).expects("getModelIndex")
10920
- .exactly(iCount > 1 ? 1 : 0).withExactArgs().returns("~iModelIndex~");
10940
+ this.mock(oParentContext).expects("getModelIndex").atLeast(0)
10941
+ .withExactArgs().returns(iParentIndex);
10921
10942
  }
10922
10943
  this.mock(oBinding).expects("insertGap").exactly(iCount > 1 ? 1 : 0)
10923
- .withExactArgs("~iModelIndex~", iCount - 1);
10944
+ .withExactArgs(iParentIndex, iCount - 1);
10924
10945
  for (let i = 0; i < 100; i += 1) {
10925
10946
  if (i % 5) {
10926
10947
  oBinding.aContexts[i] = {iIndex : i};
10927
10948
  } // else: leave some gaps ;-)
10928
10949
  }
10929
- oBinding.aContexts[iChildIndex] = oChildContext;
10930
- if (oParentContext) {
10950
+ this.mock(oChildContext).expects("getModelIndex").withExactArgs()
10951
+ .returns(iOldIndex);
10952
+ oBinding.aContexts[iOldIndex] = oChildContext;
10953
+ if (oParentContext && iExpandTo === 1) {
10931
10954
  oBinding.aContexts[iParentIndex] = oParentContext;
10932
10955
  }
10933
10956
  this.mock(oChildContext).expects("created").withExactArgs()
10934
10957
  .returns(bCreated ? {/*Promise*/} : undefined);
10935
10958
  this.mock(oChildContext).expects("setCreatedPersisted")
10936
- .exactly(bCreated || iExpandTo > 1 ? 0 : 1).withExactArgs();
10959
+ .exactly(!bCreated && iExpandTo === 1 ? 1 : 0).withExactArgs();
10960
+ this.mock(oChildContext).expects("setPersisted")
10961
+ .exactly(bCreated && iExpandTo > 1 ? 1 : 0).withExactArgs();
10937
10962
  this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
10938
10963
  .withExactArgs(sinon.match.same(oChildContext))
10939
10964
  .returns(SyncPromise.resolve());
10940
10965
  this.mock(oBinding).expects("_fireChange").exactly(bIsExpanded ? 0 : 1)
10941
10966
  .withExactArgs({reason : ChangeReason.Change});
10942
10967
 
10943
- resolve(iCount);
10968
+ resolve(iExpandTo > 1 ? [iCount, iNewIndex] : [iCount]);
10944
10969
  }, 0);
10945
10970
  }));
10946
10971
 
@@ -10950,12 +10975,15 @@ child nodes added=${iCount}, expandTo=${iExpandTo}, make root=${bMakeRoot}`;
10950
10975
  assert.strictEqual(oSyncPromise.isPending(), true);
10951
10976
 
10952
10977
  return oSyncPromise.then(function (vResult) {
10953
- const iNewParentIndex = iDirection < 0 ? iParentIndex - 1 : iParentIndex;
10954
10978
  assert.strictEqual(vResult, undefined, "without a defined result");
10955
- if (oParentContext) {
10956
- assert.strictEqual(oBinding.aContexts[iNewParentIndex], oParentContext);
10979
+ if (iExpandTo === 1) {
10980
+ const iNewParentIndex = iDirection < 0 ? iParentIndex - 1 : iParentIndex;
10981
+ if (oParentContext) {
10982
+ assert.strictEqual(oBinding.aContexts[iNewParentIndex], oParentContext);
10983
+ }
10984
+ iNewIndex = iNewParentIndex + 1;
10957
10985
  }
10958
- assert.strictEqual(oBinding.aContexts[iNewParentIndex + 1], oChildContext);
10986
+ assert.strictEqual(oBinding.aContexts[iNewIndex], oChildContext);
10959
10987
  for (let i = 0; i < 100; i += 1) {
10960
10988
  if (oBinding.aContexts[i]) {
10961
10989
  assert.strictEqual(oBinding.aContexts[i].iIndex, i, `iIndex @ ${i}`);
@@ -11030,13 +11058,15 @@ child nodes added=${iCount}, expandTo=${iExpandTo}, make root=${bMakeRoot}`;
11030
11058
  iIndex : 43,
11031
11059
  created : mustBeMocked,
11032
11060
  getCanonicalPath : mustBeMocked,
11061
+ getModelIndex : mustBeMocked,
11033
11062
  isExpanded : mustBeMocked
11034
11063
  };
11035
11064
  this.mock(oChildContext).expects("isExpanded").withExactArgs().returns(true);
11036
11065
  this.mock(oChildContext).expects("getCanonicalPath").withExactArgs().returns("/~child~");
11037
11066
  const oParentContext = {
11038
11067
  iIndex : 42,
11039
- getCanonicalPath : mustBeMocked
11068
+ getCanonicalPath : mustBeMocked,
11069
+ getModelIndex : mustBeMocked
11040
11070
  };
11041
11071
  this.mock(oParentContext).expects("getCanonicalPath").withExactArgs().returns("/~parent~");
11042
11072
  const oBinding = this.bindList("/EMPLOYEES");
@@ -11053,10 +11083,10 @@ child nodes added=${iCount}, expandTo=${iExpandTo}, make root=${bMakeRoot}`;
11053
11083
  };
11054
11084
  oBinding.oCache = oCache;
11055
11085
  this.mock(oCache).expects("move").withExactArgs("~oGroupLock~", "~child~", "~parent~")
11056
- .returns(SyncPromise.resolve(1));
11086
+ .returns(SyncPromise.resolve([1]));
11057
11087
  this.mock(oBinding).expects("insertGap").never();
11058
- oBinding.aContexts[43] = oChildContext;
11059
- oBinding.aContexts[42] = oParentContext;
11088
+ this.mock(oChildContext).expects("getModelIndex").withExactArgs().returns(43);
11089
+ this.mock(oParentContext).expects("getModelIndex").withExactArgs().returns(42);
11060
11090
  this.mock(oChildContext).expects("created").withExactArgs().returns(true);
11061
11091
  this.mock(oBinding).expects("expand")
11062
11092
  .withExactArgs(sinon.match.same(oChildContext))
@@ -2676,7 +2676,7 @@ sap.ui.define([
2676
2676
  assert.strictEqual(that.oMetaModel.getObject("/tea_busi_supplier.v0001."),
2677
2677
  mReferencedScope["tea_busi_supplier.v0001."]);
2678
2678
 
2679
- // now check that "not.found." does not trigger another read(),
2679
+ // now check that "not.found." does not invoke another read(),
2680
2680
  // does finish synchronously and logs a warning
2681
2681
  that.oLogMock.expects("warning").exactly(bWarn ? 1 : 0)
2682
2682
  .withExactArgs("/a/default/iwbep/tea_busi_product/0001/$metadata"
@@ -2799,7 +2799,7 @@ sap.ui.define([
2799
2799
  .then(function (vResult) {
2800
2800
  assert.strictEqual(vResult, mScopeA["A."]);
2801
2801
 
2802
- // Note: must not trigger read() again!
2802
+ // Note: must not invoke read() again!
2803
2803
  return that.oMetaModel.fetchObject("/B.B.")
2804
2804
  .then(function (vResult) {
2805
2805
  assert.strictEqual(vResult, mScopeB["B.B."]);
@@ -2920,7 +2920,7 @@ sap.ui.define([
2920
2920
  delete oProperty.__constraints;
2921
2921
  if (!bNullable) {
2922
2922
  oProperty.$Nullable = false;
2923
- oConstraints = oConstraints || {};
2923
+ oConstraints ??= {};
2924
2924
  oConstraints.nullable = false;
2925
2925
  }
2926
2926