@openui5/sap.ui.core 1.121.1 → 1.122.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 (604) hide show
  1. package/.eslintrc.json +22 -5
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  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.sjax.js +6 -5
  9. package/src/jquery.sap.storage.js +3 -3
  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/Formatting.js +1 -1
  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/Deferred.js +4 -6
  17. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  18. package/src/sap/base/util/restricted/_castArray.js +1 -1
  19. package/src/sap/base/util/restricted/_compact.js +1 -1
  20. package/src/sap/base/util/restricted/_curry.js +1 -1
  21. package/src/sap/base/util/restricted/_debounce.js +1 -1
  22. package/src/sap/base/util/restricted/_difference.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_flatten.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_intersection.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isNil.js +1 -1
  37. package/src/sap/base/util/restricted/_max.js +1 -1
  38. package/src/sap/base/util/restricted/_merge.js +1 -1
  39. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  40. package/src/sap/base/util/restricted/_min.js +1 -1
  41. package/src/sap/base/util/restricted/_omit.js +1 -1
  42. package/src/sap/base/util/restricted/_pick.js +1 -1
  43. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  44. package/src/sap/base/util/restricted/_throttle.js +1 -1
  45. package/src/sap/base/util/restricted/_toArray.js +1 -1
  46. package/src/sap/base/util/restricted/_union.js +1 -1
  47. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  48. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  49. package/src/sap/base/util/restricted/_uniq.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  52. package/src/sap/base/util/restricted/_without.js +1 -1
  53. package/src/sap/base/util/restricted/_xor.js +1 -1
  54. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  55. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  58. package/src/sap/ui/Device.js +3 -3
  59. package/src/sap/ui/Global.js +4 -4
  60. package/src/sap/ui/base/Event.js +1 -1
  61. package/src/sap/ui/base/EventProvider.js +11 -5
  62. package/src/sap/ui/base/Exception.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +22 -3
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  66. package/src/sap/ui/base/Metadata.js +1 -1
  67. package/src/sap/ui/base/Object.js +1 -1
  68. package/src/sap/ui/base/ObjectPool.js +1 -1
  69. package/src/sap/ui/core/.library +1 -1
  70. package/src/sap/ui/core/BusyIndicator.js +1 -1
  71. package/src/sap/ui/core/Component.js +33 -5
  72. package/src/sap/ui/core/ComponentContainer.js +1 -1
  73. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +1 -1
  76. package/src/sap/ui/core/Control.js +19 -3
  77. package/src/sap/ui/core/Core.js +1 -1
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  80. package/src/sap/ui/core/Element.js +28 -3
  81. package/src/sap/ui/core/ElementMetadata.js +1 -1
  82. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  83. package/src/sap/ui/core/EventBus.js +1 -1
  84. package/src/sap/ui/core/Fragment.js +1 -1
  85. package/src/sap/ui/core/HTML.js +1 -1
  86. package/src/sap/ui/core/History.js +1 -1
  87. package/src/sap/ui/core/Icon.js +1 -1
  88. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  89. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  90. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  91. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  92. package/src/sap/ui/core/InvisibleText.js +1 -1
  93. package/src/sap/ui/core/Item.js +1 -1
  94. package/src/sap/ui/core/LabelEnablement.js +1 -1
  95. package/src/sap/ui/core/LayoutData.js +1 -1
  96. package/src/sap/ui/core/ListItem.js +1 -1
  97. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  98. package/src/sap/ui/core/Locale.js +1 -1
  99. package/src/sap/ui/core/LocaleData.js +14 -6
  100. package/src/sap/ui/core/Manifest.js +1 -1
  101. package/src/sap/ui/core/Message.js +1 -1
  102. package/src/sap/ui/core/RenderManager.js +1 -1
  103. package/src/sap/ui/core/Renderer.js +1 -1
  104. package/src/sap/ui/core/ResizeHandler.js +1 -1
  105. package/src/sap/ui/core/ScrollBar.js +1 -1
  106. package/src/sap/ui/core/SeparatorItem.js +1 -1
  107. package/src/sap/ui/core/Title.js +1 -1
  108. package/src/sap/ui/core/TooltipBase.js +1 -1
  109. package/src/sap/ui/core/UIArea.js +1 -1
  110. package/src/sap/ui/core/UIComponent.js +1 -1
  111. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  112. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  113. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  114. package/src/sap/ui/core/XMLComposite.js +1 -1
  115. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  116. package/src/sap/ui/core/date/UI5Date.js +1 -1
  117. package/src/sap/ui/core/date/UniversalDateUtils.js +52 -52
  118. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  119. package/src/sap/ui/core/delegate/ScrollEnablement.js +4 -4
  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/DateFormat.js +4 -4
  125. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  126. package/src/sap/ui/core/format/NumberFormat.js +32 -13
  127. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  128. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  129. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  130. package/src/sap/ui/core/library.js +3 -3
  131. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  132. package/src/sap/ui/core/message/Message.js +1 -1
  133. package/src/sap/ui/core/message/MessageManager.js +1 -1
  134. package/src/sap/ui/core/message/MessageParser.js +1 -1
  135. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  136. package/src/sap/ui/core/messagebundle_ar.properties +1 -1
  137. package/src/sap/ui/core/messagebundle_mk.properties +1 -1
  138. package/src/sap/ui/core/mvc/Controller.js +42 -7
  139. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  140. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  141. package/src/sap/ui/core/mvc/JSView.js +1 -1
  142. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  143. package/src/sap/ui/core/mvc/View.js +1 -1
  144. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  145. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  146. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  147. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  148. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  149. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  150. package/src/sap/ui/core/routing/Router.js +1 -1
  151. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  152. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  153. package/src/sap/ui/core/service/Service.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  155. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  156. package/src/sap/ui/core/support/Plugin.js +1 -1
  157. package/src/sap/ui/core/support/Support.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/themes/base/base.less +239 -8
  167. package/src/sap/ui/core/themes/base/global.less +20 -0
  168. package/src/sap/ui/core/themes/sap_hcb/global.less +20 -0
  169. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  170. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  171. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  172. package/src/sap/ui/core/tmpl/Template.js +1 -1
  173. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  174. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  175. package/src/sap/ui/core/util/Export.js +1 -1
  176. package/src/sap/ui/core/util/ExportCell.js +1 -1
  177. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  178. package/src/sap/ui/core/util/ExportRow.js +1 -1
  179. package/src/sap/ui/core/util/ExportType.js +1 -1
  180. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  181. package/src/sap/ui/core/util/File.js +1 -1
  182. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  183. package/src/sap/ui/core/util/MockServer.js +1 -1
  184. package/src/sap/ui/core/util/PasteHelper.js +2 -2
  185. package/src/sap/ui/core/util/ShortcutHelper.js +6 -0
  186. package/src/sap/ui/core/util/XMLPreprocessor.js +54 -30
  187. package/src/sap/ui/core/util/_LocalizationHelper.js +2 -1
  188. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +0 -29
  189. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +0 -26
  190. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +0 -56
  191. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  192. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  193. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  194. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  195. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  196. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  197. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  198. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  199. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  200. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  201. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  202. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  203. package/src/sap/ui/debug/ControlTree.js +1 -1
  204. package/src/sap/ui/debug/DebugEnv.js +1 -1
  205. package/src/sap/ui/debug/PropertyList.js +1 -1
  206. package/src/sap/ui/model/ClientListBinding.js +13 -6
  207. package/src/sap/ui/model/ClientModel.js +1 -1
  208. package/src/sap/ui/model/ClientTreeBinding.js +16 -7
  209. package/src/sap/ui/model/CompositeBinding.js +11 -4
  210. package/src/sap/ui/model/CompositeDataState.js +1 -1
  211. package/src/sap/ui/model/CompositeType.js +17 -3
  212. package/src/sap/ui/model/DataState.js +1 -1
  213. package/src/sap/ui/model/ListBinding.js +14 -11
  214. package/src/sap/ui/model/MetaModel.js +1 -1
  215. package/src/sap/ui/model/Model.js +11 -9
  216. package/src/sap/ui/model/PropertyBinding.js +21 -4
  217. package/src/sap/ui/model/SelectionModel.js +1 -1
  218. package/src/sap/ui/model/SimpleType.js +1 -1
  219. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  220. package/src/sap/ui/model/TreeBinding.js +14 -7
  221. package/src/sap/ui/model/Type.js +1 -1
  222. package/src/sap/ui/model/analytics/AnalyticalBinding.js +12 -8
  223. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  224. package/src/sap/ui/model/analytics/odata4analytics.js +66 -52
  225. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +1 -4
  226. package/src/sap/ui/model/json/JSONListBinding.js +5 -2
  227. package/src/sap/ui/model/json/JSONModel.js +7 -5
  228. package/src/sap/ui/model/json/JSONTreeBinding.js +5 -2
  229. package/src/sap/ui/model/message/MessageListBinding.js +5 -2
  230. package/src/sap/ui/model/message/MessageModel.js +1 -1
  231. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  232. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  233. package/src/sap/ui/model/odata/ODataMetaModel.js +8 -9
  234. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  235. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  236. package/src/sap/ui/model/odata/ODataUtils.js +1 -1
  237. package/src/sap/ui/model/odata/type/Boolean.js +2 -4
  238. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  239. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  240. package/src/sap/ui/model/odata/type/Date.js +1 -1
  241. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  242. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  243. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  244. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  245. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  246. package/src/sap/ui/model/odata/type/Double.js +1 -1
  247. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  248. package/src/sap/ui/model/odata/type/Int.js +1 -1
  249. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  250. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  251. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  252. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  253. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  254. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  255. package/src/sap/ui/model/odata/type/Single.js +1 -1
  256. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  257. package/src/sap/ui/model/odata/type/String.js +1 -1
  258. package/src/sap/ui/model/odata/type/Time.js +1 -1
  259. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  260. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  261. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  262. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  263. package/src/sap/ui/model/odata/v2/ODataListBinding.js +14 -8
  264. package/src/sap/ui/model/odata/v2/ODataModel.js +25 -28
  265. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +15 -12
  266. package/src/sap/ui/model/odata/v4/Context.js +111 -30
  267. package/src/sap/ui/model/odata/v4/ODataBinding.js +9 -5
  268. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  269. package/src/sap/ui/model/odata/v4/ODataListBinding.js +14 -9
  270. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +4 -3
  271. package/src/sap/ui/model/odata/v4/ODataModel.js +27 -2
  272. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +19 -7
  273. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +240 -41
  274. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +88 -0
  275. package/src/sap/ui/model/odata/v4/lib/_Cache.js +13 -4
  276. package/src/sap/ui/model/odata/v4/lib/_Helper.js +15 -0
  277. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +77 -15
  278. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  279. package/src/sap/ui/model/type/Boolean.js +1 -1
  280. package/src/sap/ui/model/type/Currency.js +1 -1
  281. package/src/sap/ui/model/type/Date.js +1 -1
  282. package/src/sap/ui/model/type/DateInterval.js +1 -1
  283. package/src/sap/ui/model/type/DateTime.js +1 -1
  284. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  285. package/src/sap/ui/model/type/FileSize.js +1 -1
  286. package/src/sap/ui/model/type/Float.js +1 -1
  287. package/src/sap/ui/model/type/Integer.js +1 -1
  288. package/src/sap/ui/model/type/String.js +1 -1
  289. package/src/sap/ui/model/type/Time.js +1 -1
  290. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  291. package/src/sap/ui/model/type/Unit.js +38 -1
  292. package/src/sap/ui/model/xml/XMLListBinding.js +5 -2
  293. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  294. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -1
  295. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  296. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  297. package/src/sap/ui/test/RecordReplay.js +1 -0
  298. package/src/sap/ui/test/autowaiter/_autoWaiterAsync.js +8 -1
  299. package/src/sap/ui/test/generic/TestBase.js +1 -1
  300. package/src/sap/ui/test/gherkin/opa5TestHarness.js +0 -6
  301. package/src/sap/ui/test/gherkin/qUnitTestHarness.js +0 -6
  302. package/src/sap/ui/test/qunitPause.js +5 -1
  303. package/src/sap/ui/util/Storage.js +1 -1
  304. package/src/sap/ui/util/_enforceNoReturnValue.js +26 -0
  305. package/src/ui5loader.js +25 -2
  306. package/test/sap/ui/core/HyphenationPlayground.html +6 -292
  307. package/test/sap/ui/core/HyphenationPlayground.js +313 -0
  308. package/test/sap/ui/core/demokit/docuindex.json +1 -1
  309. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
  310. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/OpaAutoWaitParams.html +1 -1
  311. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/applicationUnderTest/index.html +1 -2
  312. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/README.js +31 -23
  313. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.js +103 -94
  314. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/GherkinTestRunner.html +3 -0
  315. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/GherkinTestRunner.js +1 -5
  316. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/GherkinTestRunner.html +3 -0
  317. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/GherkinTestRunner.js +1 -5
  318. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/GherkinTestRunner.html +3 -0
  319. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/GherkinTestRunner.js +1 -5
  320. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithQUnit/Steps.js +5 -5
  321. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithUIComponent/GherkinTestRunner.html +3 -0
  322. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithUIComponent/GherkinTestRunner.js +1 -5
  323. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  324. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  325. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  326. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  327. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +16 -9
  328. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +9 -0
  329. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/SandboxModel.js +11 -0
  330. package/test/sap/ui/core/demokit/sample/odata/v4/Products/data/UnitsOfMeasure.json +1 -1
  331. package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +2 -1
  332. package/test/sap/ui/core/demokit/tutorial/databinding/01/package.json +4 -1
  333. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  334. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/Component.js +12 -0
  335. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.html +8 -7
  336. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +28 -1
  337. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/view/App.view.xml +5 -0
  338. package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +3 -1
  339. package/test/sap/ui/core/demokit/tutorial/databinding/02/package.json +4 -1
  340. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  341. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/Component.js +12 -0
  342. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.html +8 -7
  343. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +34 -1
  344. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/model/data.json +3 -0
  345. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/view/App.view.xml +5 -0
  346. package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +3 -1
  347. package/test/sap/ui/core/demokit/tutorial/databinding/03/package.json +4 -1
  348. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  349. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/Component.js +12 -0
  350. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.html +8 -7
  351. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +34 -1
  352. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/model/data.json +3 -0
  353. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/view/App.view.xml +5 -0
  354. package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +3 -2
  355. package/test/sap/ui/core/demokit/tutorial/databinding/04/package.json +4 -1
  356. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  357. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/Component.js +12 -0
  358. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.html +8 -10
  359. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +35 -1
  360. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/model/data.json +6 -0
  361. package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +3 -2
  362. package/test/sap/ui/core/demokit/tutorial/databinding/05/package.json +4 -1
  363. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  364. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/Component.js +20 -0
  365. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.html +8 -10
  366. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +35 -1
  367. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/model/data.json +6 -0
  368. package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +4 -3
  369. package/test/sap/ui/core/demokit/tutorial/databinding/06/package.json +4 -1
  370. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  371. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/Component.js +12 -0
  372. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.html +8 -10
  373. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +46 -1
  374. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/model/data.json +5 -0
  375. package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +4 -3
  376. package/test/sap/ui/core/demokit/tutorial/databinding/07/package.json +3 -0
  377. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  378. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/Component.js +12 -0
  379. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.html +8 -10
  380. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +46 -1
  381. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/model/data.json +5 -0
  382. package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +4 -3
  383. package/test/sap/ui/core/demokit/tutorial/databinding/08/package.json +3 -0
  384. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  385. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/Component.js +12 -0
  386. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.html +8 -10
  387. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +46 -1
  388. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/model/data.json +11 -0
  389. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/view/App.view.xml +1 -1
  390. package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +4 -3
  391. package/test/sap/ui/core/demokit/tutorial/databinding/09/package.json +3 -0
  392. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  393. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/Component.js +12 -0
  394. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/controller/App.controller.js +8 -7
  395. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.html +8 -10
  396. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +46 -1
  397. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/model/data.json +11 -0
  398. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/view/App.view.xml +2 -2
  399. package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +4 -3
  400. package/test/sap/ui/core/demokit/tutorial/databinding/10/package.json +3 -0
  401. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  402. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/Component.js +12 -0
  403. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/controller/App.controller.js +8 -7
  404. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.html +8 -10
  405. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +46 -1
  406. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/model/data.json +13 -0
  407. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/view/App.view.xml +3 -3
  408. package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +4 -3
  409. package/test/sap/ui/core/demokit/tutorial/databinding/11/package.json +3 -0
  410. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  411. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/Component.js +12 -0
  412. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/controller/App.controller.js +8 -7
  413. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.html +8 -10
  414. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +47 -1
  415. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/model/data.json +13 -0
  416. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/view/App.view.xml +3 -3
  417. package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +4 -3
  418. package/test/sap/ui/core/demokit/tutorial/databinding/12/package.json +3 -0
  419. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  420. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/Component.js +12 -0
  421. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/controller/App.controller.js +10 -11
  422. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.html +8 -10
  423. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +51 -1
  424. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/model/Products.json +64 -57
  425. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/model/data.json +13 -0
  426. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/view/App.view.xml +3 -3
  427. package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +4 -3
  428. package/test/sap/ui/core/demokit/tutorial/databinding/13/package.json +3 -0
  429. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  430. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/Component.js +12 -0
  431. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/controller/App.controller.js +16 -16
  432. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.html +8 -10
  433. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +51 -1
  434. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/model/Products.json +64 -57
  435. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/model/data.json +13 -0
  436. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/view/App.view.xml +3 -3
  437. package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +4 -3
  438. package/test/sap/ui/core/demokit/tutorial/databinding/14/package.json +3 -0
  439. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  440. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/Component.js +12 -0
  441. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/controller/App.controller.js +16 -16
  442. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.html +8 -10
  443. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +51 -1
  444. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/model/Products.json +64 -57
  445. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/model/data.json +14 -0
  446. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/view/App.view.xml +3 -3
  447. package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +4 -3
  448. package/test/sap/ui/core/demokit/tutorial/databinding/15/package.json +3 -0
  449. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  450. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/Component.js +12 -0
  451. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/controller/App.controller.js +19 -22
  452. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.html +8 -10
  453. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +51 -1
  454. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/model/Products.json +64 -57
  455. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/model/data.json +14 -0
  456. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/view/App.view.xml +5 -5
  457. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  458. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  459. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  460. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  461. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  462. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  463. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  464. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  465. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  466. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  467. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  468. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  469. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  470. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  471. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  472. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  473. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  474. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  475. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  476. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  477. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  478. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  479. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  480. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  481. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  482. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  483. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  484. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  485. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  486. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  487. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  488. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  489. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  490. package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +67 -0
  491. package/test/sap/ui/core/qunit/EventProvider.qunit.js +30 -2
  492. package/test/sap/ui/core/qunit/{Core_libraryPreloadFiles.qunit.html → Lib_preloadFiles.qunit.html} +1 -1
  493. package/test/sap/ui/core/qunit/{Core_libraryPreloadFiles.qunit.js → Lib_preloadFiles.qunit.js} +5 -10
  494. package/test/sap/ui/core/qunit/ThemeHelper.qunit.js +1 -1
  495. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +4 -4
  496. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +12 -12
  497. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +262 -12
  498. package/test/sap/ui/core/qunit/app/DesignMode_suppressedDeactivation.qunit.js +8 -4
  499. package/test/sap/ui/core/qunit/app/_createDesignModeTests_legacyAPIs.qunit.js +8 -4
  500. package/test/sap/ui/core/qunit/app/fixture/designmode/test01.controller.js +4 -4
  501. package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +3 -3
  502. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +11 -0
  503. package/test/sap/ui/core/qunit/component/Component_keepAlive.qunit.js +30 -2
  504. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +82 -19
  505. package/test/sap/ui/core/qunit/component/testdata/keepAlive/child3/App.view.xml +3 -0
  506. package/test/sap/ui/core/qunit/component/testdata/keepAlive/child3/Component.js +20 -0
  507. package/test/sap/ui/core/qunit/component/testdata/keepAlive/child3/Home.view.xml +5 -0
  508. package/test/sap/ui/core/qunit/component/testdata/keepAlive/child3/Other.view.xml +5 -0
  509. package/test/sap/ui/core/qunit/component/testdata/keepAlive/child3/manifest.json +54 -0
  510. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.html +4 -0
  511. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.html +4 -0
  512. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.html +4 -0
  513. package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +4 -0
  514. package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.js +1 -1
  515. package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +4 -0
  516. package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.js +1 -1
  517. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +1 -1
  518. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +5 -6
  519. package/test/sap/ui/core/qunit/internal/testsuite.models.qunit.js +43 -16
  520. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +194 -180
  521. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +15 -33
  522. package/test/sap/ui/core/qunit/mockserver/MockServer.qunit.js +936 -1014
  523. package/test/sap/ui/core/qunit/mockserver/testsuite.mockserver.qunit.js +2 -4
  524. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  525. package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +50 -1
  526. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +18 -8
  527. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +107 -49
  528. package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +7 -0
  529. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +0 -3
  530. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +143 -2
  531. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +34 -0
  532. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +230 -39
  533. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +57 -18
  534. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +40 -6
  535. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +3 -0
  536. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1715 -106
  537. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +39 -0
  538. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +88 -18
  539. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +544 -50
  540. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +175 -0
  541. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +50 -9
  542. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +17 -0
  543. package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +140 -27
  544. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +12 -3
  545. package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +1 -2
  546. package/test/sap/ui/core/qunit/routing/fixture/placeholder/component/NavContainerOptOut/Component.js +1 -0
  547. package/test/sap/ui/core/qunit/rule/model/bindingPathSyntaxValidation.qunit.js +37 -0
  548. package/test/sap/ui/core/qunit/rule/model/{modelSupport.qunit.js → selectUsedInBoundAggregation.qunit.js} +86 -154
  549. package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +5 -2
  550. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib12/themes/{sap_hcb → sap_horizon_hcb}/library.css +1 -1
  551. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +18 -18
  552. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  553. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +3 -3
  554. package/test/sap/ui/core/qunit/types/CompositeType.qunit.js +6 -0
  555. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +3 -6
  556. package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +1370 -1242
  557. package/test/sap/ui/core/qunit/types/Types.qunit.js +65 -0
  558. package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +0 -3
  559. package/test/sap/ui/core/qunit/ui5classes/ManagedObject.qunit.js +68 -3
  560. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +2625 -1899
  561. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +0 -102
  562. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +0 -165
  563. package/test/sap/ui/core/relnotes/changes-1.121.json +0 -15
  564. package/test/sap/ui/core/relnotes/changes-1.122.json +80 -0
  565. package/test/sap/ui/core/visual/HyphenationPlayground.spec.js +5 -2
  566. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.js +0 -15
  567. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.js +0 -21
  568. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.js +0 -21
  569. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.js +0 -25
  570. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.js +0 -29
  571. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.js +0 -42
  572. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.js +0 -44
  573. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.js +0 -39
  574. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.js +0 -39
  575. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.js +0 -41
  576. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.js +0 -48
  577. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.js +0 -52
  578. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.js +0 -52
  579. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.js +0 -54
  580. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.js +0 -54
  581. /package/test/sap/ui/core/qunit/testdata/legacy-uilib_legacyAPIs/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  582. /package/test/sap/ui/core/qunit/testdata/legacy-uilib_legacyAPIs/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  583. /package/test/sap/ui/core/qunit/testdata/legacy-uilib_legacyAPIs/themes/{sap_hcb → sap_horizon_hcb}/library[legacy].css +0 -0
  584. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib1/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  585. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib1/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  586. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib10/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  587. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib11/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  588. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib13/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  589. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib14/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  590. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib15/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  591. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib15/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  592. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib16/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  593. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib16/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  594. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib17/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  595. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib2/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  596. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib2/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  597. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib3/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  598. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib3/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  599. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/themes/{sap_hcb → sap_horizon_hcb}/library-parameters.json +0 -0
  600. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib5/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  601. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib6/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  602. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib7/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  603. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib8/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
  604. /package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib9/themes/{sap_hcb → sap_horizon_hcb}/library.css +0 -0
