@openui5/sap.ui.core 1.119.1 → 1.120.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.
- package/THIRDPARTY.txt +6 -6
- package/package.json +1 -1
- package/src/jquery.sap.global.js +40 -111
- package/src/jquery.sap.properties.js +7 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +5 -3
- package/src/jquery.sap.storage.js +6 -3
- package/src/sap/base/Event.js +32 -78
- package/src/sap/base/Eventing.js +114 -271
- package/src/sap/base/Log.js +21 -1
- package/src/sap/base/config.js +14 -9
- package/src/sap/base/i18n/Formatting.js +400 -256
- package/src/sap/base/i18n/LanguageTag.js +64 -66
- package/src/sap/base/i18n/Localization.js +125 -87
- package/src/sap/base/i18n/ResourceBundle.js +1 -1
- package/src/sap/base/i18n/date/CalendarType.js +2 -2
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +2 -2
- package/src/sap/base/i18n/date/TimezoneUtils.js +43 -6
- package/src/sap/base/util/LoaderExtensions.js +8 -2
- package/src/sap/base/util/mixedFetch.js +1 -0
- package/src/sap/base/util/resolveReference.js +31 -13
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +1 -0
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +6 -7
- package/src/sap/ui/base/BindingInfo.js +3 -3
- package/src/sap/ui/base/BindingParser.js +5 -2
- package/src/sap/ui/base/DataType.js +57 -1
- package/src/sap/ui/base/DesignTime.js +69 -0
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +25 -4
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +102 -85
- package/src/sap/ui/base/ManagedObjectMetadata.js +53 -31
- package/src/sap/ui/base/ManagedObjectObserver.js +1 -0
- package/src/sap/ui/base/Metadata.js +3 -3
- package/src/sap/ui/base/Object.js +19 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/AnimationMode.js +2 -2
- package/src/sap/ui/core/AppCacheBuster.js +30 -18
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/CalendarType.js +6 -0
- package/src/sap/ui/core/Component.js +175 -86
- package/src/sap/ui/core/ComponentContainer.js +6 -5
- package/src/sap/ui/core/ComponentMetadata.js +3 -4
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +395 -709
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/ControlBehavior.js +37 -28
- package/src/sap/ui/core/Core.js +338 -216
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +3 -1
- package/src/sap/ui/core/Element.js +24 -10
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +3 -2
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +3 -3
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IndicationColorSupport.js +13 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +2 -3
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +17 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +8 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +253 -57
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +118 -32
- package/src/sap/ui/core/Manifest.js +4 -2
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Placeholder.js +18 -0
- package/src/sap/ui/core/Popup.js +5 -0
- package/src/sap/ui/core/RenderManager.js +21 -17
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/Rendering.js +51 -47
- package/src/sap/ui/core/ResizeHandler.js +2 -2
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Shortcut.js +5 -3
- package/src/sap/ui/core/Supportability.js +146 -0
- package/src/sap/ui/core/Theming.js +130 -88
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +4 -3
- package/src/sap/ui/core/UIArea.js +5 -4
- package/src/sap/ui/core/UIComponent.js +38 -12
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +3 -3
- package/src/sap/ui/core/_IconRegistry.js +13 -6
- package/src/sap/ui/core/cldr/ar.json +143 -137
- package/src/sap/ui/core/cldr/ar_EG.json +143 -137
- package/src/sap/ui/core/cldr/ar_SA.json +143 -137
- package/src/sap/ui/core/cldr/bg.json +423 -423
- package/src/sap/ui/core/cldr/ca.json +541 -494
- package/src/sap/ui/core/cldr/cs.json +475 -364
- package/src/sap/ui/core/cldr/cy.json +656 -477
- package/src/sap/ui/core/cldr/da.json +334 -275
- package/src/sap/ui/core/cldr/de.json +388 -291
- package/src/sap/ui/core/cldr/de_AT.json +388 -291
- package/src/sap/ui/core/cldr/de_CH.json +394 -297
- package/src/sap/ui/core/cldr/el.json +169 -166
- package/src/sap/ui/core/cldr/el_CY.json +169 -166
- package/src/sap/ui/core/cldr/en.json +558 -521
- package/src/sap/ui/core/cldr/en_AU.json +558 -520
- package/src/sap/ui/core/cldr/en_GB.json +476 -439
- package/src/sap/ui/core/cldr/en_HK.json +520 -482
- package/src/sap/ui/core/cldr/en_IE.json +486 -448
- package/src/sap/ui/core/cldr/en_IN.json +466 -428
- package/src/sap/ui/core/cldr/en_NZ.json +506 -468
- package/src/sap/ui/core/cldr/en_PG.json +506 -468
- package/src/sap/ui/core/cldr/en_SG.json +506 -468
- package/src/sap/ui/core/cldr/en_ZA.json +486 -448
- package/src/sap/ui/core/cldr/es.json +473 -468
- package/src/sap/ui/core/cldr/es_AR.json +445 -440
- package/src/sap/ui/core/cldr/es_BO.json +479 -474
- package/src/sap/ui/core/cldr/es_CL.json +469 -464
- package/src/sap/ui/core/cldr/es_CO.json +387 -381
- package/src/sap/ui/core/cldr/es_MX.json +502 -497
- package/src/sap/ui/core/cldr/es_PE.json +455 -450
- package/src/sap/ui/core/cldr/es_UY.json +479 -474
- package/src/sap/ui/core/cldr/es_VE.json +499 -494
- package/src/sap/ui/core/cldr/et.json +378 -320
- package/src/sap/ui/core/cldr/fa.json +104 -104
- package/src/sap/ui/core/cldr/fi.json +401 -315
- package/src/sap/ui/core/cldr/fr.json +391 -385
- package/src/sap/ui/core/cldr/fr_BE.json +391 -385
- package/src/sap/ui/core/cldr/fr_CA.json +499 -493
- package/src/sap/ui/core/cldr/fr_CH.json +334 -328
- package/src/sap/ui/core/cldr/fr_LU.json +391 -385
- package/src/sap/ui/core/cldr/he.json +291 -159
- package/src/sap/ui/core/cldr/hi.json +157 -128
- package/src/sap/ui/core/cldr/hr.json +514 -461
- package/src/sap/ui/core/cldr/hu.json +287 -257
- package/src/sap/ui/core/cldr/id.json +463 -416
- package/src/sap/ui/core/cldr/it.json +468 -413
- package/src/sap/ui/core/cldr/it_CH.json +468 -413
- package/src/sap/ui/core/cldr/ja.json +98 -61
- package/src/sap/ui/core/cldr/kk.json +631 -571
- package/src/sap/ui/core/cldr/ko.json +79 -71
- package/src/sap/ui/core/cldr/lt.json +361 -270
- package/src/sap/ui/core/cldr/lv.json +234 -242
- package/src/sap/ui/core/cldr/ms.json +463 -408
- package/src/sap/ui/core/cldr/nb.json +176 -143
- package/src/sap/ui/core/cldr/nl.json +463 -393
- package/src/sap/ui/core/cldr/nl_BE.json +463 -393
- package/src/sap/ui/core/cldr/pl.json +633 -344
- package/src/sap/ui/core/cldr/pt.json +447 -336
- package/src/sap/ui/core/cldr/pt_PT.json +488 -449
- package/src/sap/ui/core/cldr/ro.json +477 -383
- package/src/sap/ui/core/cldr/ru.json +367 -332
- package/src/sap/ui/core/cldr/ru_UA.json +361 -326
- package/src/sap/ui/core/cldr/sk.json +502 -537
- package/src/sap/ui/core/cldr/sl.json +168 -161
- package/src/sap/ui/core/cldr/sr.json +276 -225
- package/src/sap/ui/core/cldr/sr_Latn.json +972 -907
- package/src/sap/ui/core/cldr/sv.json +420 -346
- package/src/sap/ui/core/cldr/th.json +117 -94
- package/src/sap/ui/core/cldr/tr.json +413 -359
- package/src/sap/ui/core/cldr/uk.json +395 -368
- package/src/sap/ui/core/cldr/vi.json +392 -379
- package/src/sap/ui/core/cldr/zh_CN.json +91 -33
- package/src/sap/ui/core/cldr/zh_HK.json +90 -32
- package/src/sap/ui/core/cldr/zh_SG.json +90 -32
- package/src/sap/ui/core/cldr/zh_TW.json +75 -51
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +6 -0
- package/src/sap/ui/core/date/Islamic.js +4 -4
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/date/_Calendars.js +5 -2
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +3 -2
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +33 -21
- package/src/sap/ui/core/format/NumberFormat.js +3 -2
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +2 -2
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +128 -8
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +2 -2
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/message/MessageType.js +2 -1
- package/src/sap/ui/core/messagebundle.properties +24 -0
- package/src/sap/ui/core/messagebundle_ar.properties +15 -3
- package/src/sap/ui/core/messagebundle_bg.properties +14 -2
- package/src/sap/ui/core/messagebundle_ca.properties +13 -1
- package/src/sap/ui/core/messagebundle_cs.properties +15 -3
- package/src/sap/ui/core/messagebundle_cy.properties +16 -4
- package/src/sap/ui/core/messagebundle_da.properties +15 -3
- package/src/sap/ui/core/messagebundle_de.properties +15 -3
- package/src/sap/ui/core/messagebundle_el.properties +16 -4
- package/src/sap/ui/core/messagebundle_en.properties +12 -0
- package/src/sap/ui/core/messagebundle_en_GB.properties +16 -4
- package/src/sap/ui/core/messagebundle_es.properties +15 -3
- package/src/sap/ui/core/messagebundle_es_MX.properties +15 -3
- package/src/sap/ui/core/messagebundle_et.properties +15 -3
- package/src/sap/ui/core/messagebundle_fi.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr_CA.properties +14 -2
- package/src/sap/ui/core/messagebundle_hi.properties +16 -4
- package/src/sap/ui/core/messagebundle_hr.properties +14 -2
- package/src/sap/ui/core/messagebundle_hu.properties +16 -4
- package/src/sap/ui/core/messagebundle_id.properties +15 -3
- package/src/sap/ui/core/messagebundle_it.properties +17 -5
- package/src/sap/ui/core/messagebundle_iw.properties +15 -3
- package/src/sap/ui/core/messagebundle_ja.properties +25 -13
- package/src/sap/ui/core/messagebundle_kk.properties +15 -3
- package/src/sap/ui/core/messagebundle_ko.properties +14 -2
- package/src/sap/ui/core/messagebundle_lt.properties +15 -3
- package/src/sap/ui/core/messagebundle_lv.properties +15 -3
- package/src/sap/ui/core/messagebundle_mk.properties +352 -0
- package/src/sap/ui/core/messagebundle_ms.properties +15 -3
- package/src/sap/ui/core/messagebundle_nl.properties +15 -3
- package/src/sap/ui/core/messagebundle_no.properties +14 -2
- package/src/sap/ui/core/messagebundle_pl.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt_PT.properties +14 -2
- package/src/sap/ui/core/messagebundle_ro.properties +15 -3
- package/src/sap/ui/core/messagebundle_ru.properties +15 -3
- package/src/sap/ui/core/messagebundle_sh.properties +43 -31
- package/src/sap/ui/core/messagebundle_sk.properties +16 -4
- package/src/sap/ui/core/messagebundle_sl.properties +15 -3
- package/src/sap/ui/core/messagebundle_sv.properties +22 -10
- package/src/sap/ui/core/messagebundle_th.properties +15 -3
- package/src/sap/ui/core/messagebundle_tr.properties +15 -3
- package/src/sap/ui/core/messagebundle_uk.properties +18 -6
- package/src/sap/ui/core/messagebundle_vi.properties +18 -6
- package/src/sap/ui/core/messagebundle_zh_CN.properties +15 -3
- package/src/sap/ui/core/messagebundle_zh_TW.properties +15 -3
- package/src/sap/ui/core/mvc/Controller.js +22 -16
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -15
- package/src/sap/ui/core/mvc/HTMLView.js +2 -2
- package/src/sap/ui/core/mvc/JSONView.js +4 -1
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -0
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/OverrideExecution.js +4 -4
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +25 -15
- package/src/sap/ui/core/mvc/ViewType.js +2 -0
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -1
- package/src/sap/ui/core/plugin/LessSupport.js +3 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/routing/Router.js +2 -4
- package/src/sap/ui/core/routing/Target.js +1 -3
- package/src/sap/ui/core/routing/Targets.js +2 -3
- package/src/sap/ui/core/routing/Views.js +2 -3
- package/src/sap/ui/core/routing/async/Target.js +1 -1
- package/src/sap/ui/core/rules/Config.support.js +11 -17
- package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
- package/src/sap/ui/core/search/SearchProvider.js +2 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Hotkeys.js +5 -3
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -3
- package/src/sap/ui/core/support/Support.js +3 -5
- package/src/sap/ui/core/support/ToolsAPI.js +15 -11
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- package/src/sap/ui/core/support/plugins/Interaction.js +4 -4
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +7 -5
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -1
- package/src/sap/ui/core/syncStyleClass.js +2 -2
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +9 -9
- package/src/sap/ui/core/theming/Parameters.js +18 -19
- package/src/sap/ui/core/theming/ThemeManager.js +23 -4
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +3 -0
- package/src/sap/ui/core/util/_LocalizationHelper.js +122 -0
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +4 -4
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +29 -7
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +9 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +9 -4
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +2 -2
- package/src/sap/ui/model/Filter.js +39 -1
- package/src/sap/ui/model/FilterProcessor.js +15 -5
- package/src/sap/ui/model/ListBinding.js +5 -0
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +14 -8
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBinding.js +3 -0
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +3 -1
- package/src/sap/ui/model/json/JSONListBinding.js +3 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/json/JSONTreeBinding.js +3 -2
- package/src/sap/ui/model/message/MessageListBinding.js +3 -0
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +9 -3
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +8 -2
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +9 -5
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -2
- package/src/sap/ui/model/odata/ODataTreeBinding.js +2 -0
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +9 -14
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +40 -15
- package/src/sap/ui/model/odata/v2/ODataModel.js +26 -62
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +38 -4
- package/src/sap/ui/model/odata/v4/Context.js +81 -7
- package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +217 -75
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
- package/src/sap/ui/model/odata/v4/ODataModel.js +6 -6
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +406 -199
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +12 -7
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -30
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -4
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +6 -6
- package/src/sap/ui/model/resource/ResourceModel.js +5 -6
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLListBinding.js +3 -0
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/model/xml/XMLTreeBinding.js +3 -0
- package/src/sap/ui/performance/BeaconRequest.js +2 -2
- package/src/sap/ui/performance/trace/Interaction.js +20 -16
- package/src/sap/ui/qunit/QUnitUtils.js +64 -45
- package/src/sap/ui/qunit/qunit-coverage.js +6 -0
- package/src/sap/ui/qunit/utils/ControlIterator.js +31 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/security/Security.js +128 -0
- package/src/sap/ui/test/BlanketReporter.js +2 -3
- package/src/sap/ui/test/BlanketReporterUI.view.xml +1 -1
- package/src/sap/ui/test/BranchTracking.js +2 -3
- package/src/sap/ui/test/ModuleTracking.js +48 -20
- package/src/sap/ui/test/OpaExtension.js +3 -3
- package/src/sap/ui/test/OpaPlugin.js +16 -6
- package/src/sap/ui/test/TestUtils.js +7 -4
- package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
- package/src/sap/ui/test/_ControlFinder.js +3 -2
- package/src/sap/ui/test/_LogCollector.js +1 -0
- package/src/sap/ui/test/_UsageReport.js +115 -114
- package/src/sap/ui/test/actions/EnterText.js +24 -2
- package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -0
- package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -2
- package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
- package/src/sap/ui/test/generic/GenericTestCollection.js +5 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/Utils.js +1 -1
- package/src/sap/ui/test/matchers/LabelFor.js +2 -12
- package/src/sap/ui/test/matchers/Matcher.js +1 -1
- package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -0
- package/src/sap/ui/test/selectors/_Selector.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +84 -11
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/localService/mockserver.js +3 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/ChartAnnotation.fragment.xml +7 -7
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.view.xml +12 -13
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Facets.fragment.xml +4 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Field.fragment.xml +8 -8
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/FormFacet.fragment.xml +3 -5
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/LabeledField.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Table.fragment.xml +10 -10
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/TableFacet.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/HeaderInfo.fragment.xml +1 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Field.fragment.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Template.view.xml +19 -21
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/TemplateV4.view.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/pages/Any.js +7 -8
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +15 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +3 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +39 -16
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +18 -21
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +509 -395
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +586 -422
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +7 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +0 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +34 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +156 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Main.view.xml +5 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
- package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
- package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
- package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
- package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
- package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
- package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
- package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +2 -2
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +2 -3
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +2 -3
- package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
- package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +18 -0
- package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +4 -3
- package/test/sap/ui/core/qunit/Core.qunit.js +5 -14
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles_unavoidablyUsingEval.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Core_unavoidablyUsingEval.qunit.js +31 -30
- package/test/sap/ui/core/qunit/DataState.qunit.js +7 -4
- package/test/sap/ui/core/qunit/DuplicateIds.qunit.js +3 -0
- package/test/sap/ui/core/qunit/DuplicateIds_noError.qunit.js +4 -0
- package/test/sap/ui/core/qunit/Element_metadata_renderer.qunit.js +6 -0
- package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +144 -85
- package/test/sap/ui/core/qunit/HTML.qunit.js +87 -84
- package/test/sap/ui/core/qunit/InvisibleText.qunit.js +22 -1
- package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Lib.qunit.js +64 -1
- package/test/sap/ui/core/qunit/ListBinding.qunit.js +14 -1
- package/test/sap/ui/core/qunit/ManagedObject.qunit.js +90 -4
- package/test/sap/ui/core/qunit/ManagedObjectMetadata.qunit.js +41 -40
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +2 -1
- package/test/sap/ui/core/qunit/{ManagedObject_noBoot.qunit.js → ManagedObject_BindingParser.qunit.js} +10 -9
- package/test/sap/ui/core/qunit/Object.qunit.js +36 -0
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +86 -94
- package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +11 -97
- package/test/sap/ui/core/qunit/StaticBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/UIArea.qunit.js +34 -35
- package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/DesignMode_controllerDeactivated.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/DesignMode_suppressedDeactivation.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/_createDesignModeTests_legacyAPIs.qunit.js +8 -10
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +2 -2
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +49 -30
- package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +123 -10
- package/test/sap/ui/core/qunit/base/util/resolveReference.qunit.js +9 -0
- package/test/sap/ui/core/qunit/base/util/testdata/MyModule.js +5 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.beforeBootstrap.qunit.js +4 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.html +1 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +9 -10
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload_legacyAPIs.qunit.js +0 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinBody.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinHead.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +122 -266
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.js +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.js +16 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.js +14 -0
- package/test/sap/ui/core/qunit/bootstrap/ControlBehavior.qunit.js +110 -0
- package/test/sap/ui/core/qunit/bootstrap/PreloadCfg.qunit.js +4 -3
- package/test/sap/ui/core/qunit/bootstrap/ResourceRoot_ResourcesURL_Standard.qunit.html +1 -1
- package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.beforeBootstrap.qunit.js +2 -3
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +39 -34
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted_legacyAPIs.qunit.js +5 -1
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +51 -15
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.html +23 -0
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.js +1 -1
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery.sap.stubs.qunit.js +16 -20
- package/test/sap/ui/core/qunit/compat_legacyAPIs/testsuite.compat.qunit.js +1 -4
- package/test/sap/ui/core/qunit/component/Component.qunit.js +100 -7
- package/test/sap/ui/core/qunit/component/Models.qunit.js +3 -1
- package/test/sap/ui/core/qunit/component/Preloading.qunit.js +8 -12
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +8 -2
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +34 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +28 -0
- package/test/sap/ui/core/qunit/date/_Calendars.qunit.js +52 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaksUsingIterator.qunit.js +3 -4
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +15 -0
- package/test/sap/ui/core/qunit/generic/testsuite.generic.qunit.js +21 -0
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/testsuite.gherkin.qunit.js +3 -2
- package/test/sap/ui/core/qunit/i18n/Buddhist.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +217 -114
- package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +7 -4
- package/test/sap/ui/core/qunit/i18n/Japanese.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +341 -7
- package/test/sap/ui/core/qunit/i18n/Persian.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +10 -1
- package/test/sap/ui/core/qunit/i18n/helper/_timezones.js +17 -11
- package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
- package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +5 -1
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +2 -2
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
- package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +1 -2
- package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -1
- package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +2 -1
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.html +24 -0
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +12 -6
- package/test/sap/ui/core/qunit/jquery.sap.global-config_beforeBootstrap.qunit.js +1 -1
- package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +30 -0
- package/test/sap/ui/core/qunit/loader/exposeAsAMDLoader.qunit.html +1 -0
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientTreeBindingAdapter.qunit.js +6 -0
- package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Context.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Filter.qunit.js +49 -0
- package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +68 -1
- package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +23 -5
- package/test/sap/ui/core/qunit/model/Model.qunit.js +46 -2
- package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Sorter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +43 -3
- package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +107 -93
- package/test/sap/ui/core/qunit/mvc/View.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +17 -14
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +23 -12
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +29 -82
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML_unavoidablySync.qunit.js +123 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +16 -0
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +408 -419
- package/test/sap/ui/core/qunit/odata/AnnotationHelper.qunit.js +6 -4
- package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +16 -0
- package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +8 -1
- package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
- package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -1
- package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/type/DateTimeWithTimezone.qunit.js +6 -6
- package/test/sap/ui/core/qunit/odata/type/Time.qunit.js +3 -4
- package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +52 -29
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +952 -292
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +8 -15
- package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +6 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +215 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +211 -20
- package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +3 -2
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +69 -2
- package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +601 -99
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1896 -407
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +7 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +909 -422
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +21 -6
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +104 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +8 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +9 -9
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_V4MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +16 -0
- package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +17 -9
- package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +66 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_timeoutWaiter.js +11 -0
- package/test/sap/ui/core/qunit/opa/fixture/miniUI5Site.js +14 -8
- package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.js +18 -12
- package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
- package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
- package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +1 -0
- package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +5 -4
- package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +20 -18
- package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +1 -4
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/Component.js +2 -25
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/manifest.json +28 -0
- package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +1 -2
- package/test/sap/ui/core/qunit/testdata/libraries/scenario11/lib1/library.js +11 -0
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/integration/lib/library-preload.js +1 -1
- package/test/sap/ui/core/qunit/testdata/shortcutHints/Component.js +9 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.controller.js +8 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.view.xml +16 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/lib/MyControl.js +27 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/manifest.json +26 -0
- package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/library.js +4 -5
- package/test/sap/ui/core/qunit/testdata/uilib-failing-css-import/library.js +5 -6
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.controller.js +2 -1
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.view.xml +18 -1
- package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +3 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +0 -4
- package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +6 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.js +4 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.modular.core.qunit.js +1 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.security.qunit.js +3 -9
- package/test/sap/ui/core/qunit/types/DataType.qunit.js +14 -3
- package/test/sap/ui/core/qunit/types/Date.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +391 -147
- package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +32 -29
- package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +7 -4
- package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +5 -1
- package/test/sap/ui/core/qunit/types/ListFormat.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +5 -4
- package/test/sap/ui/core/qunit/types/NumberFormatCurrenciesTrailing.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/TimezoneUtil.qunit.js +23 -0
- package/test/sap/ui/core/qunit/types/Types.qunit.js +44 -10
- package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +592 -83
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-allowlist.js +7 -0
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-frameOptions.js +7 -0
- package/test/sap/ui/core/qunit/{bootstrap/CfgFromGlobalObject.qunit.html → util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.html} +7 -11
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.html +26 -0
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.js +3 -4
- package/test/sap/ui/core/qunit/{bootstrap/CfgDefaults.qunit.html → util/jQuery.sap.FrameOptions-meta-tag.qunit.html} +5 -8
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +10 -10
- package/test/sap/ui/core/qunit/util/jquery.sap.logger.qunit.html +18 -0
- package/test/sap/ui/core/qunit/util/jquery.sap.resources.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +1 -3
- package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +3 -0
- package/test/sap/ui/core/relnotes/changes-1.119.json +1 -12
- package/test/sap/ui/core/relnotes/changes-1.120.json +442 -0
- package/test/sap/ui/core/terminologies/App.controller.js +2 -3
- package/test/sap/ui/core/terminologies/main.js +2 -3
- package/test/sap/ui/test/qunit/TestUtils.qunit.js +3 -3
- package/src/sap/ui/core/ConfigTest.js +0 -17
- package/src/sap/ui/core/_ConfigurationProvider.js +0 -187
- package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +0 -57
- package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +0 -71
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.html +0 -29
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.beforeBootstrap.qunit.js +0 -20
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.html +0 -42
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +0 -49
- package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +0 -96
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-meta-tag.js +0 -10
- package/test/sap/ui/core/samples/mvc/JSONView.html +0 -65
|
@@ -4355,23 +4355,47 @@ sap.ui.define([
|
|
|
4355
4355
|
|
|
4356
4356
|
// code under test
|
|
4357
4357
|
oBinding.createContexts(0, [{
|
|
4358
|
-
"@$ui5._" : {predicate : "('1')"}
|
|
4358
|
+
"@$ui5._" : {context : "n/a", predicate : "('1')"}
|
|
4359
4359
|
}]);
|
|
4360
4360
|
|
|
4361
4361
|
assert.strictEqual(oBinding.aContexts[0], oCreatedContext);
|
|
4362
4362
|
assert.strictEqual(oCreatedContext.getModelIndex(), 0);
|
|
4363
4363
|
});
|
|
4364
4364
|
|
|
4365
|
+
//*********************************************************************************************
|
|
4366
|
+
QUnit.test("createContexts: reuse created from 'context' annotation", function (assert) {
|
|
4367
|
+
var oBinding = this.bindList("/EMPLOYEES"),
|
|
4368
|
+
oCreatedContext = Context.create(this.oModel, oBinding, "/EMPLOYEES('1')", -1,
|
|
4369
|
+
SyncPromise.resolve()),
|
|
4370
|
+
oNewContext = {};
|
|
4371
|
+
|
|
4372
|
+
oBinding.mPreviousContextsByPath = {
|
|
4373
|
+
"/EMPLOYEES('1')" : oCreatedContext
|
|
4374
|
+
};
|
|
4375
|
+
|
|
4376
|
+
this.mock(Context).expects("create").never();
|
|
4377
|
+
this.mock(this.oModel).expects("addPrerenderingTask")
|
|
4378
|
+
.withExactArgs(sinon.match.func).callsArg(0);
|
|
4379
|
+
this.mock(oCreatedContext).expects("destroy").withExactArgs();
|
|
4380
|
+
|
|
4381
|
+
oBinding.createContexts(0, [{
|
|
4382
|
+
"@$ui5._" : {context : oNewContext, predicate : "('1')"}
|
|
4383
|
+
}]);
|
|
4384
|
+
|
|
4385
|
+
assert.strictEqual(oBinding.aContexts[0], oNewContext);
|
|
4386
|
+
});
|
|
4387
|
+
|
|
4365
4388
|
//*********************************************************************************************
|
|
4366
4389
|
// undefined -> the reinsertion callback is not called because the binding already has another cache
|
|
4367
4390
|
[undefined, false, true].forEach(function (bSuccess) {
|
|
4368
4391
|
[false, true].forEach(function (bCreated) { // the deleted context is created-persisted
|
|
4369
4392
|
[undefined, false, true].forEach(function (bExpanded) { // undefined -> no hierarchy
|
|
4370
|
-
|
|
4371
|
-
+ ",
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4393
|
+
[false, true].forEach(function (bExpandFailure) {
|
|
4394
|
+
const sTitle = "delete: success=" + bSuccess + ", created=" + bCreated
|
|
4395
|
+
+ ", expanded=" + bExpanded + ", expandFailure=" + bExpandFailure;
|
|
4396
|
+
if (bCreated && bExpanded || bExpandFailure && (bSuccess || !bExpanded)) {
|
|
4397
|
+
return;
|
|
4398
|
+
}
|
|
4375
4399
|
|
|
4376
4400
|
QUnit.test(sTitle, function (assert) {
|
|
4377
4401
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
@@ -4413,7 +4437,7 @@ sap.ui.define([
|
|
|
4413
4437
|
oContext1Mock.expects("isDeleted").atLeast(1).withExactArgs().returns(false);
|
|
4414
4438
|
oContext1Mock.expects("isExpanded").withExactArgs().returns(bExpanded);
|
|
4415
4439
|
oBindingMock.expects("collapse").exactly(bExpanded ? 1 : 0)
|
|
4416
|
-
.withExactArgs(sinon.match.same(oContext1));
|
|
4440
|
+
.withExactArgs(sinon.match.same(oContext1), true);
|
|
4417
4441
|
oBindingMock.expects("destroyPreviousContexts").never();
|
|
4418
4442
|
oContext1Mock.expects("resetKeepAlive").never();
|
|
4419
4443
|
oDeleteCall = oContext1Mock.expects("doDelete")
|
|
@@ -4443,8 +4467,11 @@ sap.ui.define([
|
|
|
4443
4467
|
.withExactArgs([sContext1Path]);
|
|
4444
4468
|
// expectations for catch
|
|
4445
4469
|
oBindingMock.expects("expand").exactly(!bSuccess && bExpanded ? 1 : 0)
|
|
4446
|
-
.withExactArgs(sinon.match.same(oContext1))
|
|
4447
|
-
|
|
4470
|
+
.withExactArgs(sinon.match.same(oContext1), true)
|
|
4471
|
+
.returns(bExpandFailure
|
|
4472
|
+
? SyncPromise.reject("~oExpandError~")
|
|
4473
|
+
: SyncPromise.resolve());
|
|
4474
|
+
oBindingMock.expects("_fireChange").exactly(bSuccess || bExpandFailure ? 0 : 1)
|
|
4448
4475
|
.withExactArgs({reason : ChangeReason.Add});
|
|
4449
4476
|
|
|
4450
4477
|
return oDeleteFromCachePromise;
|
|
@@ -4509,16 +4536,21 @@ sap.ui.define([
|
|
|
4509
4536
|
assert.strictEqual(oBinding.iDeletedContexts, 4);
|
|
4510
4537
|
|
|
4511
4538
|
return oPromise.then(function () {
|
|
4512
|
-
assert.ok(bSuccess);
|
|
4539
|
+
assert.ok(bSuccess && !bExpandFailure);
|
|
4513
4540
|
assert.strictEqual(oBinding.iDeletedContexts, 3);
|
|
4514
4541
|
assert.strictEqual(oContext1.iIndex, Context.VIRTUAL);
|
|
4515
4542
|
}, function (oError) {
|
|
4516
|
-
assert.
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4543
|
+
assert.ok(!bSuccess || bExpandFailure);
|
|
4544
|
+
if (bExpandFailure) {
|
|
4545
|
+
assert.strictEqual(oError, "~oExpandError~");
|
|
4546
|
+
} else {
|
|
4547
|
+
assert.strictEqual(oError, "~oError~");
|
|
4548
|
+
assert.strictEqual(oBinding.iDeletedContexts, 3);
|
|
4549
|
+
sinon.assert.calledWithExactly(fnUndelete); // might be called twice
|
|
4550
|
+
}
|
|
4520
4551
|
});
|
|
4521
4552
|
});
|
|
4553
|
+
});
|
|
4522
4554
|
});
|
|
4523
4555
|
});
|
|
4524
4556
|
});
|
|
@@ -4682,13 +4714,6 @@ sap.ui.define([
|
|
|
4682
4714
|
// code under test
|
|
4683
4715
|
oBinding.delete("~oGroupLock~", "~sEditUrl~", oContext);
|
|
4684
4716
|
}, new Error("Unsupported kept-alive context: ~toString~"));
|
|
4685
|
-
|
|
4686
|
-
oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
|
|
4687
|
-
|
|
4688
|
-
assert.throws(function () {
|
|
4689
|
-
// code under test
|
|
4690
|
-
oBinding.delete("~oGroupLock~", "~sEditUrl~", {/*oContext*/});
|
|
4691
|
-
}, new Error("Unsupported $$aggregation.expandTo: 2"));
|
|
4692
4717
|
});
|
|
4693
4718
|
|
|
4694
4719
|
//*********************************************************************************************
|
|
@@ -5596,13 +5621,6 @@ sap.ui.define([
|
|
|
5596
5621
|
// code under test
|
|
5597
5622
|
oBinding.create({"@$ui5.node.parent" : oParentContext}, true);
|
|
5598
5623
|
}, new Error("Unsupported collapsed parent: ~toString~"));
|
|
5599
|
-
|
|
5600
|
-
oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
|
|
5601
|
-
|
|
5602
|
-
assert.throws(function () {
|
|
5603
|
-
// code under test
|
|
5604
|
-
oBinding.create();
|
|
5605
|
-
}, new Error("Unsupported $$aggregation.expandTo: 2"));
|
|
5606
5624
|
});
|
|
5607
5625
|
|
|
5608
5626
|
//*********************************************************************************************
|
|
@@ -5670,6 +5688,60 @@ sap.ui.define([
|
|
|
5670
5688
|
});
|
|
5671
5689
|
});
|
|
5672
5690
|
|
|
5691
|
+
//*********************************************************************************************
|
|
5692
|
+
[undefined, {"@$ui5.node.parent" : null}].forEach(function (oInitialData, i) {
|
|
5693
|
+
QUnit.test("create: recursive hierarchy, root #" + i, function (assert) {
|
|
5694
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
5695
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5696
|
+
// too far :-(
|
|
5697
|
+
oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
|
|
5698
|
+
oBinding.iMaxLength = 42;
|
|
5699
|
+
this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
|
|
5700
|
+
.returns("~oCreatePathPromise~");
|
|
5701
|
+
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
|
|
5702
|
+
.returns("~sGroupId~");
|
|
5703
|
+
this.mock(oBinding).expects("getResolvedPath").withExactArgs()
|
|
5704
|
+
.returns("~sResolvedPath~");
|
|
5705
|
+
this.mock(_Helper).expects("uid").withExactArgs().returns("id-1-23");
|
|
5706
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
5707
|
+
this.mock(_Helper).expects("isDataAggregation")
|
|
5708
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
5709
|
+
this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
|
|
5710
|
+
this.mock(oBinding).expects("checkDeepCreate").never();
|
|
5711
|
+
this.mock(oBinding).expects("isRelative").never();
|
|
5712
|
+
oBinding.aContexts.push({iIndex : 0}, undefined, {iIndex : 2});
|
|
5713
|
+
this.mock(_Helper).expects("publicClone")
|
|
5714
|
+
.withExactArgs(sinon.match.same(oInitialData), true).returns("~oEntityData~");
|
|
5715
|
+
this.mock(oBinding).expects("lockGroup")
|
|
5716
|
+
.withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
|
|
5717
|
+
this.mock(oBinding).expects("createInCache")
|
|
5718
|
+
.withExactArgs("~oGroupLock~", "~oCreatePathPromise~", "~sResolvedPath~",
|
|
5719
|
+
sinon.match(rTransientPredicate), "~oEntityData~",
|
|
5720
|
+
false, sinon.match.func, sinon.match.func)
|
|
5721
|
+
.returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
|
|
5722
|
+
const oContext = {fetchValue : mustBeMocked};
|
|
5723
|
+
this.mock(Context).expects("create")
|
|
5724
|
+
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
5725
|
+
"~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/0,
|
|
5726
|
+
sinon.match.instanceOf(SyncPromise), undefined)
|
|
5727
|
+
.returns(oContext);
|
|
5728
|
+
this.mock(oContext).expects("fetchValue").withExactArgs()
|
|
5729
|
+
.returns(SyncPromise.resolve()); //TODO
|
|
5730
|
+
this.mock(oBinding).expects("_fireChange")
|
|
5731
|
+
.withExactArgs({reason : ChangeReason.Add});
|
|
5732
|
+
|
|
5733
|
+
// code under test
|
|
5734
|
+
assert.strictEqual(oBinding.create(oInitialData, true), oContext);
|
|
5735
|
+
|
|
5736
|
+
assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
|
|
5737
|
+
assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
|
|
5738
|
+
assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
|
|
5739
|
+
assert.strictEqual(oBinding.iMaxLength, 43);
|
|
5740
|
+
assert.deepEqual(oBinding.aContexts,
|
|
5741
|
+
[oContext, {iIndex : 1}, undefined, {iIndex : 3}]);
|
|
5742
|
+
});
|
|
5743
|
+
});
|
|
5744
|
+
|
|
5673
5745
|
//*********************************************************************************************
|
|
5674
5746
|
QUnit.test("create and delete with bAtEnd varying", function () {
|
|
5675
5747
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
@@ -8323,16 +8395,18 @@ sap.ui.define([
|
|
|
8323
8395
|
oCreatedContext2 = { // in
|
|
8324
8396
|
getProperty : function () {}
|
|
8325
8397
|
},
|
|
8326
|
-
oContext0 = {}, // in
|
|
8327
|
-
oContext1 = {}, // in
|
|
8398
|
+
oContext0 = {getProperty : mustBeMocked}, // in
|
|
8399
|
+
oContext1 = {getProperty : mustBeMocked}, // in
|
|
8328
8400
|
oPreviousContext0 = { // in
|
|
8329
|
-
isEffectivelyKeptAlive : function () {}
|
|
8401
|
+
isEffectivelyKeptAlive : function () {},
|
|
8402
|
+
getProperty : mustBeMocked
|
|
8330
8403
|
},
|
|
8331
8404
|
oPreviousContext1 = { // out
|
|
8332
8405
|
isEffectivelyKeptAlive : function () {}
|
|
8333
8406
|
},
|
|
8334
8407
|
oPreviousContext2 = { // in
|
|
8335
|
-
isEffectivelyKeptAlive : function () {}
|
|
8408
|
+
isEffectivelyKeptAlive : function () {},
|
|
8409
|
+
getProperty : mustBeMocked
|
|
8336
8410
|
},
|
|
8337
8411
|
aResult;
|
|
8338
8412
|
|
|
@@ -8346,12 +8420,6 @@ sap.ui.define([
|
|
|
8346
8420
|
bar : oPreviousContext1,
|
|
8347
8421
|
baz : oPreviousContext2
|
|
8348
8422
|
};
|
|
8349
|
-
this.mock(oCreatedContext0).expects("getProperty")
|
|
8350
|
-
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8351
|
-
this.mock(oCreatedContext1).expects("getProperty")
|
|
8352
|
-
.withExactArgs("@$ui5.context.isTransient").returns(true);
|
|
8353
|
-
this.mock(oCreatedContext2).expects("getProperty")
|
|
8354
|
-
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8355
8423
|
this.mock(oBinding).expects("getCurrentContexts").withExactArgs()
|
|
8356
8424
|
.returns([oCreatedContext2, oContext0, oContext1, undefined]);
|
|
8357
8425
|
this.mock(oPreviousContext0).expects("isEffectivelyKeptAlive").withExactArgs()
|
|
@@ -8360,6 +8428,20 @@ sap.ui.define([
|
|
|
8360
8428
|
.returns(false);
|
|
8361
8429
|
this.mock(oPreviousContext2).expects("isEffectivelyKeptAlive").withExactArgs()
|
|
8362
8430
|
.returns(true);
|
|
8431
|
+
this.mock(oCreatedContext0).expects("getProperty")
|
|
8432
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8433
|
+
this.mock(oCreatedContext1).expects("getProperty")
|
|
8434
|
+
.withExactArgs("@$ui5.context.isTransient").returns(true);
|
|
8435
|
+
this.mock(oCreatedContext2).expects("getProperty")
|
|
8436
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8437
|
+
this.mock(oPreviousContext0).expects("getProperty")
|
|
8438
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8439
|
+
this.mock(oPreviousContext2).expects("getProperty")
|
|
8440
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8441
|
+
this.mock(oContext0).expects("getProperty")
|
|
8442
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8443
|
+
this.mock(oContext1).expects("getProperty")
|
|
8444
|
+
.withExactArgs("@$ui5.context.isTransient").returns(false);
|
|
8363
8445
|
this.mock(oBinding).expects("destroyLater").never();
|
|
8364
8446
|
|
|
8365
8447
|
// code under test
|
|
@@ -8385,46 +8467,83 @@ sap.ui.define([
|
|
|
8385
8467
|
});
|
|
8386
8468
|
|
|
8387
8469
|
//*********************************************************************************************
|
|
8388
|
-
|
|
8470
|
+
[false, true].forEach((bTransient) => {
|
|
8471
|
+
var sTitle = "keepOnlyVisibleContexts: destroy others, unless created; transient: "
|
|
8472
|
+
+ bTransient;
|
|
8473
|
+
|
|
8474
|
+
QUnit.test(sTitle, function (assert) {
|
|
8389
8475
|
var oBinding = this.bindList("/Set"),
|
|
8390
8476
|
oBindingMock = this.mock(oBinding),
|
|
8391
8477
|
oCreatedContext0 = { // out
|
|
8392
8478
|
getProperty : function () {},
|
|
8393
8479
|
iIndex : -1
|
|
8394
8480
|
},
|
|
8395
|
-
oContext0 = {iIndex : 0}, // to be destroyed
|
|
8396
|
-
oContext1 = {
|
|
8397
|
-
|
|
8398
|
-
|
|
8481
|
+
oContext0 = {iIndex : 0, created : mustBeMocked}, // to be destroyed
|
|
8482
|
+
oContext1 = { // NOT to be destroyed
|
|
8483
|
+
iIndex : 1,
|
|
8484
|
+
created : mustBeMocked,
|
|
8485
|
+
getProperty : mustBeMocked
|
|
8399
8486
|
},
|
|
8487
|
+
oContext2 = {iIndex : 2, created : mustBeMocked}, // to be destroyed
|
|
8400
8488
|
oContext3 = { // in
|
|
8401
|
-
iIndex : 3
|
|
8489
|
+
iIndex : 3,
|
|
8490
|
+
getProperty : mustBeMocked
|
|
8491
|
+
},
|
|
8492
|
+
oContext4 = { // in
|
|
8493
|
+
iIndex : 4,
|
|
8494
|
+
getProperty : mustBeMocked
|
|
8402
8495
|
},
|
|
8403
|
-
|
|
8404
|
-
|
|
8496
|
+
oContext5 = {iIndex : 5, created : mustBeMocked}, // to be destroyed
|
|
8497
|
+
oContext6 = { // NOT to be destroyed
|
|
8498
|
+
iIndex : 6,
|
|
8499
|
+
created : mustBeMocked,
|
|
8500
|
+
getProperty : mustBeMocked
|
|
8501
|
+
},
|
|
8502
|
+
oContext7 = {iIndex : 7, created : mustBeMocked}, // to be destroyed
|
|
8405
8503
|
aResult;
|
|
8406
8504
|
|
|
8407
8505
|
oBinding.aContexts = [oCreatedContext0, oContext0, oContext1, oContext2, oContext3,
|
|
8408
|
-
oContext4, oContext5];
|
|
8506
|
+
oContext4, oContext5, oContext6, oContext7];
|
|
8409
8507
|
oBinding.iCreatedContexts = 1;
|
|
8410
|
-
oBinding.iCurrentBegin =
|
|
8411
|
-
oBinding.iCurrentEnd =
|
|
8412
|
-
oBindingMock.expects("getCurrentContexts").withExactArgs().returns([
|
|
8508
|
+
oBinding.iCurrentBegin = 4;
|
|
8509
|
+
oBinding.iCurrentEnd = 6;
|
|
8510
|
+
oBindingMock.expects("getCurrentContexts").withExactArgs().returns([oContext3, oContext4]);
|
|
8413
8511
|
this.mock(oCreatedContext0).expects("getProperty")
|
|
8414
8512
|
.withExactArgs("@$ui5.context.isTransient").returns(true);
|
|
8513
|
+
this.mock(oContext0).expects("created").withExactArgs().returns(undefined);
|
|
8514
|
+
this.mock(oContext1).expects("created").withExactArgs().returns(Promise.resolve());
|
|
8515
|
+
this.mock(oContext2).expects("created").withExactArgs().returns(undefined);
|
|
8516
|
+
this.mock(oContext5).expects("created").withExactArgs().returns(undefined);
|
|
8517
|
+
this.mock(oContext6).expects("created").withExactArgs().returns(Promise.resolve());
|
|
8518
|
+
this.mock(oContext7).expects("created").withExactArgs().returns(undefined);
|
|
8415
8519
|
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(oContext0));
|
|
8416
|
-
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(
|
|
8417
|
-
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(oContext4));
|
|
8520
|
+
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(oContext2));
|
|
8418
8521
|
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(oContext5));
|
|
8522
|
+
oBindingMock.expects("destroyLater").on(oBinding).withArgs(sinon.match.same(oContext7));
|
|
8523
|
+
this.mock(oContext1).expects("getProperty")
|
|
8524
|
+
.withExactArgs("@$ui5.context.isTransient").returns(bTransient);
|
|
8525
|
+
this.mock(oContext3).expects("getProperty")
|
|
8526
|
+
.withExactArgs("@$ui5.context.isTransient").returns(bTransient);
|
|
8527
|
+
this.mock(oContext4).expects("getProperty")
|
|
8528
|
+
.withExactArgs("@$ui5.context.isTransient").returns(bTransient);
|
|
8529
|
+
this.mock(oContext6).expects("getProperty")
|
|
8530
|
+
.withExactArgs("@$ui5.context.isTransient").returns(bTransient);
|
|
8419
8531
|
|
|
8420
8532
|
// code under test
|
|
8421
8533
|
aResult = oBinding.keepOnlyVisibleContexts();
|
|
8422
8534
|
|
|
8423
|
-
|
|
8424
|
-
|
|
8425
|
-
|
|
8426
|
-
|
|
8535
|
+
if (bTransient) { // transient ones cannot be requested
|
|
8536
|
+
assert.deepEqual(aResult, []);
|
|
8537
|
+
} else {
|
|
8538
|
+
assert.deepEqual(aResult, [oContext3, oContext4, oContext1, oContext6]);
|
|
8539
|
+
assert.strictEqual(aResult[0], oContext3);
|
|
8540
|
+
assert.strictEqual(aResult[1], oContext4);
|
|
8541
|
+
assert.strictEqual(aResult[2], oContext1);
|
|
8542
|
+
assert.strictEqual(aResult[3], oContext6);
|
|
8543
|
+
}
|
|
8544
|
+
assert.deepEqual(oBinding.aContexts, [oCreatedContext0,,,, oContext3, oContext4]);
|
|
8427
8545
|
});
|
|
8546
|
+
});
|
|
8428
8547
|
|
|
8429
8548
|
//*********************************************************************************************
|
|
8430
8549
|
QUnit.test("keepOnlyVisibleContexts: only created are visible", function (assert) {
|
|
@@ -8465,6 +8584,247 @@ sap.ui.define([
|
|
|
8465
8584
|
[oCreatedContext0, oCreatedContext1, oCreatedContext2]);
|
|
8466
8585
|
});
|
|
8467
8586
|
|
|
8587
|
+
//*********************************************************************************************
|
|
8588
|
+
QUnit.test("getParent: given node is a root node", function (assert) {
|
|
8589
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8590
|
+
const oNode = {iIndex : 23};
|
|
8591
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8592
|
+
// too far
|
|
8593
|
+
oBinding.mParameters = {
|
|
8594
|
+
$$aggregation : {
|
|
8595
|
+
expandTo : 1,
|
|
8596
|
+
hierarchyQualifier : "X"
|
|
8597
|
+
}
|
|
8598
|
+
};
|
|
8599
|
+
oBinding.aContexts[23] = oNode;
|
|
8600
|
+
oBinding.oCache = {getParentIndex : mustBeMocked};
|
|
8601
|
+
|
|
8602
|
+
this.mock(oBinding.oCache).expects("getParentIndex").withExactArgs(23)
|
|
8603
|
+
.returns(-1);
|
|
8604
|
+
|
|
8605
|
+
// code under test
|
|
8606
|
+
assert.strictEqual(oBinding.getParent(oNode), null);
|
|
8607
|
+
});
|
|
8608
|
+
|
|
8609
|
+
//*********************************************************************************************
|
|
8610
|
+
QUnit.test("getParent: throws error if expandTo > 1", function (assert) {
|
|
8611
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8612
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8613
|
+
// too far
|
|
8614
|
+
oBinding.mParameters = {
|
|
8615
|
+
$$aggregation : {
|
|
8616
|
+
expandTo : 2,
|
|
8617
|
+
hierarchyQualifier : "X"
|
|
8618
|
+
}
|
|
8619
|
+
};
|
|
8620
|
+
|
|
8621
|
+
assert.throws(function () {
|
|
8622
|
+
// code under test
|
|
8623
|
+
oBinding.getParent();
|
|
8624
|
+
}, new Error("Unsupported $$aggregation.expandTo: 2"));
|
|
8625
|
+
});
|
|
8626
|
+
|
|
8627
|
+
//*********************************************************************************************
|
|
8628
|
+
QUnit.test("getParent: Missing recursive hierarchy", function (assert) {
|
|
8629
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8630
|
+
|
|
8631
|
+
assert.throws(function () {
|
|
8632
|
+
// code under test
|
|
8633
|
+
oBinding.getParent();
|
|
8634
|
+
}, new Error("Missing recursive hierarchy"));
|
|
8635
|
+
|
|
8636
|
+
oBinding.mParameters = {$$aggregation : {}};
|
|
8637
|
+
|
|
8638
|
+
assert.throws(function () {
|
|
8639
|
+
// code under test
|
|
8640
|
+
oBinding.getParent();
|
|
8641
|
+
}, new Error("Missing recursive hierarchy"));
|
|
8642
|
+
});
|
|
8643
|
+
|
|
8644
|
+
//*********************************************************************************************
|
|
8645
|
+
QUnit.test("getParent: given node is not part of a recursive hierachy", function (assert) {
|
|
8646
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8647
|
+
const oNode = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 23);
|
|
8648
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8649
|
+
// too far
|
|
8650
|
+
oBinding.mParameters = {
|
|
8651
|
+
$$aggregation : {
|
|
8652
|
+
expandTo : 1,
|
|
8653
|
+
hierarchyQualifier : "X"
|
|
8654
|
+
}
|
|
8655
|
+
};
|
|
8656
|
+
|
|
8657
|
+
assert.throws(function () {
|
|
8658
|
+
// code under test
|
|
8659
|
+
oBinding.getParent(oNode);
|
|
8660
|
+
}, new Error("Not currently part of a recursive hierarchy: " + oNode));
|
|
8661
|
+
});
|
|
8662
|
+
|
|
8663
|
+
//*********************************************************************************************
|
|
8664
|
+
QUnit.test("getParent", function (assert) {
|
|
8665
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8666
|
+
const oNode = {iIndex : 42};
|
|
8667
|
+
const oParentContext = {};
|
|
8668
|
+
|
|
8669
|
+
oBinding.aContexts[23] = oParentContext;
|
|
8670
|
+
oBinding.aContexts[42] = oNode;
|
|
8671
|
+
oBinding.oCache = {getParentIndex : mustBeMocked};
|
|
8672
|
+
|
|
8673
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8674
|
+
// too far
|
|
8675
|
+
oBinding.mParameters = {
|
|
8676
|
+
$$aggregation : {
|
|
8677
|
+
expandTo : 1,
|
|
8678
|
+
hierarchyQualifier : "X"
|
|
8679
|
+
}
|
|
8680
|
+
};
|
|
8681
|
+
|
|
8682
|
+
this.mock(oBinding.oCache).expects("getParentIndex").withExactArgs(42)
|
|
8683
|
+
.returns(23);
|
|
8684
|
+
|
|
8685
|
+
// code under test
|
|
8686
|
+
assert.strictEqual(oBinding.getParent(oNode), oParentContext);
|
|
8687
|
+
});
|
|
8688
|
+
|
|
8689
|
+
//*********************************************************************************************
|
|
8690
|
+
QUnit.test("requestParent: Missing recursive hierarchy", function (assert) {
|
|
8691
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8692
|
+
|
|
8693
|
+
assert.throws(function () {
|
|
8694
|
+
// code under test
|
|
8695
|
+
oBinding.requestParent();
|
|
8696
|
+
}, new Error("Missing recursive hierarchy"));
|
|
8697
|
+
|
|
8698
|
+
oBinding.mParameters = {$$aggregation : {}};
|
|
8699
|
+
|
|
8700
|
+
assert.throws(function () {
|
|
8701
|
+
// code under test
|
|
8702
|
+
oBinding.requestParent();
|
|
8703
|
+
}, new Error("Missing recursive hierarchy"));
|
|
8704
|
+
});
|
|
8705
|
+
|
|
8706
|
+
//*********************************************************************************************
|
|
8707
|
+
QUnit.test("requestParent: throws error if expandTo > 1", function (assert) {
|
|
8708
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8709
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8710
|
+
// too far
|
|
8711
|
+
oBinding.mParameters = {
|
|
8712
|
+
$$aggregation : {
|
|
8713
|
+
expandTo : 2,
|
|
8714
|
+
hierarchyQualifier : "X"
|
|
8715
|
+
}
|
|
8716
|
+
};
|
|
8717
|
+
|
|
8718
|
+
assert.throws(function () {
|
|
8719
|
+
// code under test
|
|
8720
|
+
oBinding.requestParent();
|
|
8721
|
+
}, new Error("Unsupported $$aggregation.expandTo: 2"));
|
|
8722
|
+
});
|
|
8723
|
+
|
|
8724
|
+
//*********************************************************************************************
|
|
8725
|
+
QUnit.test("requestParent: given node is not part of a recursive hierachy", function (assert) {
|
|
8726
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8727
|
+
const oNode = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 23);
|
|
8728
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8729
|
+
// too far
|
|
8730
|
+
oBinding.mParameters = {
|
|
8731
|
+
$$aggregation : {
|
|
8732
|
+
expandTo : 1,
|
|
8733
|
+
hierarchyQualifier : "X"
|
|
8734
|
+
}
|
|
8735
|
+
};
|
|
8736
|
+
|
|
8737
|
+
assert.throws(function () {
|
|
8738
|
+
// code under test
|
|
8739
|
+
oBinding.requestParent(oNode);
|
|
8740
|
+
}, new Error("Not currently part of a recursive hierarchy: " + oNode));
|
|
8741
|
+
});
|
|
8742
|
+
|
|
8743
|
+
//*********************************************************************************************
|
|
8744
|
+
QUnit.test("requestParent: given node is a root node", async function (assert) {
|
|
8745
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8746
|
+
const oNode = {iIndex : 23};
|
|
8747
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8748
|
+
// too far
|
|
8749
|
+
oBinding.mParameters = {
|
|
8750
|
+
$$aggregation : {
|
|
8751
|
+
expandTo : 1,
|
|
8752
|
+
hierarchyQualifier : "X"
|
|
8753
|
+
}
|
|
8754
|
+
};
|
|
8755
|
+
oBinding.aContexts[23] = oNode;
|
|
8756
|
+
oBinding.oCache = {getParentIndex : mustBeMocked};
|
|
8757
|
+
|
|
8758
|
+
this.mock(oBinding.oCache).expects("getParentIndex").withExactArgs(23)
|
|
8759
|
+
.returns(-1);
|
|
8760
|
+
|
|
8761
|
+
// code under test
|
|
8762
|
+
const oPromise = oBinding.requestParent(oNode);
|
|
8763
|
+
assert.ok(oPromise instanceof Promise);
|
|
8764
|
+
assert.strictEqual(await oPromise, null);
|
|
8765
|
+
});
|
|
8766
|
+
|
|
8767
|
+
//*********************************************************************************************
|
|
8768
|
+
QUnit.test("requestParent", async function (assert) {
|
|
8769
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8770
|
+
const oNode = {iIndex : 42};
|
|
8771
|
+
const oParentContext = {};
|
|
8772
|
+
|
|
8773
|
+
oBinding.aContexts[42] = oNode;
|
|
8774
|
+
oBinding.oCache = {getParentIndex : mustBeMocked};
|
|
8775
|
+
|
|
8776
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8777
|
+
// too far
|
|
8778
|
+
oBinding.mParameters = {
|
|
8779
|
+
$$aggregation : {
|
|
8780
|
+
expandTo : 1,
|
|
8781
|
+
hierarchyQualifier : "X"
|
|
8782
|
+
}
|
|
8783
|
+
};
|
|
8784
|
+
|
|
8785
|
+
this.mock(oBinding.oCache).expects("getParentIndex").withExactArgs(42)
|
|
8786
|
+
.returns("~iParentIndex~");
|
|
8787
|
+
this.mock(oBinding).expects("requestContexts").withExactArgs("~iParentIndex~", 1)
|
|
8788
|
+
.resolves([oParentContext]);
|
|
8789
|
+
|
|
8790
|
+
// code under test
|
|
8791
|
+
const oPromise = oBinding.requestParent(oNode);
|
|
8792
|
+
assert.ok(oPromise instanceof Promise);
|
|
8793
|
+
assert.strictEqual(await oPromise, oParentContext);
|
|
8794
|
+
});
|
|
8795
|
+
|
|
8796
|
+
//*********************************************************************************************
|
|
8797
|
+
QUnit.test("requestParent: requestContexts rejects", function (assert) {
|
|
8798
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
8799
|
+
const oNode = {iIndex : 42};
|
|
8800
|
+
|
|
8801
|
+
oBinding.aContexts[42] = oNode;
|
|
8802
|
+
oBinding.oCache = {getParentIndex : mustBeMocked};
|
|
8803
|
+
|
|
8804
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
8805
|
+
// too far
|
|
8806
|
+
oBinding.mParameters = {
|
|
8807
|
+
$$aggregation : {
|
|
8808
|
+
expandTo : 1,
|
|
8809
|
+
hierarchyQualifier : "X"
|
|
8810
|
+
}
|
|
8811
|
+
};
|
|
8812
|
+
|
|
8813
|
+
this.mock(oBinding.oCache).expects("getParentIndex").withExactArgs(42)
|
|
8814
|
+
.returns("~iParentIndex~");
|
|
8815
|
+
const oError = new Error();
|
|
8816
|
+
this.mock(oBinding).expects("requestContexts").withExactArgs("~iParentIndex~", 1)
|
|
8817
|
+
.rejects(oError);
|
|
8818
|
+
|
|
8819
|
+
// code under test
|
|
8820
|
+
return oBinding.requestParent(oNode)
|
|
8821
|
+
.then(function () {
|
|
8822
|
+
assert.ok(false);
|
|
8823
|
+
}, function (oReturnedError) {
|
|
8824
|
+
assert.strictEqual(oReturnedError, oError);
|
|
8825
|
+
});
|
|
8826
|
+
});
|
|
8827
|
+
|
|
8468
8828
|
//*********************************************************************************************
|
|
8469
8829
|
QUnit.test("getQueryOptions: with system query options", function (assert) {
|
|
8470
8830
|
var oBinding = this.bindList("/Set");
|
|
@@ -8922,8 +9282,9 @@ sap.ui.define([
|
|
|
8922
9282
|
[false, true].forEach(function (bSuccess) {
|
|
8923
9283
|
[false, true].forEach(function (bDataRequested) {
|
|
8924
9284
|
[0, 3].forEach(function (iCount) { // 0 means collapse before expand has finished
|
|
8925
|
-
|
|
8926
|
-
|
|
9285
|
+
[false, true].forEach((bSilent) => {
|
|
9286
|
+
var sTitle = "expand: success=" + bSuccess + ", data requested=" + bDataRequested
|
|
9287
|
+
+ ", count=" + iCount + ", silent=" + bSilent;
|
|
8927
9288
|
|
|
8928
9289
|
if (!bSuccess && !iCount) { // ignore useless combination
|
|
8929
9290
|
return;
|
|
@@ -8937,10 +9298,10 @@ sap.ui.define([
|
|
|
8937
9298
|
toString : function () { return "~context~"; }
|
|
8938
9299
|
},
|
|
8939
9300
|
oChangeCall,
|
|
8940
|
-
aContextsBefore,
|
|
8941
9301
|
oDataReceivedCall,
|
|
8942
9302
|
oError = new Error(),
|
|
8943
9303
|
oExpectation,
|
|
9304
|
+
oGapCall,
|
|
8944
9305
|
oGroupLock = {},
|
|
8945
9306
|
oPromise,
|
|
8946
9307
|
that = this;
|
|
@@ -8948,9 +9309,6 @@ sap.ui.define([
|
|
|
8948
9309
|
oBinding.oCache = { // simulate an aggregation cache
|
|
8949
9310
|
expand : function () {}
|
|
8950
9311
|
};
|
|
8951
|
-
oBinding.createContexts(0, createData(2, 0, true, 5));
|
|
8952
|
-
oBinding.createContexts(3, createData(2, 3, true, 5));
|
|
8953
|
-
aContextsBefore = oBinding.aContexts.slice();
|
|
8954
9312
|
|
|
8955
9313
|
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
8956
9314
|
this.mock(oBinding).expects("lockGroup").withExactArgs().returns(oGroupLock);
|
|
@@ -8965,8 +9323,11 @@ sap.ui.define([
|
|
|
8965
9323
|
.returns(Promise.resolve().then(function () {
|
|
8966
9324
|
if (bSuccess) {
|
|
8967
9325
|
that.mock(oContext).expects("getModelIndex").exactly(iCount ? 1 : 0)
|
|
8968
|
-
.withExactArgs().returns(
|
|
8969
|
-
|
|
9326
|
+
.withExactArgs().returns("~iModelIndex~");
|
|
9327
|
+
oGapCall = that.mock(oBinding).expects("insertGap").exactly(iCount ? 1 : 0)
|
|
9328
|
+
.withExactArgs("~iModelIndex~", iCount);
|
|
9329
|
+
oChangeCall = that.mock(oBinding).expects("_fireChange")
|
|
9330
|
+
.exactly(iCount && !bSilent ? 1 : 0)
|
|
8970
9331
|
.withExactArgs({reason : ChangeReason.Change});
|
|
8971
9332
|
oDataReceivedCall = that.mock(oBinding).expects("fireDataReceived")
|
|
8972
9333
|
.exactly(bDataRequested ? 1 : 0).withExactArgs({});
|
|
@@ -8980,32 +9341,14 @@ sap.ui.define([
|
|
|
8980
9341
|
}));
|
|
8981
9342
|
|
|
8982
9343
|
// code under test
|
|
8983
|
-
oPromise = oBinding.expand(oContext).then(function () {
|
|
9344
|
+
oPromise = oBinding.expand(oContext, bSilent).then(function () {
|
|
8984
9345
|
assert.ok(bSuccess);
|
|
8985
|
-
assert.strictEqual(oBinding.getLength(), 5 + iCount);
|
|
8986
|
-
assert.strictEqual(oBinding.aContexts.length, 5 + iCount);
|
|
8987
|
-
assert.strictEqual(oBinding.aContexts[0], aContextsBefore[0], "0");
|
|
8988
|
-
assert.strictEqual(oBinding.aContexts[0].iIndex, 0);
|
|
8989
|
-
assert.strictEqual(oBinding.aContexts[1], aContextsBefore[1], "1");
|
|
8990
|
-
assert.strictEqual(oBinding.aContexts[1].iIndex, 1);
|
|
8991
|
-
assert.notOk(2 in oBinding.aContexts, "2");
|
|
8992
|
-
if (iCount) {
|
|
8993
|
-
assert.notOk(3 in oBinding.aContexts, "3");
|
|
8994
|
-
assert.notOk(4 in oBinding.aContexts, "4");
|
|
8995
|
-
assert.notOk(5 in oBinding.aContexts, "5");
|
|
8996
|
-
assert.strictEqual(oBinding.aContexts[6], aContextsBefore[3], "6");
|
|
8997
|
-
assert.strictEqual(oBinding.aContexts[6].iIndex, 6);
|
|
8998
|
-
assert.strictEqual(oBinding.aContexts[7], aContextsBefore[4], "7");
|
|
8999
|
-
assert.strictEqual(oBinding.aContexts[7].iIndex, 7);
|
|
9000
|
-
} else {
|
|
9001
|
-
assert.strictEqual(oBinding.aContexts[3], aContextsBefore[3], "3");
|
|
9002
|
-
assert.strictEqual(oBinding.aContexts[3].iIndex, 3);
|
|
9003
|
-
assert.strictEqual(oBinding.aContexts[4], aContextsBefore[4], "4");
|
|
9004
|
-
assert.strictEqual(oBinding.aContexts[4].iIndex, 4);
|
|
9005
|
-
}
|
|
9006
|
-
|
|
9007
9346
|
if (bDataRequested && iCount) {
|
|
9008
|
-
|
|
9347
|
+
if (bSilent) {
|
|
9348
|
+
sinon.assert.callOrder(oGapCall, oDataReceivedCall);
|
|
9349
|
+
} else {
|
|
9350
|
+
sinon.assert.callOrder(oGapCall, oChangeCall, oDataReceivedCall);
|
|
9351
|
+
}
|
|
9009
9352
|
}
|
|
9010
9353
|
}, function (oResult) {
|
|
9011
9354
|
assert.notOk(bSuccess);
|
|
@@ -9020,11 +9363,38 @@ sap.ui.define([
|
|
|
9020
9363
|
|
|
9021
9364
|
return oPromise;
|
|
9022
9365
|
});
|
|
9023
|
-
|
|
9366
|
+
});
|
|
9024
9367
|
});
|
|
9025
9368
|
});
|
|
9026
9369
|
});
|
|
9027
9370
|
|
|
9371
|
+
//*********************************************************************************************
|
|
9372
|
+
QUnit.test("insertGap", function (assert) {
|
|
9373
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
9374
|
+
oBinding.createContexts(0, createData(2, 0, true, 5));
|
|
9375
|
+
oBinding.createContexts(3, createData(2, 3, true, 5));
|
|
9376
|
+
const aContextsBefore = oBinding.aContexts.slice();
|
|
9377
|
+
|
|
9378
|
+
// code under test
|
|
9379
|
+
oBinding.insertGap(1, 3);
|
|
9380
|
+
|
|
9381
|
+
assert.strictEqual(oBinding.getLength(), 5 + 3);
|
|
9382
|
+
assert.strictEqual(oBinding.aContexts.length, 5 + 3);
|
|
9383
|
+
assert.strictEqual(oBinding.aContexts[0], aContextsBefore[0], "0");
|
|
9384
|
+
assert.strictEqual(oBinding.aContexts[0].iIndex, 0);
|
|
9385
|
+
assert.strictEqual(oBinding.aContexts[1], aContextsBefore[1], "1");
|
|
9386
|
+
assert.strictEqual(oBinding.aContexts[1].iIndex, 1);
|
|
9387
|
+
assert.notOk(2 in oBinding.aContexts, "2");
|
|
9388
|
+
assert.notOk(3 in oBinding.aContexts, "3");
|
|
9389
|
+
assert.notOk(4 in oBinding.aContexts, "4");
|
|
9390
|
+
assert.notOk(5 in oBinding.aContexts, "5");
|
|
9391
|
+
assert.strictEqual(oBinding.aContexts[6], aContextsBefore[3], "6");
|
|
9392
|
+
assert.strictEqual(oBinding.aContexts[6].iIndex, 6);
|
|
9393
|
+
assert.strictEqual(oBinding.aContexts[7], aContextsBefore[4], "7");
|
|
9394
|
+
assert.strictEqual(oBinding.aContexts[7].iIndex, 7);
|
|
9395
|
+
});
|
|
9396
|
+
// TODO aContexts may be sparse
|
|
9397
|
+
|
|
9028
9398
|
//*********************************************************************************************
|
|
9029
9399
|
[0, 3].forEach((iCount) => {
|
|
9030
9400
|
[false, true].forEach((bSilent) => {
|
|
@@ -9043,6 +9413,9 @@ sap.ui.define([
|
|
|
9043
9413
|
function createContextDummy(i) {
|
|
9044
9414
|
return {
|
|
9045
9415
|
iIndex : i,
|
|
9416
|
+
created : function () { // every odd context looks "created"
|
|
9417
|
+
return i % 2 ? Promise.resolve() : undefined;
|
|
9418
|
+
},
|
|
9046
9419
|
getPath : function () {
|
|
9047
9420
|
return "/EMPLOYEES/" + i;
|
|
9048
9421
|
}
|
|
@@ -9091,7 +9464,7 @@ sap.ui.define([
|
|
|
9091
9464
|
});
|
|
9092
9465
|
assert.deepEqual(oBinding.mPreviousContextsByPath, {
|
|
9093
9466
|
"/EMPLOYEES/2" : aContextsBefore[2],
|
|
9094
|
-
"/EMPLOYEES/3" : aContextsBefore[3],
|
|
9467
|
+
// "/EMPLOYEES/3" : aContextsBefore[3], // "created" not inserted here!
|
|
9095
9468
|
"/EMPLOYEES/4" : aContextsBefore[4]
|
|
9096
9469
|
});
|
|
9097
9470
|
} else {
|
|
@@ -10161,6 +10534,69 @@ sap.ui.define([
|
|
|
10161
10534
|
assert.strictEqual(oBinding.isFirstCreateAtEnd(), "~foo~");
|
|
10162
10535
|
});
|
|
10163
10536
|
|
|
10537
|
+
//*********************************************************************************************
|
|
10538
|
+
QUnit.test("isAncestorOf: Missing recursive hierarchy", function (assert) {
|
|
10539
|
+
const oBinding1 = this.bindList("/EMPLOYEES");
|
|
10540
|
+
assert.throws(function () {
|
|
10541
|
+
// code under test
|
|
10542
|
+
oBinding1.isAncestorOf();
|
|
10543
|
+
}, new Error("Missing recursive hierarchy"));
|
|
10544
|
+
|
|
10545
|
+
const oBinding2 = this.bindList("/EMPLOYEES", undefined, undefined, undefined,
|
|
10546
|
+
{$$aggregation : {}}); // Note: no hierarchyQualifier!
|
|
10547
|
+
assert.throws(function () {
|
|
10548
|
+
// code under test
|
|
10549
|
+
oBinding2.isAncestorOf();
|
|
10550
|
+
}, new Error("Missing recursive hierarchy"));
|
|
10551
|
+
});
|
|
10552
|
+
|
|
10553
|
+
//*********************************************************************************************
|
|
10554
|
+
[0, 1].forEach((iIndex) => {
|
|
10555
|
+
const sTitle = `isAncestorOf: Not currently part of a recursive hierarchy; iIndex = ${iIndex}`;
|
|
10556
|
+
|
|
10557
|
+
QUnit.test(sTitle, function (assert) {
|
|
10558
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
10559
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
10560
|
+
// too far :-(
|
|
10561
|
+
oBinding.mParameters = {$$aggregation : {hierarchyQualifier : "X"}};
|
|
10562
|
+
const oAncestor = {
|
|
10563
|
+
iIndex : iIndex, // 1 is correct
|
|
10564
|
+
toString : () => "~oAncestor~"
|
|
10565
|
+
};
|
|
10566
|
+
oBinding.aContexts[1] = oAncestor;
|
|
10567
|
+
const oDescendant = {
|
|
10568
|
+
iIndex : 42, // 42 always wrong
|
|
10569
|
+
toString : () => "~oDescendant~"
|
|
10570
|
+
};
|
|
10571
|
+
|
|
10572
|
+
assert.throws(function () {
|
|
10573
|
+
// code under test
|
|
10574
|
+
oBinding.isAncestorOf(oAncestor, oDescendant);
|
|
10575
|
+
}, new Error("Not currently part of a recursive hierarchy: "
|
|
10576
|
+
+ (iIndex ? "~oDescendant~" : "~oAncestor~")));
|
|
10577
|
+
});
|
|
10578
|
+
});
|
|
10579
|
+
|
|
10580
|
+
//*********************************************************************************************
|
|
10581
|
+
QUnit.test("isAncestorOf", function (assert) {
|
|
10582
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
10583
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
10584
|
+
// too far :-(
|
|
10585
|
+
oBinding.mParameters = {$$aggregation : {hierarchyQualifier : "X"}};
|
|
10586
|
+
const oAncestor = {iIndex : 23};
|
|
10587
|
+
oBinding.aContexts[23] = oAncestor;
|
|
10588
|
+
const oDescendant = {iIndex : 42};
|
|
10589
|
+
oBinding.aContexts[42] = oDescendant;
|
|
10590
|
+
oBinding.oCache = {
|
|
10591
|
+
isAncestorOf : mustBeMocked
|
|
10592
|
+
};
|
|
10593
|
+
this.mock(oBinding.oCache).expects("isAncestorOf").withExactArgs(23, 42)
|
|
10594
|
+
.returns("~result~");
|
|
10595
|
+
|
|
10596
|
+
// code under test
|
|
10597
|
+
assert.strictEqual(oBinding.isAncestorOf(oAncestor, oDescendant), "~result~");
|
|
10598
|
+
});
|
|
10599
|
+
|
|
10164
10600
|
//*********************************************************************************************
|
|
10165
10601
|
QUnit.test("restoreCreated", function (assert) {
|
|
10166
10602
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
@@ -10309,8 +10745,9 @@ sap.ui.define([
|
|
|
10309
10745
|
[false, true].forEach((bCreated) => {
|
|
10310
10746
|
[-1, +1, 0].forEach((iDirection) => { // child is before or after parent (or right in place)
|
|
10311
10747
|
[false, true].forEach((bIsExpanded) => {
|
|
10312
|
-
|
|
10313
|
-
|
|
10748
|
+
[1, 4].forEach((iCount) => {
|
|
10749
|
+
const sTitle = `move: created=${bCreated}, direction=${iDirection},
|
|
10750
|
+
expanded=${bIsExpanded}, child nodes added=${iCount}`;
|
|
10314
10751
|
|
|
10315
10752
|
QUnit.test(sTitle, function (assert) {
|
|
10316
10753
|
const iParentIndex = 42;
|
|
@@ -10331,7 +10768,8 @@ sap.ui.define([
|
|
|
10331
10768
|
this.mock(oChildContext).expects("getCanonicalPath").withExactArgs().returns("/~child~");
|
|
10332
10769
|
const oParentContext = {
|
|
10333
10770
|
iIndex : iParentIndex,
|
|
10334
|
-
getCanonicalPath : mustBeMocked
|
|
10771
|
+
getCanonicalPath : mustBeMocked,
|
|
10772
|
+
getModelIndex : mustBeMocked
|
|
10335
10773
|
};
|
|
10336
10774
|
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs().returns("/~parent~");
|
|
10337
10775
|
const oBinding = this.bindList("/EMPLOYEES");
|
|
@@ -10348,6 +10786,10 @@ sap.ui.define([
|
|
|
10348
10786
|
.withExactArgs("~oGroupLock~", "~child~", "~parent~")
|
|
10349
10787
|
.returns(new SyncPromise((resolve) => {
|
|
10350
10788
|
setTimeout(() => {
|
|
10789
|
+
this.mock(oParentContext).expects("getModelIndex").exactly(iCount > 1 ? 1 : 0)
|
|
10790
|
+
.withExactArgs().returns("~iModelIndex~");
|
|
10791
|
+
this.mock(oBinding).expects("insertGap").exactly(iCount > 1 ? 1 : 0)
|
|
10792
|
+
.withExactArgs("~iModelIndex~", iCount - 1);
|
|
10351
10793
|
for (let i = 0; i < 100; i += 1) {
|
|
10352
10794
|
if (i % 5) {
|
|
10353
10795
|
oBinding.aContexts[i] = {iIndex : i};
|
|
@@ -10360,11 +10802,12 @@ sap.ui.define([
|
|
|
10360
10802
|
this.mock(oChildContext).expects("setCreatedPersisted")
|
|
10361
10803
|
.exactly(bCreated ? 0 : 1).withExactArgs();
|
|
10362
10804
|
this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
|
|
10363
|
-
.withExactArgs(sinon.match.same(oChildContext))
|
|
10805
|
+
.withExactArgs(sinon.match.same(oChildContext))
|
|
10806
|
+
.returns(SyncPromise.resolve());
|
|
10364
10807
|
this.mock(oBinding).expects("_fireChange").exactly(bIsExpanded ? 0 : 1)
|
|
10365
10808
|
.withExactArgs({reason : ChangeReason.Change});
|
|
10366
10809
|
|
|
10367
|
-
resolve(
|
|
10810
|
+
resolve(iCount);
|
|
10368
10811
|
}, 0);
|
|
10369
10812
|
}));
|
|
10370
10813
|
|
|
@@ -10389,25 +10832,76 @@ sap.ui.define([
|
|
|
10389
10832
|
}
|
|
10390
10833
|
});
|
|
10391
10834
|
});
|
|
10835
|
+
});
|
|
10392
10836
|
});
|
|
10393
10837
|
});
|
|
10394
10838
|
});
|
|
10395
10839
|
|
|
10396
10840
|
//*********************************************************************************************
|
|
10397
|
-
|
|
10841
|
+
[false, true].forEach((bIsExpanded) => {
|
|
10842
|
+
[false, true].forEach((bExpandFails) => {
|
|
10843
|
+
const sTitle = `move: fails, expanded=${bIsExpanded}, expand fails=${bExpandFails}`;
|
|
10844
|
+
|
|
10845
|
+
if (bExpandFails && !bIsExpanded) {
|
|
10846
|
+
return;
|
|
10847
|
+
}
|
|
10848
|
+
|
|
10849
|
+
QUnit.test(sTitle, function (assert) {
|
|
10850
|
+
const oChildContext = {
|
|
10851
|
+
getCanonicalPath : mustBeMocked,
|
|
10852
|
+
isExpanded : mustBeMocked
|
|
10853
|
+
};
|
|
10854
|
+
this.mock(oChildContext).expects("isExpanded").withExactArgs().returns(bIsExpanded);
|
|
10855
|
+
this.mock(oChildContext).expects("getCanonicalPath").withExactArgs().returns("/~child~");
|
|
10856
|
+
const oParentContext = {
|
|
10857
|
+
getCanonicalPath : mustBeMocked
|
|
10858
|
+
};
|
|
10859
|
+
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs().returns("/~parent~");
|
|
10860
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
10861
|
+
this.mock(oBinding).expects("collapse").exactly(bIsExpanded ? 1 : 0)
|
|
10862
|
+
.withExactArgs(sinon.match.same(oChildContext), true);
|
|
10863
|
+
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
10864
|
+
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
10865
|
+
.returns("~oGroupLock~");
|
|
10866
|
+
const oCache = {
|
|
10867
|
+
move : mustBeMocked
|
|
10868
|
+
};
|
|
10869
|
+
oBinding.oCache = oCache;
|
|
10870
|
+
this.mock(oCache).expects("move").withExactArgs("~oGroupLock~", "~child~", "~parent~")
|
|
10871
|
+
.returns(SyncPromise.reject("~error~"));
|
|
10872
|
+
this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
|
|
10873
|
+
.withExactArgs(sinon.match.same(oChildContext), true)
|
|
10874
|
+
.returns(bExpandFails ? SyncPromise.reject("~expandError~") : SyncPromise.resolve());
|
|
10875
|
+
|
|
10876
|
+
// code under test
|
|
10877
|
+
const oSyncPromise = oBinding.move(oChildContext, oParentContext);
|
|
10878
|
+
|
|
10879
|
+
assert.strictEqual(oSyncPromise.isRejected(), true);
|
|
10880
|
+
assert.strictEqual(oSyncPromise.getResult(), bExpandFails ? "~expandError~" : "~error~");
|
|
10881
|
+
|
|
10882
|
+
oSyncPromise.caught(); // avoid "Uncaught (in promise)"
|
|
10883
|
+
});
|
|
10884
|
+
});
|
|
10885
|
+
});
|
|
10886
|
+
|
|
10887
|
+
//*********************************************************************************************
|
|
10888
|
+
QUnit.test("move: expand fails", function (assert) {
|
|
10398
10889
|
const oChildContext = {
|
|
10890
|
+
iIndex : 43,
|
|
10891
|
+
created : mustBeMocked,
|
|
10399
10892
|
getCanonicalPath : mustBeMocked,
|
|
10400
10893
|
isExpanded : mustBeMocked
|
|
10401
10894
|
};
|
|
10402
|
-
this.mock(oChildContext).expects("isExpanded").withExactArgs().returns(
|
|
10895
|
+
this.mock(oChildContext).expects("isExpanded").withExactArgs().returns(true);
|
|
10403
10896
|
this.mock(oChildContext).expects("getCanonicalPath").withExactArgs().returns("/~child~");
|
|
10404
10897
|
const oParentContext = {
|
|
10898
|
+
iIndex : 42,
|
|
10405
10899
|
getCanonicalPath : mustBeMocked
|
|
10406
10900
|
};
|
|
10407
10901
|
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs().returns("/~parent~");
|
|
10408
10902
|
const oBinding = this.bindList("/EMPLOYEES");
|
|
10409
|
-
this.mock(oBinding).expects("collapse")
|
|
10410
|
-
|
|
10903
|
+
this.mock(oBinding).expects("collapse")
|
|
10904
|
+
.withExactArgs(sinon.match.same(oChildContext), true);
|
|
10411
10905
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
10412
10906
|
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
10413
10907
|
.returns("~oGroupLock~");
|
|
@@ -10416,7 +10910,15 @@ sap.ui.define([
|
|
|
10416
10910
|
};
|
|
10417
10911
|
oBinding.oCache = oCache;
|
|
10418
10912
|
this.mock(oCache).expects("move").withExactArgs("~oGroupLock~", "~child~", "~parent~")
|
|
10913
|
+
.returns(SyncPromise.resolve(1));
|
|
10914
|
+
this.mock(oBinding).expects("insertGap").never();
|
|
10915
|
+
oBinding.aContexts[43] = oChildContext;
|
|
10916
|
+
oBinding.aContexts[42] = oParentContext;
|
|
10917
|
+
this.mock(oChildContext).expects("created").withExactArgs().returns(true);
|
|
10918
|
+
this.mock(oBinding).expects("expand")
|
|
10919
|
+
.withExactArgs(sinon.match.same(oChildContext))
|
|
10419
10920
|
.returns(SyncPromise.reject("~error~"));
|
|
10921
|
+
this.mock(oBinding).expects("_fireChange").never();
|
|
10420
10922
|
|
|
10421
10923
|
// code under test
|
|
10422
10924
|
const oSyncPromise = oBinding.move(oChildContext, oParentContext);
|