@openui5/sap.ui.core 1.115.1 → 1.117.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dtsgenrc +18 -0
- package/.eslintrc.json +1 -11
- package/.reuse/dep5 +0 -5
- package/THIRDPARTY.txt +1 -7
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.sjax.js +2 -2
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +106 -0
- package/src/sap/base/Eventing.js +319 -0
- package/src/sap/base/config/MemoryConfigurationProvider.js +10 -1
- package/src/sap/base/config.js +3 -2
- package/src/sap/base/i18n/Formatting.js +989 -0
- package/src/sap/base/i18n/LanguageTag.js +189 -0
- package/src/sap/base/i18n/Localization.js +710 -0
- package/src/sap/base/i18n/ResourceBundle.js +5 -20
- package/src/sap/base/i18n/date/CalendarType.js +54 -0
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +105 -0
- package/src/sap/base/i18n/date/TimezoneUtils.js +287 -0
- package/src/sap/base/util/JSTokenizer.js +1 -1
- package/src/sap/base/util/fetch.js +4 -4
- package/src/sap/base/util/mixedFetch.js +2 -2
- 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 +2 -2
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/base/Event.js +6 -4
- package/src/sap/ui/base/EventProvider.js +4 -12
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +9 -15
- package/src/sap/ui/base/ManagedObjectMetadata.js +33 -12
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/base/SyncPromise.js +10 -5
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/AccessKeysEnablement.js +10 -5
- package/src/sap/ui/core/AnimationMode.js +49 -0
- package/src/sap/ui/core/BusyIndicator.js +33 -42
- package/src/sap/ui/core/CalendarType.js +11 -37
- package/src/sap/ui/core/Component.js +4 -5
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +2 -2
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/ConfigTest.js +17 -0
- package/src/sap/ui/core/Configuration.js +409 -1282
- package/src/sap/ui/core/Control.js +7 -12
- package/src/sap/ui/core/ControlBehavior.js +157 -0
- package/src/sap/ui/core/Core.js +126 -132
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +14 -3
- package/src/sap/ui/core/ElementMetadata.js +2 -4
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +1 -1
- 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/IconPool.js +1 -2
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +5 -7
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +12 -12
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +126 -38
- 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 +154 -430
- package/src/sap/ui/core/LocaleData.js +50 -14
- package/src/sap/ui/core/Manifest.js +5 -5
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +37 -50
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/Rendering.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- 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 +11 -9
- package/src/sap/ui/core/StaticArea.js +31 -17
- package/src/sap/ui/core/Theming.js +458 -0
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +1 -1
- 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 +28 -5
- package/src/sap/ui/core/_IconRegistry.js +89 -12
- package/src/sap/ui/core/boot/_bootConfig.js +137 -0
- package/src/sap/ui/core/boot/_runBoot.js +16 -0
- package/src/sap/ui/core/boot/initDOM.js +96 -0
- package/src/sap/ui/core/boot/loadCalendar.js +50 -0
- package/src/sap/ui/core/boot/loadManifest.js +55 -0
- package/src/sap/ui/core/boot/loadModules.js +80 -0
- package/src/sap/ui/core/boot/manifest.json +11 -0
- package/src/sap/ui/core/boot/onInit.js +44 -0
- package/src/sap/ui/core/boot.js +107 -0
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +12 -83
- package/src/sap/ui/core/date/UI5Date.js +10 -4
- package/src/sap/ui/core/delegate/ItemNavigation.js +8 -10
- package/src/sap/ui/core/delegate/ScrollEnablement.js +5 -5
- 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 -27
- package/src/sap/ui/core/format/TimezoneUtil.js +15 -273
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +32 -6
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageMixin.js +6 -5
- 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/messagebundle_ar.properties +57 -55
- package/src/sap/ui/core/messagebundle_bg.properties +57 -55
- package/src/sap/ui/core/messagebundle_ca.properties +30 -28
- package/src/sap/ui/core/messagebundle_cs.properties +44 -42
- package/src/sap/ui/core/messagebundle_cy.properties +59 -57
- package/src/sap/ui/core/messagebundle_da.properties +57 -55
- package/src/sap/ui/core/messagebundle_de.properties +59 -57
- package/src/sap/ui/core/messagebundle_el.properties +48 -46
- package/src/sap/ui/core/messagebundle_en.properties +59 -57
- package/src/sap/ui/core/messagebundle_en_GB.properties +59 -57
- package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +2 -0
- package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +3 -0
- package/src/sap/ui/core/messagebundle_es.properties +48 -46
- package/src/sap/ui/core/messagebundle_es_MX.properties +58 -56
- package/src/sap/ui/core/messagebundle_et.properties +55 -53
- package/src/sap/ui/core/messagebundle_fi.properties +51 -49
- package/src/sap/ui/core/messagebundle_fr.properties +36 -34
- package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -19
- package/src/sap/ui/core/messagebundle_hi.properties +42 -40
- package/src/sap/ui/core/messagebundle_hr.properties +57 -55
- package/src/sap/ui/core/messagebundle_hu.properties +58 -56
- package/src/sap/ui/core/messagebundle_id.properties +59 -57
- package/src/sap/ui/core/messagebundle_it.properties +75 -73
- package/src/sap/ui/core/messagebundle_iw.properties +59 -57
- package/src/sap/ui/core/messagebundle_ja.properties +50 -48
- package/src/sap/ui/core/messagebundle_kk.properties +44 -42
- package/src/sap/ui/core/messagebundle_ko.properties +20 -18
- package/src/sap/ui/core/messagebundle_lt.properties +59 -57
- package/src/sap/ui/core/messagebundle_lv.properties +59 -57
- package/src/sap/ui/core/messagebundle_ms.properties +60 -58
- package/src/sap/ui/core/messagebundle_nl.properties +58 -56
- package/src/sap/ui/core/messagebundle_no.properties +56 -54
- package/src/sap/ui/core/messagebundle_pl.properties +56 -54
- package/src/sap/ui/core/messagebundle_pt.properties +58 -56
- package/src/sap/ui/core/messagebundle_pt_PT.properties +58 -56
- package/src/sap/ui/core/messagebundle_ro.properties +59 -57
- package/src/sap/ui/core/messagebundle_ru.properties +57 -55
- package/src/sap/ui/core/messagebundle_sh.properties +59 -57
- package/src/sap/ui/core/messagebundle_sk.properties +57 -55
- package/src/sap/ui/core/messagebundle_sl.properties +58 -56
- package/src/sap/ui/core/messagebundle_sv.properties +54 -52
- package/src/sap/ui/core/messagebundle_th.properties +18 -16
- package/src/sap/ui/core/messagebundle_tr.properties +58 -56
- package/src/sap/ui/core/messagebundle_uk.properties +59 -57
- package/src/sap/ui/core/messagebundle_vi.properties +59 -57
- package/src/sap/ui/core/messagebundle_zh_CN.properties +58 -56
- package/src/sap/ui/core/messagebundle_zh_TW.properties +58 -56
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +14 -2
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +14 -16
- 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/HashChanger.js +1 -0
- package/src/sap/ui/core/routing/Route.js +1 -0
- package/src/sap/ui/core/routing/Router.js +3 -1
- package/src/sap/ui/core/rules/Config.support.js +2 -2
- package/src/sap/ui/core/rules/Misc.support.js +1 -1
- package/src/sap/ui/core/rules/Model.support.js +3 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -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/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +7 -4
- package/src/sap/ui/core/support/controls/TimelineOverview.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- 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 +1 -1
- 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/themes/base/Icon.less +2 -2
- package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +4 -4
- package/src/sap/ui/core/themes/base/base.less +41 -20
- 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/theming/Parameters.js +6 -10
- package/src/sap/ui/core/theming/ThemeManager.js +312 -450
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +5 -10
- 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 +4 -5
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +3 -1
- 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 +1 -1
- 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/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 +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/events/PseudoEvents.js +17 -9
- package/src/sap/ui/model/Binding.js +19 -15
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeBinding.js +57 -19
- 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 +1 -1
- package/src/sap/ui/model/ListBinding.js +42 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +5 -4
- package/src/sap/ui/model/PropertyBinding.js +10 -0
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +4 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +166 -79
- package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +4 -3
- package/src/sap/ui/model/analytics/BatchResponseCollector.js +2 -2
- package/src/sap/ui/model/analytics/ODataModelAdapter.js +14 -27
- package/src/sap/ui/model/analytics/odata4analytics.js +6 -12
- package/src/sap/ui/model/base/ManagedObjectModel.js +3 -2
- package/src/sap/ui/model/json/JSONModel.js +6 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +191 -5
- package/src/sap/ui/model/odata/ODataMetadata.js +38 -4
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- 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 +8 -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 +3 -3
- 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 +3 -2
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +14 -3
- package/src/sap/ui/model/odata/v2/ODataModel.js +46 -32
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +4 -4
- package/src/sap/ui/model/odata/v4/Context.js +39 -32
- package/src/sap/ui/model/odata/v4/ODataBinding.js +85 -52
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +23 -19
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +139 -50
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +30 -36
- package/src/sap/ui/model/odata/v4/ODataModel.js +49 -44
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +72 -37
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +34 -29
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +95 -9
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +25 -27
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +95 -209
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +168 -1
- package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +14 -5
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +34 -19
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +4 -4
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +1 -1
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- 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/XMLModel.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/TestUtils.js +1 -1
- package/src/sap/ui/test/autowaiter/_autoWaiter.js +1 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -3
- package/src/sap/ui/test/gherkin/simpleGherkinParser.js +10 -5
- package/src/sap/ui/test/matchers/LabelFor.js +1 -0
- package/src/sap/ui/test/matchers/_Visitor.js +6 -1
- package/src/sap/ui/test/starter/_setupAndStart.js +2 -5
- package/src/sap/ui/thirdparty/caja-html-sanitizer.js +111 -96
- package/src/sap/ui/thirdparty/qunit-2.js +9 -3
- package/src/sap/ui/util/ActivityDetection.js +7 -1
- package/src/sap/ui/util/Mobile.js +21 -14
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap-ui-boot.js +23 -6
- package/src/ui5-boot.js +50 -0
- package/src/ui5loader-autoconfig.js +150 -75
- package/src/ui5loader.js +458 -514
- package/test/sap/ui/core/Device.js +1 -1
- package/test/sap/ui/core/FormatHelper.js +3 -2
- package/test/sap/ui/core/demokit/docuindex.json +6 -0
- package/test/sap/ui/core/demokit/sample/OpaAction/applicationUnderTest/view/Main.view.xml +1 -0
- package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/OpaBusyIndicator.js +1 -1
- package/test/sap/ui/core/demokit/sample/OpaMatchers/OpaMatchers.js +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/MIT.ODataTypes.html +9 -14
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +7 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +2 -2
- package/test/sap/ui/core/demokit/sample/common/pages/Any.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +24 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +24 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +20 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/filter.js +2 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +27 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.controller.js +43 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ListReport.view.xml +47 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.controller.js +27 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Main.view.xml +7 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/NotFound.view.xml +8 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +123 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.view.xml +92 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +27 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +70 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/README.html +55 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/SandboxModel.js +56 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/POST-SalesOrderList.json +66 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000')-SO_2_SOITEM.json +57 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000000').json +20 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000001').json +9 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList('0500000007')-SO_2_BP.json +12 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/SalesOrderList.json +62 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.json +85 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_CurrencyCode.xml +185 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.json +93 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/VH_ProductID.xml +262 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/data/metadata.xml +1779 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +134 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/pages/Main.js +119 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +4 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +12 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +0 -41
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +26 -8
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +4 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +5 -17
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +18 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +10 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +18 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.view.xml +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +2 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +1 -6
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +1 -6
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -6
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/arrangements/Startup.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -6
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +3 -8
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +3 -8
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/arrangements/Startup.js +1 -1
- package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +25 -7
- package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +86 -2
- package/test/sap/ui/core/qunit/DataState.qunit.js +2 -7
- package/test/sap/ui/core/qunit/HTML.qunit.js +31 -31
- package/test/sap/ui/core/qunit/IconPool.qunit.js +53 -4
- package/test/sap/ui/core/qunit/Lib.qunit.js +55 -2
- package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +22 -15
- package/test/sap/ui/core/qunit/ManagedObject.qunit.js +5 -3
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +43 -5
- package/test/sap/ui/core/qunit/Object.qunit.js +4 -1
- package/test/sap/ui/core/qunit/ThemeManager.qunit.js +2 -2
- package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +9 -3
- package/test/sap/ui/core/qunit/Theming.beforeBootstrap.qunit.js +13 -0
- package/test/sap/ui/core/qunit/Theming.qunit.js +247 -0
- package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +510 -185
- package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +2 -7
- package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +81 -16
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +20 -29
- package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +18 -1
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +24 -0
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +277 -0
- package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +282 -0
- package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +5 -6
- package/test/sap/ui/core/qunit/base/security/sanitizeHTML.qunit.js +17 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +13 -12
- package/test/sap/ui/core/qunit/bootstrap/Configuration.main.qunit.js +11 -0
- package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.html +4 -3
- package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +451 -281
- package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +19 -30
- package/test/sap/ui/core/qunit/component/Models.qunit.js +12 -30
- package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +8 -26
- package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/lib2/library.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/lib3/library.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/lib4/library.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component-preload.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/manifestcomp/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component-preload.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/mycomp/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component-preload.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/async/mysubcomp/Component.js +2 -3
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Component.js +0 -4
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/sync/Component.js +2 -6
- package/test/sap/ui/core/qunit/component/testdata/customizing/customersub/Component.js +0 -4
- package/test/sap/ui/core/qunit/component/testdata/inherit/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/inherit/parent/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/other/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/terminologies/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Component.js +2 -3
- package/test/sap/ui/core/qunit/component/testdata/v1/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/v1empty/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/v1inline/Component.js +2 -5
- package/test/sap/ui/core/qunit/component/testdata/v1missing/Component.js +2 -7
- package/test/sap/ui/core/qunit/component/testdata/v2/Component.js +2 -5
- package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/Component.js +2 -5
- package/test/sap/ui/core/qunit/component/testdata/v2empty/Component.js +2 -9
- package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +2 -5
- package/test/sap/ui/core/qunit/component/testdata/v2missing/Component.js +2 -9
- package/test/sap/ui/core/qunit/component/testdata/v2version/Component.js +2 -2
- package/test/sap/ui/core/qunit/dnd/DragDropInfo.qunit.js +1 -2
- package/test/sap/ui/core/qunit/generic/EnforceSemanticRendering.qunit.js +2 -2
- package/test/sap/ui/core/qunit/generic/SettersContextReturn.qunit.js +2 -2
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +2 -0
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +2 -0
- package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +2 -2
- package/test/sap/ui/core/qunit/gherkin/dataTableUtils.qunit.js +2 -2
- package/test/sap/ui/core/qunit/i18n/Locale.qunit.js +0 -52
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +49 -14
- package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +16 -4
- package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +74 -114
- package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +34 -39
- package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +18 -0
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
- package/test/sap/ui/core/qunit/internal/BeforePush.ODataV4.js +28 -0
- package/test/sap/ui/core/qunit/internal/BeforePush.html +1 -0
- package/test/sap/ui/core/qunit/internal/BeforePush.js +15 -0
- package/test/sap/ui/core/qunit/internal/performance/ExpressionParser.performance.qunit.js +1 -0
- package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/json/JSONPropertyBinding.qunit.js +7 -12
- package/test/sap/ui/core/qunit/json/JSONTwoWay.qunit.js +3 -8
- package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -2
- package/test/sap/ui/core/qunit/loader/asyncMode_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/loader/fixture/amd-with-export-true/module1.js +2 -2
- package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +0 -3
- package/test/sap/ui/core/qunit/messages/MessageMixin.qunit.js +2 -7
- package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +1 -1
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +36 -11
- package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/Context.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
- package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +63 -6
- package/test/sap/ui/core/qunit/model/Model.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +40 -0
- package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +2 -7
- package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +2 -7
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +51 -0
- package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +9 -8
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -4
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -4
- package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -1
- package/test/sap/ui/core/qunit/mvc/testdata/AsyncTypedView.js +5 -1
- package/test/sap/ui/core/qunit/odata/AnnotationParserNoFakeService.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +2 -8
- package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +68 -9
- package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +24 -0
- package/test/sap/ui/core/qunit/odata/v2/Context.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataContextBindingNoFakeService.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +31 -17
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +260 -56
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +70 -15
- package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +4 -9
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v2/_CreatedContextsCache.qunit.js +2 -7
- package/test/sap/ui/core/qunit/odata/v4/AnnotationHelper.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +55 -22
- package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +184 -151
- package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +60 -30
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +305 -69
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +20 -69
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1282 -255
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +90 -61
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +0 -3
- package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +283 -170
- package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +103 -78
- package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +2 -1
- package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +4 -0
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +2 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +151 -1
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +24 -11
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +279 -458
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +204 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +7 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +145 -26
- package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +4 -0
- package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -2
- package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +129 -2
- package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +5 -1
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +5 -0
- package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +17 -37
- package/test/sap/ui/core/qunit/routing/HashChanger.qunit.js +1 -6
- package/test/sap/ui/core/qunit/routing/RouterHashChanger.qunit.js +1 -10
- package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +1 -22
- package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -4
- package/test/sap/ui/core/qunit/routing/fixture/Async1.view.xml +1 -1
- package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +34 -1
- package/test/sap/ui/core/qunit/testdata/fastnavigation/view/FastNavigation.view.xml +2 -2
- package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/i18n.properties +1 -0
- package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/library.js +10 -0
- package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib1/manifest.json +10 -0
- package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/library.js +10 -0
- package/test/sap/ui/core/qunit/testdata/libraries/resourcebundle/lib2/messagebundle.properties +1 -0
- package/test/sap/ui/core/qunit/testdata/xml-require/helper/Formatter.js +7 -4
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_in_html.view.xml +36 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +29 -0
- package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +1381 -1570
- package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +16 -2
- package/test/sap/ui/core/qunit/types/Types.qunit.js +2 -37
- package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/Popup.qunit.js +7 -11
- package/test/sap/ui/core/qunit/util/SyncPromise.qunit.js +4 -1
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +3 -1
- package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +16 -11
- package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +1 -1
- package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +1 -3
- package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +4 -14
- package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +7 -11
- package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +1 -1
- package/test/sap/ui/core/qunit/xml/XMLTwoWay.qunit.js +3 -7
- package/test/sap/ui/core/relnotes/changes-1.115.json +1 -37
- package/test/sap/ui/core/relnotes/changes-1.116.json +71 -0
- package/test/sap/ui/core/relnotes/changes-1.117.json +127 -0
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/HyphenationPlayground/windows/1600x1200/chrome/horizon/ltr/cozy/19_thirdParty_language_sl.ref.lnk +1 -1
- package/test/testsuite/js/samples.js +2 -0
- package/ui5.yaml +166 -1
- package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +0 -45
- /package/test/sap/ui/core/qunit/bootstrap/{GlobalConfigurationSettings.js → Configuration.beforeBootstrap.qunit.js} +0 -0
|
@@ -81,6 +81,8 @@ sap.ui.define([
|
|
|
81
81
|
return bDrillDown ? oData.value : oData;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
function mustBeMocked() { throw new Error("Must be mocked"); }
|
|
85
|
+
|
|
84
86
|
//*********************************************************************************************
|
|
85
87
|
QUnit.module("sap.ui.model.odata.v4.ODataListBinding", {
|
|
86
88
|
beforeEach : function () {
|
|
@@ -1251,10 +1253,6 @@ sap.ui.define([
|
|
|
1251
1253
|
this.bindList("/EMPLOYEES", undefined, new Sorter("ID"), undefined,
|
|
1252
1254
|
{$$operationMode : OperationMode.Client});
|
|
1253
1255
|
}, new Error("Unsupported operation mode: Client"));
|
|
1254
|
-
assert.throws(function () {
|
|
1255
|
-
this.bindList("/EMPLOYEES", undefined, new Sorter("ID"), undefined,
|
|
1256
|
-
{$$operationMode : OperationMode.Auto});
|
|
1257
|
-
}, new Error("Unsupported operation mode: Auto"));
|
|
1258
1256
|
assert.throws(function () {
|
|
1259
1257
|
this.bindList("/EMPLOYEES", undefined, new Sorter("ID"));
|
|
1260
1258
|
}, new Error("Unsupported operation mode: undefined"));
|
|
@@ -1289,10 +1287,6 @@ sap.ui.define([
|
|
|
1289
1287
|
this.bindList("/EMPLOYEES", undefined, undefined, new Filter("ID", "eq", 42),
|
|
1290
1288
|
{$$operationMode : OperationMode.Client});
|
|
1291
1289
|
}, new Error("Unsupported operation mode: Client"));
|
|
1292
|
-
assert.throws(function () {
|
|
1293
|
-
this.bindList("/EMPLOYEES", undefined, undefined, new Filter("ID", "eq", 42),
|
|
1294
|
-
{$$operationMode : OperationMode.Auto});
|
|
1295
|
-
}, new Error("Unsupported operation mode: Auto"));
|
|
1296
1290
|
assert.throws(function () {
|
|
1297
1291
|
this.bindList("/EMPLOYEES", undefined, undefined, new Filter("ID", "eq", 42));
|
|
1298
1292
|
}, new Error("Unsupported operation mode: undefined"));
|
|
@@ -2373,6 +2367,7 @@ sap.ui.define([
|
|
|
2373
2367
|
if (oFixture.aggregation) {
|
|
2374
2368
|
oBinding.mParameters.$$aggregation = oAggregation;
|
|
2375
2369
|
}
|
|
2370
|
+
oBinding.mCanUseCachePromiseByChildPath = "~mCanUseCachePromiseByChildPath~";
|
|
2376
2371
|
oBinding.sChangeReason = "sChangeReason";
|
|
2377
2372
|
oBinding.bHasPathReductionToParent = oFixture.backLink;
|
|
2378
2373
|
|
|
@@ -2408,6 +2403,8 @@ sap.ui.define([
|
|
|
2408
2403
|
|
|
2409
2404
|
assert.ok(oFetchCacheCall.calledAfter(oResetKeepAliveCall));
|
|
2410
2405
|
assert.strictEqual(oBinding.sChangeReason, sExpectedChangeReason);
|
|
2406
|
+
assert.deepEqual(oBinding.mCanUseCachePromiseByChildPath,
|
|
2407
|
+
i === 0 ? {} : "~mCanUseCachePromiseByChildPath~");
|
|
2411
2408
|
if (oFixture.newContext) {
|
|
2412
2409
|
assert.deepEqual(oBinding.mPreviousContextsByPath, {
|
|
2413
2410
|
"/foo/Suppliers" : oOldHeaderContext
|
|
@@ -3806,6 +3803,44 @@ sap.ui.define([
|
|
|
3806
3803
|
assert.strictEqual(oContext2.iIndex, undefined);
|
|
3807
3804
|
});
|
|
3808
3805
|
|
|
3806
|
+
//*********************************************************************************************
|
|
3807
|
+
QUnit.test("destroyPreviousContexts: cache & hidden context", function (assert) {
|
|
3808
|
+
var oBinding = this.bindList("/EMPLOYEES"),
|
|
3809
|
+
oContext1 = {
|
|
3810
|
+
iIndex : undefined,
|
|
3811
|
+
destroy : function () {},
|
|
3812
|
+
isEffectivelyKeptAlive : function () {},
|
|
3813
|
+
isTransient : function () {}
|
|
3814
|
+
},
|
|
3815
|
+
oContext2 = {
|
|
3816
|
+
iIndex : 0,
|
|
3817
|
+
destroy : function () {},
|
|
3818
|
+
isEffectivelyKeptAlive : function () {},
|
|
3819
|
+
isTransient : function () {}
|
|
3820
|
+
};
|
|
3821
|
+
|
|
3822
|
+
oBinding.mPreviousContextsByPath = {
|
|
3823
|
+
p1 : oContext1,
|
|
3824
|
+
p2 : oContext2,
|
|
3825
|
+
p3 : "~oContext3~"
|
|
3826
|
+
};
|
|
3827
|
+
this.mock(oContext1).expects("isEffectivelyKeptAlive").withExactArgs().returns(false);
|
|
3828
|
+
this.mock(oContext1).expects("isTransient").withExactArgs().returns(false);
|
|
3829
|
+
this.mock(oContext1).expects("destroy").withExactArgs();
|
|
3830
|
+
this.mock(oContext2).expects("isEffectivelyKeptAlive").withExactArgs().returns(false);
|
|
3831
|
+
this.mock(oContext2).expects("isTransient").withExactArgs().returns(false);
|
|
3832
|
+
this.mock(oContext2).expects("destroy").withExactArgs();
|
|
3833
|
+
this.mock(oBinding.oHeaderContext).expects("getPath").withExactArgs().returns("/EMPLOYEES");
|
|
3834
|
+
this.mock(_Helper).expects("getRelativePath")
|
|
3835
|
+
.withExactArgs("p1", "/EMPLOYEES").returns("relative/path");
|
|
3836
|
+
this.mock(oBinding.oCache).expects("removeKeptElement").withExactArgs("relative/path");
|
|
3837
|
+
|
|
3838
|
+
// code under test
|
|
3839
|
+
oBinding.destroyPreviousContexts(["p1", "p2"]);
|
|
3840
|
+
|
|
3841
|
+
assert.deepEqual(oBinding.mPreviousContextsByPath, {p3 : "~oContext3~"});
|
|
3842
|
+
});
|
|
3843
|
+
|
|
3809
3844
|
//*********************************************************************************************
|
|
3810
3845
|
QUnit.test("destroyPreviousContexts: binding already destroyed", function (assert) {
|
|
3811
3846
|
var oBinding = this.bindList("relative");
|
|
@@ -4587,8 +4622,6 @@ sap.ui.define([
|
|
|
4587
4622
|
oCreateInCachePromise1 = Promise.resolve({}),
|
|
4588
4623
|
oCreatePathPromise = SyncPromise.resolve("~"),
|
|
4589
4624
|
oError = {},
|
|
4590
|
-
oInitialData0 = {},
|
|
4591
|
-
oInitialData1 = {},
|
|
4592
4625
|
oGroupLock0 = {},
|
|
4593
4626
|
oGroupLock1 = {},
|
|
4594
4627
|
oLockGroupExpectation,
|
|
@@ -4604,8 +4637,8 @@ sap.ui.define([
|
|
|
4604
4637
|
oBindingMock.expects("fetchResourcePath").withExactArgs().returns(oCreatePathPromise);
|
|
4605
4638
|
oCreateInCacheExpectation = oBindingMock.expects("createInCache")
|
|
4606
4639
|
.withExactArgs(sinon.match.same(oGroupLock0), sinon.match.same(oCreatePathPromise),
|
|
4607
|
-
"/EMPLOYEES", sinon.match(rTransientPredicate), sinon.match.
|
|
4608
|
-
|
|
4640
|
+
"/EMPLOYEES", sinon.match(rTransientPredicate), {}, false, sinon.match.func,
|
|
4641
|
+
sinon.match.func)
|
|
4609
4642
|
.returns(SyncPromise.resolve(oCreateInCachePromise0));
|
|
4610
4643
|
oCreateInCachePromise0.then(function () {
|
|
4611
4644
|
that.mock(oContext0).expects("updateAfterCreate").withExactArgs(true, "$auto");
|
|
@@ -4613,7 +4646,7 @@ sap.ui.define([
|
|
|
4613
4646
|
this.mock(oContextPrototype).expects("fetchValue").twice().withExactArgs().resolves({});
|
|
4614
4647
|
|
|
4615
4648
|
// code under test (create first entity, skip refresh)
|
|
4616
|
-
oContext0 = oBinding.create(
|
|
4649
|
+
oContext0 = oBinding.create(null, true);
|
|
4617
4650
|
|
|
4618
4651
|
assert.strictEqual(oBinding.iCreatedContexts, 1);
|
|
4619
4652
|
assert.strictEqual(oBinding.iActiveContexts, 1);
|
|
@@ -4628,15 +4661,15 @@ sap.ui.define([
|
|
|
4628
4661
|
oBindingMock.expects("fetchResourcePath").withExactArgs().returns(oCreatePathPromise);
|
|
4629
4662
|
oBindingMock.expects("createInCache")
|
|
4630
4663
|
.withExactArgs(sinon.match.same(oGroupLock1), sinon.match.same(oCreatePathPromise),
|
|
4631
|
-
"/EMPLOYEES", sinon.match(rTransientPredicate), sinon.match.
|
|
4632
|
-
|
|
4664
|
+
"/EMPLOYEES", sinon.match(rTransientPredicate), {}, false, sinon.match.func,
|
|
4665
|
+
sinon.match.func)
|
|
4633
4666
|
.returns(SyncPromise.resolve(oCreateInCachePromise1));
|
|
4634
4667
|
oCreateInCachePromise1.then(function () {
|
|
4635
4668
|
that.mock(oContext1).expects("updateAfterCreate").withExactArgs(true, "$auto");
|
|
4636
4669
|
});
|
|
4637
4670
|
|
|
4638
4671
|
// code under test (create second entity, skip refresh)
|
|
4639
|
-
oContext1 = oBinding.create(
|
|
4672
|
+
oContext1 = oBinding.create(null, true);
|
|
4640
4673
|
|
|
4641
4674
|
assert.strictEqual(oBinding.iCreatedContexts, 2);
|
|
4642
4675
|
assert.strictEqual(oBinding.iActiveContexts, 2);
|
|
@@ -4706,7 +4739,6 @@ sap.ui.define([
|
|
|
4706
4739
|
sTitle : "create: absolute"
|
|
4707
4740
|
}, {
|
|
4708
4741
|
sGroupId : "$auto",
|
|
4709
|
-
oInitialData : {},
|
|
4710
4742
|
sTitle : "create: absolute, with initial data"
|
|
4711
4743
|
}, {
|
|
4712
4744
|
sGroupId : "deferred",
|
|
@@ -4772,6 +4804,8 @@ sap.ui.define([
|
|
|
4772
4804
|
iCurrentCreateNo = iCreateNo;
|
|
4773
4805
|
|
|
4774
4806
|
oBindingMock.expects("checkSuspended").withExactArgs();
|
|
4807
|
+
oHelperMock.expects("isDataAggregation")
|
|
4808
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
4775
4809
|
oBindingMock.expects("getGroupId")
|
|
4776
4810
|
.returns(oFixture.sGroupId || "$auto");
|
|
4777
4811
|
oModelMock.expects("isApiGroup")
|
|
@@ -4789,8 +4823,8 @@ sap.ui.define([
|
|
|
4789
4823
|
oBindingMock.expects("createInCache")
|
|
4790
4824
|
.withExactArgs(sinon.match.same(oGroupLock),
|
|
4791
4825
|
sinon.match.same(oCreatePathPromise), "/EMPLOYEES",
|
|
4792
|
-
sinon.match(rTransientPredicate), sinon.match.
|
|
4793
|
-
|
|
4826
|
+
sinon.match(rTransientPredicate), {}, false, sinon.match.func,
|
|
4827
|
+
sinon.match.func)
|
|
4794
4828
|
.returns(aCreatePromises[iCurrentCreateNo]);
|
|
4795
4829
|
oContextMock.expects("fetchValue").withExactArgs().resolves({});
|
|
4796
4830
|
|
|
@@ -4841,8 +4875,8 @@ sap.ui.define([
|
|
|
4841
4875
|
oBindingMock.expects("refreshSingle").never();
|
|
4842
4876
|
|
|
4843
4877
|
// code under test
|
|
4844
|
-
aContexts.push(
|
|
4845
|
-
oFixture.bInactive, oFixture.bTransient));
|
|
4878
|
+
aContexts.push(
|
|
4879
|
+
oBinding.create(null, false, false, oFixture.bInactive, oFixture.bTransient));
|
|
4846
4880
|
|
|
4847
4881
|
checkCreatedContext();
|
|
4848
4882
|
|
|
@@ -4853,8 +4887,8 @@ sap.ui.define([
|
|
|
4853
4887
|
expect();
|
|
4854
4888
|
|
|
4855
4889
|
// code under test: 2nd create
|
|
4856
|
-
aContexts.push(
|
|
4857
|
-
oFixture.bInactive, oFixture.bTransient));
|
|
4890
|
+
aContexts.push(
|
|
4891
|
+
oBinding.create(null, false, false, oFixture.bInactive, oFixture.bTransient));
|
|
4858
4892
|
|
|
4859
4893
|
checkCreatedContext();
|
|
4860
4894
|
assert.strictEqual(aContexts[0].getIndex(), 1);
|
|
@@ -4888,20 +4922,21 @@ sap.ui.define([
|
|
|
4888
4922
|
oGroupLock0 = {},
|
|
4889
4923
|
oGroupLock1 = {},
|
|
4890
4924
|
oHelperMock = this.mock(_Helper),
|
|
4891
|
-
oInitialData = {},
|
|
4892
4925
|
sPredicate = "(ID=42)",
|
|
4893
4926
|
oRefreshedEntity = {},
|
|
4894
4927
|
that = this;
|
|
4895
4928
|
|
|
4896
4929
|
oBindingMock.expects("getUpdateGroupId").withExactArgs().returns("~update~");
|
|
4930
|
+
oHelperMock.expects("publicClone").withExactArgs("~oInitialData~", true)
|
|
4931
|
+
.returns("~publicClone~");
|
|
4897
4932
|
oBindingMock.expects("lockGroup")
|
|
4898
4933
|
.withExactArgs("~update~", true, true, sinon.match.func)
|
|
4899
4934
|
.returns(oGroupLock0);
|
|
4900
4935
|
oBindingMock.expects("fetchResourcePath").withExactArgs().returns(oCreatePathPromise);
|
|
4901
4936
|
oBindingMock.expects("createInCache")
|
|
4902
4937
|
.withExactArgs(sinon.match.same(oGroupLock0), sinon.match.same(oCreatePathPromise),
|
|
4903
|
-
"/EMPLOYEES", sinon.match(rTransientPredicate),
|
|
4904
|
-
|
|
4938
|
+
"/EMPLOYEES", sinon.match(rTransientPredicate), "~publicClone~", false,
|
|
4939
|
+
sinon.match.func, sinon.match.func)
|
|
4905
4940
|
.returns(oCreatePromise);
|
|
4906
4941
|
this.mock(oContextPrototype).expects("fetchValue").withExactArgs().resolves({});
|
|
4907
4942
|
oCreatePromise.then(function () {
|
|
@@ -4934,23 +4969,15 @@ sap.ui.define([
|
|
|
4934
4969
|
});
|
|
4935
4970
|
|
|
4936
4971
|
// code under test
|
|
4937
|
-
oContext = oBinding.create(oInitialData, oFixture.bSkipRefresh);
|
|
4972
|
+
oContext = oBinding.create("~oInitialData~", oFixture.bSkipRefresh);
|
|
4938
4973
|
|
|
4939
4974
|
return oContext.created();
|
|
4940
4975
|
});
|
|
4941
4976
|
});
|
|
4942
4977
|
|
|
4943
4978
|
//*********************************************************************************************
|
|
4944
|
-
[{
|
|
4945
|
-
|
|
4946
|
-
}, {
|
|
4947
|
-
oInitialData : {},
|
|
4948
|
-
sPredicate : "('bar')"
|
|
4949
|
-
}, {
|
|
4950
|
-
oInitialData : {}
|
|
4951
|
-
}].forEach(function (oFixture) {
|
|
4952
|
-
var sTitle = "create: relative binding, initial data: "
|
|
4953
|
-
+ JSON.stringify(oFixture.oInitialData) + ", predicate: " + oFixture.sPredicate;
|
|
4979
|
+
[undefined, "('bar')"].forEach(function (sPredicate) {
|
|
4980
|
+
var sTitle = "create: relative binding, predicate: " + sPredicate;
|
|
4954
4981
|
|
|
4955
4982
|
QUnit.test(sTitle, function (assert) {
|
|
4956
4983
|
var oBinding = this.bindList("TEAM_2_EMPLOYEES",
|
|
@@ -4978,6 +5005,8 @@ sap.ui.define([
|
|
|
4978
5005
|
.withExactArgs()
|
|
4979
5006
|
.returns(oCreatePathPromise);
|
|
4980
5007
|
oBindingMock.expects("checkSuspended").withExactArgs().twice();
|
|
5008
|
+
oHelperMock.expects("isDataAggregation")
|
|
5009
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
4981
5010
|
oBindingMock.expects("getUpdateGroupId").withExactArgs().returns("~update~");
|
|
4982
5011
|
oBindingMock.expects("lockGroup")
|
|
4983
5012
|
.withExactArgs("~update~", true, true, sinon.match.func)
|
|
@@ -4985,17 +5014,17 @@ sap.ui.define([
|
|
|
4985
5014
|
oBindingMock.expects("createInCache")
|
|
4986
5015
|
.withExactArgs(sinon.match.same(oCreateGroupLock),
|
|
4987
5016
|
sinon.match.same(oCreatePathPromise), "/TEAMS/1/TEAM_2_EMPLOYEES",
|
|
4988
|
-
sinon.match(rTransientPredicate), sinon.match.
|
|
4989
|
-
|
|
5017
|
+
sinon.match(rTransientPredicate), {}, false, sinon.match.func,
|
|
5018
|
+
sinon.match.func)
|
|
4990
5019
|
.returns(oCreateInCachePromise);
|
|
4991
5020
|
oCreateInCachePromise.then(function () {
|
|
4992
5021
|
oHelperMock.expects("getPrivateAnnotation")
|
|
4993
5022
|
.withExactArgs(sinon.match.same(oCreatedEntity), "predicate")
|
|
4994
|
-
.returns(
|
|
4995
|
-
oBindingMock.expects("adjustPredicate").exactly(
|
|
4996
|
-
.withExactArgs(sinon.match(rTransientPredicate),
|
|
5023
|
+
.returns(sPredicate);
|
|
5024
|
+
oBindingMock.expects("adjustPredicate").exactly(sPredicate ? 1 : 0)
|
|
5025
|
+
.withExactArgs(sinon.match(rTransientPredicate), sPredicate,
|
|
4997
5026
|
sinon.match.same(oContext));
|
|
4998
|
-
that.mock(that.oModel).expects("checkMessages").exactly(
|
|
5027
|
+
that.mock(that.oModel).expects("checkMessages").exactly(sPredicate ? 1 : 0)
|
|
4999
5028
|
.withExactArgs();
|
|
5000
5029
|
oHelperMock.expects("getPrivateAnnotation")
|
|
5001
5030
|
.withExactArgs(sinon.match.same(oCreatedEntity), "deepCreate")
|
|
@@ -5009,7 +5038,7 @@ sap.ui.define([
|
|
|
5009
5038
|
oContextMock.expects("fetchValue").withExactArgs().resolves({});
|
|
5010
5039
|
|
|
5011
5040
|
// code under test
|
|
5012
|
-
oContext = oBinding.create(
|
|
5041
|
+
oContext = oBinding.create();
|
|
5013
5042
|
|
|
5014
5043
|
aCacheResult.unshift({/*transient element*/});
|
|
5015
5044
|
oBindingMock.expects("lockGroup").withExactArgs().returns(oFetchDataGroupLock);
|
|
@@ -5061,6 +5090,7 @@ sap.ui.define([
|
|
|
5061
5090
|
oError = new Error("suspended");
|
|
5062
5091
|
|
|
5063
5092
|
this.mock(oBinding).expects("checkSuspended").withExactArgs().throws(oError);
|
|
5093
|
+
this.mock(_Helper).expects("isDataAggregation").never();
|
|
5064
5094
|
|
|
5065
5095
|
// code under test
|
|
5066
5096
|
assert.throws(function () {
|
|
@@ -5106,7 +5136,8 @@ sap.ui.define([
|
|
|
5106
5136
|
QUnit.test("create: $$aggregation", function (assert) {
|
|
5107
5137
|
var oBinding = this.bindList("/EMPLOYEES");
|
|
5108
5138
|
|
|
5109
|
-
|
|
5139
|
+
this.mock(_Helper).expects("isDataAggregation")
|
|
5140
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(true);
|
|
5110
5141
|
|
|
5111
5142
|
assert.throws(function () {
|
|
5112
5143
|
// code under test
|
|
@@ -5122,8 +5153,7 @@ sap.ui.define([
|
|
|
5122
5153
|
oCreatePathPromise = {},
|
|
5123
5154
|
oError = new Error(),
|
|
5124
5155
|
oCreatePromise = SyncPromise.resolve(Promise.reject(oError)),
|
|
5125
|
-
oGroupLock = {unlock : function () {}}
|
|
5126
|
-
oInitialData = {};
|
|
5156
|
+
oGroupLock = {unlock : function () {}};
|
|
5127
5157
|
|
|
5128
5158
|
oBindingMock.expects("getUpdateGroupId").withExactArgs().returns("~update~");
|
|
5129
5159
|
oBindingMock.expects("lockGroup").withExactArgs("~update~", true, true, sinon.match.func)
|
|
@@ -5131,8 +5161,8 @@ sap.ui.define([
|
|
|
5131
5161
|
oBindingMock.expects("fetchResourcePath").withExactArgs().returns(oCreatePathPromise);
|
|
5132
5162
|
oBindingMock.expects("createInCache")
|
|
5133
5163
|
.withExactArgs(sinon.match.same(oGroupLock), sinon.match.same(oCreatePathPromise),
|
|
5134
|
-
"/EMPLOYEES", sinon.match(rTransientPredicate), sinon.match.
|
|
5135
|
-
|
|
5164
|
+
"/EMPLOYEES", sinon.match(rTransientPredicate), {}, false, sinon.match.func,
|
|
5165
|
+
sinon.match.func)
|
|
5136
5166
|
.returns(oCreatePromise);
|
|
5137
5167
|
this.mock(oContextPrototype).expects("fetchValue").withExactArgs().resolves({});
|
|
5138
5168
|
|
|
@@ -5140,7 +5170,7 @@ sap.ui.define([
|
|
|
5140
5170
|
this.mock(oGroupLock).expects("unlock").withExactArgs(true);
|
|
5141
5171
|
|
|
5142
5172
|
// code under test
|
|
5143
|
-
oContext = oBinding.create(
|
|
5173
|
+
oContext = oBinding.create();
|
|
5144
5174
|
|
|
5145
5175
|
return oContext.created().then(function () {
|
|
5146
5176
|
assert.ok(false);
|
|
@@ -5212,7 +5242,7 @@ sap.ui.define([
|
|
|
5212
5242
|
.returns(oGroupLock);
|
|
5213
5243
|
oBindingMock.expects("createInCache")
|
|
5214
5244
|
.withExactArgs(sinon.match.same(oGroupLock), oCreatePathMatcher, "/EMPLOYEES",
|
|
5215
|
-
sinon.match(rTransientPredicate),
|
|
5245
|
+
sinon.match(rTransientPredicate), {},
|
|
5216
5246
|
sinon.match(function (bAtEndOfCreated) {
|
|
5217
5247
|
return bAtEndOfCreated === (oBinding.bFirstCreateAtEnd !== !!aAtEnd[0]);
|
|
5218
5248
|
}), sinon.match.func, sinon.match.func)
|
|
@@ -5262,7 +5292,7 @@ sap.ui.define([
|
|
|
5262
5292
|
oBindingMock.expects("createInCache")
|
|
5263
5293
|
.withExactArgs(sinon.match.same(oGroupLock),
|
|
5264
5294
|
oCreatePathMatcher, "/EMPLOYEES",
|
|
5265
|
-
sinon.match(rTransientPredicate),
|
|
5295
|
+
sinon.match(rTransientPredicate), {},
|
|
5266
5296
|
sinon.match(function (bAtEndOfCreated) {
|
|
5267
5297
|
return bAtEndOfCreated
|
|
5268
5298
|
=== (oBinding.bFirstCreateAtEnd !== !!aAtEnd[1]);
|
|
@@ -5354,8 +5384,7 @@ sap.ui.define([
|
|
|
5354
5384
|
.returns(oGroupLock);
|
|
5355
5385
|
oBindingMock.expects("createInCache")
|
|
5356
5386
|
.withExactArgs(sinon.match.same(oGroupLock), oCreatePathMatcher, "/EMPLOYEES",
|
|
5357
|
-
sinon.match(rTransientPredicate),
|
|
5358
|
-
false, sinon.match.func, sinon.match.func)
|
|
5387
|
+
sinon.match(rTransientPredicate), {}, false, sinon.match.func, sinon.match.func)
|
|
5359
5388
|
.returns(SyncPromise.resolve(Promise.resolve({})));
|
|
5360
5389
|
this.mock(Context).expects("create")
|
|
5361
5390
|
.withExactArgs(sinon.match.same(oBinding.oModel),
|
|
@@ -5448,6 +5477,119 @@ sap.ui.define([
|
|
|
5448
5477
|
]);
|
|
5449
5478
|
});
|
|
5450
5479
|
|
|
5480
|
+
//*********************************************************************************************
|
|
5481
|
+
QUnit.test("create: recursive hierarchy, restrictions not met", function (assert) {
|
|
5482
|
+
var oBinding = this.bindList("/EMPLOYEES");
|
|
5483
|
+
|
|
5484
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5485
|
+
// too far :-(
|
|
5486
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
5487
|
+
|
|
5488
|
+
assert.throws(function () {
|
|
5489
|
+
// code under test
|
|
5490
|
+
oBinding.create();
|
|
5491
|
+
}, new Error("Missing bSkipRefresh"));
|
|
5492
|
+
|
|
5493
|
+
assert.throws(function () {
|
|
5494
|
+
// code under test
|
|
5495
|
+
oBinding.create(null, true, false);
|
|
5496
|
+
}, new Error("Only the parameters oInitialData and bSkipRefresh are supported"));
|
|
5497
|
+
|
|
5498
|
+
assert.throws(function () {
|
|
5499
|
+
// code under test
|
|
5500
|
+
oBinding.create(null, true, undefined, undefined);
|
|
5501
|
+
}, new Error("Only the parameters oInitialData and bSkipRefresh are supported"));
|
|
5502
|
+
|
|
5503
|
+
assert.throws(function () {
|
|
5504
|
+
// code under test
|
|
5505
|
+
oBinding.create({"@$ui5.node.parent" : oBinding.getHeaderContext()}, true);
|
|
5506
|
+
}, new Error("Invalid parent context: /EMPLOYEES"));
|
|
5507
|
+
|
|
5508
|
+
const oParentContext = {
|
|
5509
|
+
isExpanded : mustBeMocked,
|
|
5510
|
+
toString : function () { return "~toString~"; } // cannot be mocked?
|
|
5511
|
+
};
|
|
5512
|
+
this.mock(oParentContext).expects("isExpanded").withExactArgs().returns(false);
|
|
5513
|
+
oBinding.aContexts.push(oParentContext);
|
|
5514
|
+
|
|
5515
|
+
assert.throws(function () {
|
|
5516
|
+
// code under test
|
|
5517
|
+
oBinding.create({"@$ui5.node.parent" : oParentContext}, true);
|
|
5518
|
+
}, new Error("Unsupported collapsed parent: ~toString~"));
|
|
5519
|
+
|
|
5520
|
+
oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
|
|
5521
|
+
|
|
5522
|
+
assert.throws(function () {
|
|
5523
|
+
// code under test
|
|
5524
|
+
oBinding.create();
|
|
5525
|
+
}, new Error("Unsupported $$aggregation.expandTo: 2"));
|
|
5526
|
+
});
|
|
5527
|
+
|
|
5528
|
+
//*********************************************************************************************
|
|
5529
|
+
[undefined, true].forEach(function (bExpanded) {
|
|
5530
|
+
QUnit.test("create: recursive hierarchy, parent expanded : " + bExpanded, function (assert) {
|
|
5531
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
5532
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5533
|
+
// too far :-(
|
|
5534
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
5535
|
+
oBinding.iMaxLength = 42;
|
|
5536
|
+
this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
|
|
5537
|
+
.returns("~oCreatePathPromise~");
|
|
5538
|
+
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
|
|
5539
|
+
.returns("~sGroupId~");
|
|
5540
|
+
this.mock(oBinding).expects("getResolvedPath").withExactArgs()
|
|
5541
|
+
.returns("~sResolvedPath~");
|
|
5542
|
+
this.mock(_Helper).expects("uid").withExactArgs().returns("id-1-23");
|
|
5543
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
5544
|
+
this.mock(_Helper).expects("isDataAggregation")
|
|
5545
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
5546
|
+
this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
|
|
5547
|
+
this.mock(oBinding).expects("checkDeepCreate").never();
|
|
5548
|
+
this.mock(oBinding).expects("isRelative").never();
|
|
5549
|
+
const oParentContext = {
|
|
5550
|
+
getCanonicalPath : mustBeMocked,
|
|
5551
|
+
isExpanded : mustBeMocked
|
|
5552
|
+
};
|
|
5553
|
+
oBinding.aContexts.push("0", "1", oParentContext, {iIndex : 3}, undefined, {iIndex : 5});
|
|
5554
|
+
const oInitialData = {"@$ui5.node.parent" : oParentContext};
|
|
5555
|
+
const oEntityData = {};
|
|
5556
|
+
this.mock(_Helper).expects("publicClone")
|
|
5557
|
+
.withExactArgs(sinon.match.same(oInitialData), true).returns(oEntityData);
|
|
5558
|
+
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs()
|
|
5559
|
+
.returns("/canonical/path");
|
|
5560
|
+
this.mock(oParentContext).expects("isExpanded").withExactArgs().returns(bExpanded);
|
|
5561
|
+
this.mock(oBinding).expects("lockGroup")
|
|
5562
|
+
.withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
|
|
5563
|
+
this.mock(oBinding).expects("createInCache")
|
|
5564
|
+
.withExactArgs("~oGroupLock~", "~oCreatePathPromise~", "~sResolvedPath~",
|
|
5565
|
+
sinon.match(rTransientPredicate),
|
|
5566
|
+
sinon.match.same(oEntityData)
|
|
5567
|
+
.and(sinon.match({"@$ui5.node.parent" : "canonical/path"})),
|
|
5568
|
+
false, sinon.match.func, sinon.match.func)
|
|
5569
|
+
.returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
|
|
5570
|
+
const oContext = {fetchValue : mustBeMocked};
|
|
5571
|
+
this.mock(Context).expects("create")
|
|
5572
|
+
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
5573
|
+
"~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/3,
|
|
5574
|
+
sinon.match.instanceOf(SyncPromise), undefined)
|
|
5575
|
+
.returns(oContext);
|
|
5576
|
+
this.mock(oContext).expects("fetchValue").withExactArgs()
|
|
5577
|
+
.returns(SyncPromise.resolve()); //TODO
|
|
5578
|
+
this.mock(oBinding).expects("_fireChange")
|
|
5579
|
+
.withExactArgs({reason : ChangeReason.Add});
|
|
5580
|
+
|
|
5581
|
+
// code under test
|
|
5582
|
+
assert.strictEqual(oBinding.create(oInitialData, true), oContext);
|
|
5583
|
+
|
|
5584
|
+
assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
|
|
5585
|
+
assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
|
|
5586
|
+
assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
|
|
5587
|
+
assert.strictEqual(oBinding.iMaxLength, 43);
|
|
5588
|
+
assert.deepEqual(oBinding.aContexts,
|
|
5589
|
+
["0", "1", oParentContext, oContext, {iIndex : 4}, undefined, {iIndex : 6}]);
|
|
5590
|
+
});
|
|
5591
|
+
});
|
|
5592
|
+
|
|
5451
5593
|
//*********************************************************************************************
|
|
5452
5594
|
QUnit.test("create and delete with bAtEnd varying", function () {
|
|
5453
5595
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
@@ -6357,7 +6499,7 @@ sap.ui.define([
|
|
|
6357
6499
|
|
|
6358
6500
|
//*********************************************************************************************
|
|
6359
6501
|
[false, true].forEach(function (bChanged) {
|
|
6360
|
-
QUnit.test("
|
|
6502
|
+
QUnit.test("doFetchOrGetQueryOptions: meta path changed = " + bChanged, function (assert) {
|
|
6361
6503
|
var oBinding = this.bindList("TEAM_2_EMPLOYEES"),
|
|
6362
6504
|
oContext = {
|
|
6363
6505
|
getPath : function () {}
|
|
@@ -6387,14 +6529,14 @@ sap.ui.define([
|
|
|
6387
6529
|
.returns(mMergedQueryOptions);
|
|
6388
6530
|
|
|
6389
6531
|
// code under test
|
|
6390
|
-
oQueryOptionsPromise = oBinding.
|
|
6532
|
+
oQueryOptionsPromise = oBinding.doFetchOrGetQueryOptions(oContext);
|
|
6391
6533
|
|
|
6392
6534
|
assert.strictEqual(oBinding.oQueryOptionsPromise, oQueryOptionsPromise);
|
|
6393
6535
|
assert.strictEqual(oQueryOptionsPromise.getResult(), mMergedQueryOptions);
|
|
6394
6536
|
assert.strictEqual(oQueryOptionsPromise.$metaPath, "/TEAMS");
|
|
6395
6537
|
|
|
6396
6538
|
// code under test (promise exists, meta path unchanged)
|
|
6397
|
-
assert.strictEqual(oBinding.
|
|
6539
|
+
assert.strictEqual(oBinding.doFetchOrGetQueryOptions(oContext), oQueryOptionsPromise);
|
|
6398
6540
|
|
|
6399
6541
|
assert.strictEqual(oBinding.oQueryOptionsPromise, oQueryOptionsPromise);
|
|
6400
6542
|
assert.strictEqual(oQueryOptionsPromise.$metaPath, "/TEAMS");
|
|
@@ -6473,15 +6615,15 @@ sap.ui.define([
|
|
|
6473
6615
|
|
|
6474
6616
|
QUnit.test(sTitle, function (assert) {
|
|
6475
6617
|
var oAggregationCache = {
|
|
6476
|
-
addKeptElement :
|
|
6618
|
+
addKeptElement : mustBeMocked
|
|
6477
6619
|
},
|
|
6478
6620
|
oAggregationCacheMock = this.mock(oAggregationCache),
|
|
6479
6621
|
oBinding = this.bindList("/EMPLOYEES"),
|
|
6480
6622
|
oBindingMock = this.mock(oBinding),
|
|
6481
6623
|
oCache = { // #setLateQueryOptions must not be called
|
|
6482
|
-
getValue :
|
|
6624
|
+
getValue : mustBeMocked,
|
|
6483
6625
|
registerChangeListener : function () {},
|
|
6484
|
-
setActive :
|
|
6626
|
+
setActive : mustBeMocked
|
|
6485
6627
|
},
|
|
6486
6628
|
oCacheMock = this.mock(oCache),
|
|
6487
6629
|
oGetExpectation,
|
|
@@ -6639,7 +6781,7 @@ sap.ui.define([
|
|
|
6639
6781
|
this.mock(oBinding).expects("getQueryOptionsForPath")
|
|
6640
6782
|
.withExactArgs("", sinon.match.same(oContext))
|
|
6641
6783
|
.returns(oFixture.mInheritedQueryOptions);
|
|
6642
|
-
this.mock(
|
|
6784
|
+
this.mock(_Helper).expects("merge")
|
|
6643
6785
|
.withExactArgs({}, sinon.match.same(oFixture.mInheritedQueryOptions),
|
|
6644
6786
|
oFixture.mExpectedQueryOptions)
|
|
6645
6787
|
.returns(mQueryOptions);
|
|
@@ -7743,6 +7885,9 @@ sap.ui.define([
|
|
|
7743
7885
|
sGroupId = "group";
|
|
7744
7886
|
|
|
7745
7887
|
oBinding.iCurrentEnd = 42;
|
|
7888
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
7889
|
+
.returns(false);
|
|
7890
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7746
7891
|
oCacheMock.expects("isDeletingInOtherGroup").withExactArgs(sGroupId).returns(false);
|
|
7747
7892
|
oCacheMock.expects("getPendingRequestsPromise").withExactArgs().returns(null);
|
|
7748
7893
|
|
|
@@ -7769,6 +7914,9 @@ sap.ui.define([
|
|
|
7769
7914
|
sGroupId = "group",
|
|
7770
7915
|
oGroupLock = {};
|
|
7771
7916
|
|
|
7917
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
7918
|
+
.returns(false);
|
|
7919
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7772
7920
|
oCacheMock.expects("isDeletingInOtherGroup").never();
|
|
7773
7921
|
oCacheMock.expects("getPendingRequestsPromise").withExactArgs().returns(null);
|
|
7774
7922
|
this.mock(oBinding).expects("lockGroup").withExactArgs(sGroupId).returns(oGroupLock);
|
|
@@ -7793,6 +7941,9 @@ sap.ui.define([
|
|
|
7793
7941
|
oBinding = bindList(this, "/Set"),
|
|
7794
7942
|
oContext = bHeader ? oBinding.getHeaderContext() : undefined;
|
|
7795
7943
|
|
|
7944
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
7945
|
+
.returns(false);
|
|
7946
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7796
7947
|
oCacheMock.expects("isDeletingInOtherGroup").withExactArgs("group").returns(true);
|
|
7797
7948
|
oCacheMock.expects("getPendingRequestsPromise").never();
|
|
7798
7949
|
oCacheMock.expects("requestSideEffects").never();
|
|
@@ -7816,6 +7967,9 @@ sap.ui.define([
|
|
|
7816
7967
|
}),
|
|
7817
7968
|
oPromise;
|
|
7818
7969
|
|
|
7970
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
7971
|
+
.returns(false);
|
|
7972
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7819
7973
|
oCacheMock.expects("isDeletingInOtherGroup").never();
|
|
7820
7974
|
oCacheMock.expects("getPendingRequestsPromise").twice().withExactArgs()
|
|
7821
7975
|
.returns(oPendingRequestsPromise);
|
|
@@ -7911,6 +8065,9 @@ sap.ui.define([
|
|
|
7911
8065
|
oCanceledError.canceled = true;
|
|
7912
8066
|
oBinding.iCurrentEnd = 6;
|
|
7913
8067
|
|
|
8068
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
8069
|
+
.returns(false);
|
|
8070
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7914
8071
|
oCacheMock.expects("isDeletingInOtherGroup").exactly(bHeader && bHasCache ? 1 : 0)
|
|
7915
8072
|
.withExactArgs(sGroupId).returns(false);
|
|
7916
8073
|
oCacheMock.expects("getPendingRequestsPromise").exactly(bHasCache ? 1 : 0).withExactArgs()
|
|
@@ -7966,6 +8123,9 @@ sap.ui.define([
|
|
|
7966
8123
|
sGroupId = "group";
|
|
7967
8124
|
|
|
7968
8125
|
oBinding.iCurrentEnd = 8;
|
|
8126
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
8127
|
+
.returns(false);
|
|
8128
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7969
8129
|
oCacheMock.expects("isDeletingInOtherGroup").withExactArgs(sGroupId).returns(false);
|
|
7970
8130
|
oCacheMock.expects("getPendingRequestsPromise").withExactArgs().returns(null);
|
|
7971
8131
|
this.mock(oBinding).expects("keepOnlyVisibleContexts").withExactArgs()
|
|
@@ -7993,6 +8153,9 @@ sap.ui.define([
|
|
|
7993
8153
|
var oCacheMock = this.getCacheMock(), // must be called before creating the binding
|
|
7994
8154
|
oBinding = bindList(this, "/Set");
|
|
7995
8155
|
|
|
8156
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
8157
|
+
.returns(false);
|
|
8158
|
+
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
7996
8159
|
oCacheMock.expects("isDeletingInOtherGroup").withExactArgs("group").returns(false);
|
|
7997
8160
|
oCacheMock.expects("getPendingRequestsPromise").withExactArgs().returns(null);
|
|
7998
8161
|
this.mock(oBinding).expects("lockGroup").never();
|
|
@@ -8014,15 +8177,15 @@ sap.ui.define([
|
|
|
8014
8177
|
+ bHeaderContext;
|
|
8015
8178
|
|
|
8016
8179
|
QUnit.test(sTitle, function (assert) {
|
|
8017
|
-
var oBinding = this.bindList("/Set",
|
|
8018
|
-
$$aggregation : {} // Note: no hierarchyQualifier!
|
|
8019
|
-
}),
|
|
8180
|
+
var oBinding = this.bindList("/Set"),
|
|
8020
8181
|
oContext = bHeaderContext ? oBinding.getHeaderContext() : undefined,
|
|
8021
8182
|
aFilters = [],
|
|
8022
8183
|
aPaths = [],
|
|
8023
8184
|
oPromise,
|
|
8024
8185
|
oRefreshPromise = {};
|
|
8025
8186
|
|
|
8187
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
8188
|
+
.returns(true);
|
|
8026
8189
|
this.mock(oBinding.oCache).expects("requestSideEffects").never();
|
|
8027
8190
|
this.mock(oBinding.aFilters).expects("concat").withExactArgs(oBinding.aApplicationFilters)
|
|
8028
8191
|
.returns(aFilters);
|
|
@@ -8048,10 +8211,10 @@ sap.ui.define([
|
|
|
8048
8211
|
|
|
8049
8212
|
//*********************************************************************************************
|
|
8050
8213
|
QUnit.test("requestSideEffects with $$aggregation and row context", function (assert) {
|
|
8051
|
-
var oBinding = this.bindList("/Set"
|
|
8052
|
-
$$aggregation : {} // Note: no hierarchyQualifier!
|
|
8053
|
-
});
|
|
8214
|
+
var oBinding = this.bindList("/Set");
|
|
8054
8215
|
|
|
8216
|
+
this.mock(_Helper).expects("isDataAggregation").withExactArgs(oBinding.mParameters)
|
|
8217
|
+
.returns(true);
|
|
8055
8218
|
this.mock(oBinding.oCache).expects("requestSideEffects").never();
|
|
8056
8219
|
this.mock(oBinding).expects("refreshInternal").never();
|
|
8057
8220
|
this.mock(_AggregationHelper).expects("isAffected").never();
|
|
@@ -8059,8 +8222,7 @@ sap.ui.define([
|
|
|
8059
8222
|
assert.throws(function () {
|
|
8060
8223
|
// code under test
|
|
8061
8224
|
oBinding.requestSideEffects("group", [/*aPaths*/], {/*oContext*/});
|
|
8062
|
-
}, new Error(
|
|
8063
|
-
"Must not request side effects for a context of a binding with $$aggregation"));
|
|
8225
|
+
}, new Error("Must not request side effects when using data aggregation"));
|
|
8064
8226
|
});
|
|
8065
8227
|
|
|
8066
8228
|
//*********************************************************************************************
|
|
@@ -10446,6 +10608,80 @@ sap.ui.define([
|
|
|
10446
10608
|
oBinding.checkDeepCreate();
|
|
10447
10609
|
}, new Error("Invalid path 'SO_2_SOITEM/SOITEM_2_SCHDL' in deep create"));
|
|
10448
10610
|
});
|
|
10611
|
+
|
|
10612
|
+
//*********************************************************************************************
|
|
10613
|
+
QUnit.test("onKeepAliveChanged: remove from cache", function () {
|
|
10614
|
+
var oBinding = this.bindList("/SalesOrderList"),
|
|
10615
|
+
oContext = {
|
|
10616
|
+
isDeleted : function () {},
|
|
10617
|
+
isEffectivelyKeptAlive : function () {},
|
|
10618
|
+
getPath : function () {}
|
|
10619
|
+
};
|
|
10620
|
+
|
|
10621
|
+
oBinding.mPreviousContextsByPath = {
|
|
10622
|
+
"/SalesOrderList('1')" : "~" // would actually be the context
|
|
10623
|
+
};
|
|
10624
|
+
this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
|
|
10625
|
+
this.mock(oContext).expects("getPath").twice()
|
|
10626
|
+
.withExactArgs().returns("/SalesOrderList('1')");
|
|
10627
|
+
this.mock(oContext).expects("isEffectivelyKeptAlive").withExactArgs().returns(false);
|
|
10628
|
+
this.mock(oBinding).expects("destroyPreviousContextsLater")
|
|
10629
|
+
.withExactArgs(["/SalesOrderList('1')"]);
|
|
10630
|
+
|
|
10631
|
+
// code under test
|
|
10632
|
+
oBinding.onKeepAliveChanged(oContext);
|
|
10633
|
+
});
|
|
10634
|
+
|
|
10635
|
+
//*********************************************************************************************
|
|
10636
|
+
QUnit.test("onKeepAliveChanged: deleted", function () {
|
|
10637
|
+
var oBinding = this.bindList("/SalesOrderList"),
|
|
10638
|
+
oContext = {
|
|
10639
|
+
isDeleted : function () {}
|
|
10640
|
+
};
|
|
10641
|
+
|
|
10642
|
+
this.mock(oContext).expects("isDeleted").withExactArgs().returns(true);
|
|
10643
|
+
this.mock(oBinding).expects("destroyPreviousContextsLater").never();
|
|
10644
|
+
|
|
10645
|
+
// code under test
|
|
10646
|
+
oBinding.onKeepAliveChanged(oContext);
|
|
10647
|
+
});
|
|
10648
|
+
|
|
10649
|
+
//*********************************************************************************************
|
|
10650
|
+
QUnit.test("onKeepAliveChanged: in the binding's collection", function () {
|
|
10651
|
+
var oBinding = this.bindList("/SalesOrderList"),
|
|
10652
|
+
oContext = {
|
|
10653
|
+
isDeleted : function () {},
|
|
10654
|
+
getPath : function () {}
|
|
10655
|
+
};
|
|
10656
|
+
|
|
10657
|
+
this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
|
|
10658
|
+
this.mock(oContext).expects("getPath").withExactArgs().returns("/SalesOrderList('1')");
|
|
10659
|
+
this.mock(oBinding).expects("destroyPreviousContextsLater").never();
|
|
10660
|
+
|
|
10661
|
+
// code under test
|
|
10662
|
+
oBinding.onKeepAliveChanged(oContext);
|
|
10663
|
+
});
|
|
10664
|
+
|
|
10665
|
+
//*********************************************************************************************
|
|
10666
|
+
QUnit.test("onKeepAliveChanged: effectively kept alive", function () {
|
|
10667
|
+
var oBinding = this.bindList("/SalesOrderList"),
|
|
10668
|
+
oContext = {
|
|
10669
|
+
isDeleted : function () {},
|
|
10670
|
+
isEffectivelyKeptAlive : function () {},
|
|
10671
|
+
getPath : function () {}
|
|
10672
|
+
};
|
|
10673
|
+
|
|
10674
|
+
oBinding.mPreviousContextsByPath = {
|
|
10675
|
+
"/SalesOrderList('1')" : oContext
|
|
10676
|
+
};
|
|
10677
|
+
this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
|
|
10678
|
+
this.mock(oContext).expects("getPath").withExactArgs().returns("/SalesOrderList('1')");
|
|
10679
|
+
this.mock(oContext).expects("isEffectivelyKeptAlive").withExactArgs().returns(true);
|
|
10680
|
+
this.mock(oBinding).expects("destroyPreviousContextsLater").never();
|
|
10681
|
+
|
|
10682
|
+
// code under test
|
|
10683
|
+
oBinding.onKeepAliveChanged(oContext);
|
|
10684
|
+
});
|
|
10449
10685
|
});
|
|
10450
10686
|
|
|
10451
10687
|
//TODO integration: 2 entity sets with same $expand, but different $select
|