@@ -4,6 +4,7 @@ sap.ui.define([
4
4
  "sap/ui/core/message/ControlMessageProcessor",
5
5
  "sap/ui/core/message/Message",
6
6
  "sap/ui/core/Messaging",
7
+ "sap/ui/core/UIAreaRegistry",
7
8
  "sap/ui/model/FormatException",
8
9
  "sap/ui/model/Model",
9
10
  "sap/ui/model/json/JSONModel",
@@ -13,9 +14,26 @@ sap.ui.define([
13
14
  "sap/m/Input",
14
15
  "sap/m/Label",
15
16
  "sap/ui/model/odata/ODataMessageParser",
16
- 'sap/ui/qunit/utils/createAndAppendDiv',
17
+ "sap/ui/qunit/utils/createAndAppendDiv",
17
18
  "sap/ui/test/TestUtils"
18
- ], function(coreLibrary, ControlMessageProcessor, Message, Messaging, FormatException, Model, JSONModel, MessageModel, TypeInteger, TypeString, Input, Label, ODataMessageParser, createAndAppendDiv, TestUtils) {
19
+ ], function(
20
+ coreLibrary,
21
+ ControlMessageProcessor,
22
+ Message,
23
+ Messaging,
24
+ UIAreaRegistry,
25
+ FormatException,
26
+ Model,
27
+ JSONModel,
28
+ MessageModel,
29
+ TypeInteger,
30
+ TypeString,
31
+ Input,
32
+ Label,
33
+ ODataMessageParser,
34
+ createAndAppendDiv,
35
+ TestUtils
36
+ ) {
19
37
  "use strict";
20
38
 
21
39
  // create content div
@@ -126,28 +144,36 @@ sap.ui.define([
126
144
  });
127
145
  };
128
146
 
129
- var initModel = function(sType) {
130
- if (sType === "json") {
131
- oModel = new JSONModel();
132
- var oData = {
133
- form: {
134
- firstname: "Fritz",
135
- lastname: "Heiner",
136
- street: "im",
137
- nr: 1,
138
- zip: "12345"
139
- }
140
- };
141
- oModel.setData(oData);
142
- }
143
- sap.ui.getCore().setModel(oModel);
147
+ var initModel = function() {
148
+ oModel = new JSONModel();
149
+ var oData = {
150
+ form: {
151
+ firstname: "Fritz",
152
+ lastname: "Heiner",
153
+ street: "im",
154
+ nr: 1,
155
+ zip: "12345"
156
+ }
157
+ };
158
+ oModel.setData(oData);
144
159
  createControls();
160
+ UIAreaRegistry.get("content").setModel(oModel);
145
161
  };
146
162
 
147
163
  QUnit.module("Messaging", {
148
164
  beforeEach : function() {
149
- initModel("json");
165
+ initModel();
150
166
  oControlProcessor = new ControlMessageProcessor();
167
+
168
+ this.dataStateChanged = function(oBinding) {
169
+ return new Promise((resolve, reject) => {
170
+ function onDataStateChanged() {
171
+ oBinding.detachAggregatedDataStateChange(onDataStateChanged);
172
+ resolve(oBinding.getDataState().getChanges());
173
+ }
174
+ oBinding.attachAggregatedDataStateChange(onDataStateChanged);
175
+ });
176
+ };
151
177
  },
152
178
 
153
179
  afterEach : function() {
@@ -181,43 +207,30 @@ sap.ui.define([
181
207
  assert.ok(oMessageModel.getObject('/')[0] === oMessage, 'MessageModel: message instance ok');
182
208
  });
183
209
 
184
- QUnit.test("removeMessage", function(assert) {
185
- var done = assert.async();
186
- var oMessageModel = Messaging.getMessageModel();
187
- var oMessage = createMessage();
210
+ QUnit.test("removeMessage", async function(assert) {
211
+ const oMessageModel = Messaging.getMessageModel();
212
+ const oMessage = createMessage();
213
+ const oBinding = oInput1.getBinding("value");
214
+
188
215
  Messaging.addMessages(oMessage);
189
- spyDataState(oInput1, function(sName, oDataState) {
190
- assert.ok(!oDataState.getMessages() || oDataState.getMessages().length == 0, 'Message propagated to control - remove');
191
- assert.ok(oInput1.getValueState() === ValueState.None, 'Input: ValueState set correctly');
192
- assert.ok(oInput1.getValueStateText() === '', 'Input: ValueStateText set correctly');
193
- done();
194
- }
195
- );
216
+ await this.dataStateChanged(oBinding);
217
+
196
218
  Messaging.removeMessages(oMessage);
197
219
  assert.ok(oMessageModel.getObject('/').length == 0, 'No Messages in Model');
198
- });
220
+ await this.dataStateChanged(oBinding);
199
221
 
200
- QUnit.test("removeAllMessages", function(assert) {
201
- var done = assert.async();
202
- var oMessageModel = Messaging.getMessageModel();
203
- var oMessage = createMessage('mt1','/form/lastname');
204
- var oMessage2 = createMessage('mt2');
205
- var oMessage3 = createMessage('mt3');
222
+ const aMessages = oBinding.getDataState().getMessages();
206
223
 
207
- spyDataState(oInput1, function(sName, oDataState) {
208
- assert.ok(oDataState.getMessages().length == 2, 'Message propagated to control - 2');
209
- assert.ok(oInput1.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
210
- assert.ok(oInput1.getValueStateText() === 'mt2', 'Input: ValueStateText set correctly');
211
- }
212
- );
224
+ assert.ok(!aMessages || aMessages.length == 0, 'Message propagated to control - remove');
225
+ assert.ok(oInput1.getValueState() === ValueState.None, 'Input: ValueState set correctly');
226
+ assert.ok(oInput1.getValueStateText() === '', 'Input: ValueStateText set correctly');
227
+ });
213
228
 
214
- spyDataState(oInput2,
215
- function(sName, oDataState) {
216
- assert.ok(oDataState.getMessages().length == 1, 'Message propagated to control - 1');
217
- assert.ok(oInput2.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
218
- assert.ok(oInput2.getValueStateText() === 'mt1', 'Input: ValueStateText set correctly');
219
- }
220
- );
229
+ QUnit.test("removeAllMessages", async function(assert) {
230
+ const oMessageModel = Messaging.getMessageModel();
231
+ const oMessage = createMessage('mt1','/form/lastname');
232
+ const oMessage2 = createMessage('mt2');
233
+ const oMessage3 = createMessage('mt3');
221
234
 
222
235
  Messaging.addMessages([oMessage,oMessage2,oMessage3]);
223
236
  assert.ok(Array.isArray(oMessageModel.getObject('/')), 'Message added to Model');
@@ -226,108 +239,105 @@ sap.ui.define([
226
239
  assert.equal(oMessageModel.getObject('/')[1].message,'mt2', 'MessageModel: message2 instance ok');
227
240
  assert.equal(oMessageModel.getObject('/')[2].message,'mt3', 'MessageModel: message3 instance ok');
228
241
 
229
- setTimeout(function() {
230
- spyDataState(oInput1, function(sName, oDataState) {
231
- assert.ok(!oDataState.getMessages() || oDataState.getMessages().length == 0, 'Message propagated to control - remove');
232
- assert.ok(oInput1.getValueState() === ValueState.None, 'Input: ValueState set correctly');
233
- assert.ok(oInput1.getValueStateText() === '', 'Input: ValueStateText set correctly');
234
- });
235
- spyDataState(oInput2, function(sName, oDataState) {
236
- assert.ok(!oDataState.getMessages() || oDataState.getMessages().length == 0, 'Message propagated to control - remove');
237
- assert.ok(oInput2.getValueState() === ValueState.None, 'Input: ValueState set correctly');
238
- assert.ok(oInput2.getValueStateText() === '', 'Input: ValueStateText set correctly');
239
- done();
240
- });
241
- Messaging.removeAllMessages();
242
- assert.ok(oMessageModel.getObject('/').length == 0, 'No Messages in Model');
243
- }, 0);
242
+ const oBinding1 = oInput1.getBinding("value");
243
+ const oBinding2 = oInput2.getBinding("value");
244
+ const oDataState1 = oBinding1.getDataState();
245
+ const oDataState2 = oBinding2.getDataState();
246
+
247
+ await Promise.all([this.dataStateChanged(oBinding1), this.dataStateChanged(oBinding2)]);
248
+
249
+ assert.ok(oDataState1.getMessages().length == 2, 'Message propagated to control - 2');
250
+ assert.ok(oInput1.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
251
+ assert.ok(oInput1.getValueStateText() === 'mt2', 'Input: ValueStateText set correctly');
252
+
253
+ assert.ok(oDataState2.getMessages().length == 1, 'Message propagated to control - 1');
254
+ assert.ok(oInput2.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
255
+ assert.ok(oInput2.getValueStateText() === 'mt1', 'Input: ValueStateText set correctly');
256
+
257
+ Messaging.removeAllMessages();
258
+ await Promise.all([this.dataStateChanged(oBinding1), this.dataStateChanged(oBinding2)]);
259
+
260
+ assert.ok(!oDataState1.getMessages() || oDataState1.getMessages().length == 0, 'Message propagated to control - remove');
261
+ assert.ok(oInput1.getValueState() === ValueState.None, 'Input: ValueState set correctly');
262
+ assert.ok(oInput1.getValueStateText() === '', 'Input: ValueStateText set correctly');
263
+
264
+ assert.ok(!oDataState2.getMessages() || oDataState2.getMessages().length == 0, 'Message propagated to control - remove');
265
+ assert.ok(oInput2.getValueState() === ValueState.None, 'Input: ValueState set correctly');
266
+ assert.ok(oInput2.getValueStateText() === '', 'Input: ValueStateText set correctly');
244
267
  });
245
268
 
246
- QUnit.test("parseError", function(assert) {
247
- var done = assert.async();
269
+ QUnit.test("parseError", async function(assert) {
270
+ const oBinding = oZip.getBinding("value");
271
+ const oDataState = oBinding.getDataState();
248
272
  Messaging.registerObject(oZip, true);
249
- TestUtils.withNormalizedMessages(function() {
250
- spyDataState(oZip, function(sName, oDataState) {
251
- assert.ok(oDataState.getMessages().length == 1, 'ParseError Message propagated to control');
252
- assert.ok(oZip.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
253
- assert.equal(oZip.getValueStateText(), "EnterInt", 'Input: ValueStateText set correctly');
254
- });
273
+
274
+ TestUtils.withNormalizedMessages(() => {
255
275
  oZip.setValue('bbb');
256
276
  });
257
- setTimeout(function() {
258
- spyDataState(oZip, function(sName, oDataState) {
259
- assert.ok(oDataState.getMessages().length == 0, 'Validation Message deleted');
260
- assert.ok(oZip.getValueState() === ValueState.None, 'Input: ValueState set correctly');
261
- assert.ok(oZip.getValueStateText() === '', 'Input: ValueStateText set correctly');
262
- Messaging.unregisterObject(oZip);
263
- done();
264
- });
265
- oZip.setValue('123');
266
- }, this);
277
+ await this.dataStateChanged(oBinding);
278
+ assert.ok(oDataState.getMessages().length == 1, 'ParseError Message propagated to control');
279
+ assert.ok(oZip.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
280
+ assert.equal(oZip.getValueStateText(), "EnterInt", 'Input: ValueStateText set correctly');
281
+
282
+ oZip.setValue('123');
283
+ await this.dataStateChanged(oBinding);
284
+
285
+ assert.ok(oDataState.getMessages().length == 0, 'Validation Message deleted');
286
+ assert.ok(oZip.getValueState() === ValueState.None, 'Input: ValueState set correctly');
287
+ assert.ok(oZip.getValueStateText() === '', 'Input: ValueStateText set correctly');
288
+ Messaging.unregisterObject(oZip);
267
289
  });
268
290
 
269
- QUnit.test("validationError", function(assert) {
270
- var done = assert.async();
291
+ QUnit.test("validationError", async function(assert) {
292
+ const oBinding = oStreet.getBinding("value");
293
+ const oDataState = oBinding.getDataState();
271
294
  Messaging.registerObject(oStreet, true);
272
- TestUtils.withNormalizedMessages(function() {
273
- spyDataState(oStreet, function(sName, oDataState) {
274
- assert.ok(oDataState.getMessages().length == 1, 'Validation Message propagated to control');
275
- assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
276
- assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
277
- });
295
+
296
+ TestUtils.withNormalizedMessages(() => {
278
297
  oStreet.setValue('am Busche');
279
298
  });
280
- setTimeout(function() {
281
- spyDataState(oStreet, function(sName, oDataState) {
282
- assert.ok(oDataState.getMessages().length == 0, 'Validation Message deleted');
283
- assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
284
- assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
285
- Messaging.unregisterObject(oStreet);
286
- done();
287
- });
288
- oStreet.setValue('Busch');
289
- }, this);
299
+ await this.dataStateChanged(oBinding);
300
+ assert.ok(oDataState.getMessages().length == 1, 'Validation Message propagated to control');
301
+ assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
302
+ assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
303
+
304
+ oStreet.setValue('Busch');
305
+ await this.dataStateChanged(oBinding);
306
+
307
+ assert.ok(oDataState.getMessages().length == 0, 'Validation Message deleted');
308
+ assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
309
+ assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
310
+ Messaging.unregisterObject(oStreet);
290
311
  });
291
312
 
292
- QUnit.test("validationError - multiple input", function(assert) {
293
- var done = assert.async();
313
+ QUnit.test("validationError - multiple input", async function(assert) {
314
+ const oBinding = oStreet.getBinding("value");
294
315
  Messaging.registerObject(oStreet, true);
295
316
 
296
- TestUtils.withNormalizedMessages(function() {
297
- spyDataState(oStreet, function(sName, oDataState) {
298
- assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
299
- assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
300
- });
317
+ TestUtils.withNormalizedMessages(() => {
301
318
  oStreet.setValue('am Busche');
302
319
  });
320
+ await this.dataStateChanged(oBinding);
321
+ assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
322
+ assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
303
323
 
304
- setTimeout(function() {
305
- spyDataState(oStreet, function(sName, oDataState) {
306
- assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
307
- assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
308
- });
309
- oStreet.setValue('Busch');
310
-
311
- setTimeout(function() {
312
- TestUtils.withNormalizedMessages(function() {
313
- spyDataState(oStreet, function(sName, oDataState) {
314
- assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
315
- assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
316
- });
317
- oStreet.setValue('am Busche');
318
- });
324
+ oStreet.setValue('Busch');
325
+ await this.dataStateChanged(oBinding);
326
+ assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
327
+ assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
319
328
 
320
- setTimeout(function() {
321
- spyDataState(oStreet, function(sName, oDataState) {
322
- assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
323
- assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
324
- Messaging.unregisterObject(oStreet);
325
- done();
326
- });
327
- oStreet.setValue('Busch');
328
- }, 0);
329
- }, 0);
330
- }, 0);
329
+ TestUtils.withNormalizedMessages(() => {
330
+ oStreet.setValue('am Busche');
331
+ });
332
+ await this.dataStateChanged(oBinding);
333
+ assert.ok(oStreet.getValueState() === ValueState.Error, 'Input: ValueState set correctly');
334
+ assert.equal(oStreet.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
335
+
336
+ oStreet.setValue('Busch');
337
+ await this.dataStateChanged(oBinding);
338
+ assert.ok(oStreet.getValueState() === ValueState.None, 'Input: ValueState set correctly');
339
+ assert.ok(oStreet.getValueStateText() === '', 'Input: ValueStateText set correctly');
340
+ Messaging.unregisterObject(oStreet);
331
341
  });
332
342
 
333
343
  QUnit.test("AdditionalText property on message for different labels", function(assert) {
@@ -547,24 +557,33 @@ sap.ui.define([
547
557
  });
548
558
 
549
559
 
550
- QUnit.module("Bugfixes");
560
+ QUnit.module("Bugfixes", {
561
+ beforeEach() {
562
+ this.dataStateChanged = function(oBinding) {
563
+ return new Promise((resolve, reject) => {
564
+ function onDataStateChanged() {
565
+ oBinding.detachAggregatedDataStateChange(onDataStateChanged);
566
+ resolve(oBinding.getDataState().getChanges());
567
+ }
568
+ oBinding.attachAggregatedDataStateChange(onDataStateChanged);
569
+ });
570
+ };
571
+ }
572
+ });
551
573
 
552
- QUnit.test("Messaging: Message sorting", function(assert) {
574
+ QUnit.test("Messaging: Message sorting", async function(assert) {
553
575
  assert.expect(3);
554
- var done = assert.async();
555
- var aCorrectOrder = [ MessageType.Error, MessageType.Error, MessageType.Warning, MessageType.Success, MessageType.Information ];
576
+ const aCorrectOrder = [ MessageType.Error, MessageType.Error, MessageType.Warning, MessageType.Success, MessageType.Information ];
556
577
 
557
-
558
-
559
- var oModel = new JSONModel();
560
- var oInput = new Input({
578
+ const oModel = new JSONModel();
579
+ const oInput = new Input({
561
580
  value: "{/test}"
562
581
  });
563
582
  oInput.setModel(oModel);
564
583
  Messaging.registerObject(oInput);
565
584
 
566
-
567
- var aMessages = [ new Message({
585
+ const oBinding = oInput.getBinding("value");
586
+ const aMessages = [ new Message({
568
587
  type: MessageType.Information,
569
588
  id: "test-info",
570
589
  processor: oModel,
@@ -591,46 +610,43 @@ sap.ui.define([
591
610
  target: "/test"
592
611
  })];
593
612
 
594
-
595
613
  // CHeck direct call to private method
596
- var aMessageCopy = aMessages.slice(0);
597
- var oModelSpy = this.spy(oModel, "setMessages");
614
+ let aMessageCopy = aMessages.slice(0);
615
+ const oModelSpy = this.spy(oModel, "setMessages");
598
616
  Messaging.addMessages(aMessageCopy);
599
617
  aMessageCopy = oModelSpy.getCall(0).args[0]["/test"];
600
- var aNewOrder = aMessageCopy.map(function(oM) { return oM.type; });
618
+ const aNewOrder = aMessageCopy.map(function(oM) { return oM.type; });
601
619
  assert.deepEqual(aNewOrder, aCorrectOrder, "Sorted messages are in the correct order (Highest severity first)");
602
620
  oModelSpy.restore();
603
621
 
604
-
605
622
  Messaging.removeAllMessages();
606
- var bCorrectOrder = false;
623
+ let bCorrectOrder = false;
607
624
  oInput.refreshDataState = function(sName, oDataState) {
608
- var aPropagatedMessages = oDataState.getMessages();
609
- var aNewOrder = aPropagatedMessages.map(function(oM) { return oM.type; });
625
+ const aPropagatedMessages = oDataState.getMessages();
626
+ const aNewOrder = aPropagatedMessages.map(function(oM) { return oM.type; });
610
627
 
611
628
  bCorrectOrder = JSON.stringify(aNewOrder) == JSON.stringify(aCorrectOrder);
612
629
  };
613
630
 
614
631
  Messaging.addMessages(aMessages);
615
-
616
632
  assert.ok(!bCorrectOrder, "Messages have not been propagated synchronously");
617
633
 
618
- setTimeout(function() {
619
- assert.ok(bCorrectOrder, "Messages have been propagated asynchronously and are correctly sorted");
620
- Messaging.removeMessages(aMessages);
621
- oInput.destroy();
622
- done();
623
- }, 0);
634
+ await this.dataStateChanged(oBinding);
635
+
636
+ assert.ok(bCorrectOrder, "Messages have been propagated asynchronously and are correctly sorted");
637
+ Messaging.removeMessages(aMessages);
638
+ oInput.destroy();
624
639
  });
625
640
 
626
- QUnit.test("Message: Change Message Processor", function(assert) {
641
+ QUnit.test("Message: Change Message Processor", async function(assert) {
627
642
  assert.expect(4);
628
- var done = assert.async();
629
643
 
630
- var oModel = new JSONModel();
631
- var oInput = new Input("inputField01", {
644
+ const oModel = new JSONModel();
645
+ const oInput = new Input("inputField01", {
632
646
  value: "{/test}"
633
647
  });
648
+
649
+
634
650
  oInput.setModel(oModel);
635
651
  Messaging.registerObject(oInput);
636
652
 
@@ -641,29 +657,27 @@ sap.ui.define([
641
657
  target: "/test"
642
658
  }));
643
659
 
660
+ const oBinding = oInput.getBinding("value");
661
+ await this.dataStateChanged(oBinding);
644
662
 
645
- setTimeout(function() {
646
- var aMessages = oInput.getBinding("value").getDataState().getMessages();
647
- assert.equal(aMessages.length, 1, "The message was propagated through the binding");
648
- assert.ok(aMessages[0].getMessageProcessor() instanceof Model, "The message is processed by a model");
663
+ let aMessages = oInput.getBinding("value").getDataState().getMessages();
664
+ assert.equal(aMessages.length, 1, "The message was propagated through the binding");
665
+ assert.ok(aMessages[0].getMessageProcessor() instanceof Model, "The message is processed by a model");
649
666
 
650
- var oMessage = aMessages[0];
667
+ const oMessage = aMessages[0];
668
+ Messaging.removeMessages(oMessage);
669
+ oMessage.setMessageProcessor(new ControlMessageProcessor());
670
+ oMessage.setTargets(["inputField01/test"]);
671
+ Messaging.addMessages(oMessage);
651
672
 
652
- Messaging.removeMessages(oMessage);
653
- oMessage.setMessageProcessor(new ControlMessageProcessor());
654
- oMessage.setTargets(["inputField01/test"]);
655
- Messaging.addMessages(oMessage);
673
+ await this.dataStateChanged(oBinding);
656
674
 
657
- setTimeout(function() {
658
- aMessages = oInput.getBinding("value").getDataState().getMessages();
659
- assert.equal(aMessages.length, 0, "The message was not propagated through the binding");
660
- assert.ok(oMessage.getMessageProcessor() instanceof ControlMessageProcessor, "The message is processed by the ControlMessageProcessor");
675
+ aMessages = oInput.getBinding("value").getDataState().getMessages();
676
+ assert.equal(aMessages.length, 0, "The message was not propagated through the binding");
677
+ assert.ok(oMessage.getMessageProcessor() instanceof ControlMessageProcessor, "The message is processed by the ControlMessageProcessor");
661
678
 
662
- oInput.destroy();
663
- Messaging.removeMessages(oMessage);
664
- done();
665
- }, 0);
666
- }, 0);
679
+ oInput.destroy();
680
+ Messaging.removeMessages(oMessage);
667
681
 
668
682
  });
669
683
 
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  var pCompContRendered = Component.create({
39
39
  name: "components"
40
40
  }).then(function(oComponent) {
41
- new ComponentContainer("CompCont", {
41
+ return new ComponentContainer("CompCont", {
42
42
  component: oComponent
43
43
  }).placeAt("content");
44
44
  });
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  name: "components.enabled",
48
48
  handleValidation: true
49
49
  }).then(function(oComponent) {
50
- new ComponentContainer("CompCont2", {
50
+ return new ComponentContainer("CompCont2", {
51
51
  component: oComponent
52
52
  }).placeAt("content");
53
53
  });
@@ -56,35 +56,17 @@ sap.ui.define([
56
56
  name: "components.disabled",
57
57
  handleValidation: true // Note: same setting in component metadata overrides this
58
58
  }).then(function(oComponent) {
59
- new ComponentContainer("CompCont3", {
59
+ return new ComponentContainer("CompCont3", {
60
60
  component: oComponent
61
61
  }).placeAt("content");
62
62
  });
63
63
 
64
- this.initModel = function() {
65
- this.oModel = new JSONModel();
66
- var oData = {
67
- form: {
68
- firstname: "Fritz",
69
- lastname: "Heiner",
70
- street: "im",
71
- nr: 1,
72
- zip: "12345"
73
- }
74
- };
75
- this.oModel.setData(oData);
76
- sap.ui.getCore().setModel(this.oModel);
77
- };
78
-
79
- return Promise.all([pCompContRendered, pCompContEnabledRendered, pCompContDisabledRendered]).then(nextUIUpdate);
80
- },
81
-
82
- beforeEach : function() {
83
- this.initModel();
84
- },
85
-
86
- afterEach : function() {
87
- this.oModel.destroy();
64
+ return Promise.all([
65
+ pCompContRendered, pCompContEnabledRendered, pCompContDisabledRendered
66
+ ]).then((aComponentContainers) => {
67
+ this.aComponentContainers = aComponentContainers;
68
+ return nextUIUpdate();
69
+ });
88
70
  }
89
71
  });
90
72
 
@@ -103,7 +85,7 @@ sap.ui.define([
103
85
  assert.ok(oCompZip.getValueState() === library.ValueState.Error, 'Input: ValueState set correctly');
104
86
  assert.equal(oCompZip.getValueStateText(), "String.MaxLength 5", 'Input: ValueStateText set correctly');
105
87
  });
106
- sap.ui.getCore().attachValidationError(oCoreValHandler);
88
+ this.aComponentContainers[1].attachValidationError(oCoreValHandler);
107
89
  oCompZip.setValue('123456');
108
90
  }.bind(this));
109
91
 
@@ -115,7 +97,7 @@ sap.ui.define([
115
97
  done();
116
98
  });
117
99
  oCompZip.setValue('12345');
118
- sap.ui.getCore().detachValidationError(oCoreValHandler);
100
+ this.aComponentContainers[1].detachValidationError(oCoreValHandler);
119
101
  }.bind(this), 0);
120
102
  });
121
103
 
@@ -129,10 +111,10 @@ sap.ui.define([
129
111
  }
130
112
  };
131
113
  oCompZip.getBinding("value").attachDataStateChange(oValHandler);
132
- sap.ui.getCore().attachValidationError(oValHandler);
114
+ this.aComponentContainers[2].attachValidationError(oValHandler);
133
115
  oCompZip.setValue('123456');
134
116
  assert.ok(isPlainObject(oMessageModel.getObject('/')) || oMessageModel.getObject('/').length == 0, 'No Messages in Model');
135
- sap.ui.getCore().detachValidationError(oValHandler);
117
+ this.aComponentContainers[2].detachValidationError(oValHandler);
136
118
  });
137
119
 
138
120
  QUnit.test("component handle validation undefined", function(assert) {
@@ -146,10 +128,10 @@ sap.ui.define([
146
128
  };
147
129
  var oValHandler = function(oEvent) {
148
130
  assert.ok(true,oEvent.sId);
149
- sap.ui.getCore().detachValidationError(oValHandler);
131
+ this.aComponentContainers[0].detachValidationError(oValHandler, this);
150
132
  };
151
133
  oCompZip.getBinding("value").attachDataStateChange(oChangeHandler);
152
- sap.ui.getCore().attachValidationError(oValHandler);
134
+ this.aComponentContainers[0].attachValidationError(oValHandler, this);
153
135
  oCompZip.setValue('123456');
154
136
  assert.ok(isPlainObject(oMessageModel.getObject('/')) || oMessageModel.getObject('/').length == 0, 'No Messages in Model');
155
137
  });