@openui5/sap.ui.core 1.126.1 → 1.127.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/THIRDPARTY.txt +1 -1
- 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.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- 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/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +5 -15
- package/src/sap/ui/base/BindingInfo.js +45 -24
- package/src/sap/ui/base/DataType.js +19 -0
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +31 -1
- package/src/sap/ui/base/ManagedObject.js +3 -4
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- 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/core/.library +1 -1
- package/src/sap/ui/core/.theming +8 -0
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +1 -1
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/Control.js +2 -2
- package/src/sap/ui/core/Core.js +57 -2
- 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 +166 -16
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +17 -31
- 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/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +2 -2
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- 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 -55
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +8 -0
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.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/Theming.js +4 -4
- package/src/sap/ui/core/Title.js +2 -2
- package/src/sap/ui/core/TooltipBase.js +2 -2
- 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/cache/CacheManagerNOP.js +3 -0
- package/src/sap/ui/core/cache/LRUPersistentCache.js +13 -4
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- 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/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/fieldhelp/FieldHelp.js +53 -11
- package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +4 -0
- package/src/sap/ui/core/format/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +37 -21
- 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/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +30 -18
- package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +294 -282
- 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 +4 -4
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -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/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 +1 -1
- package/src/sap/ui/core/support/ToolsAPI.js +5 -5
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- 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/base.less +119 -49
- 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/library.source.less +2 -0
- package/src/sap/ui/core/themes/base/skeleton.less +958 -0
- package/src/sap/ui/core/theming/ThemeManager.js +56 -73
- 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/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/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 +1 -1
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/dom/findTabbable.js +244 -0
- package/src/sap/ui/dom/isElementCovered.js +51 -0
- package/src/sap/ui/events/F6Navigation.js +10 -164
- package/src/sap/ui/model/ClientModel.js +1 -1
- 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/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- 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/Type.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -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 +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- 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 +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/ODataModel.js +144 -14
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +18 -8
- package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +12 -9
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +30 -14
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +254 -189
- package/src/sap/ui/model/odata/v4/ODataModel.js +51 -13
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +4 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +68 -32
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +9 -6
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +7 -7
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +17 -11
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +11 -3
- package/src/sap/ui/model/odata/v4/lib/_TreeState.js +10 -4
- 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/performance/trace/FESR.js +3 -0
- package/src/sap/ui/performance/trace/Interaction.js +4 -2
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/qunit/utils/nextUIUpdate.js +7 -53
- package/src/sap/ui/qunit/utils/waitForThemeApplied.js +6 -42
- package/src/sap/ui/test/ModuleTracking.js +1 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/Utils.js +3 -7
- package/src/sap/ui/test/opaQunit.js +3 -3
- package/src/sap/ui/test/utils/nextUIUpdate.js +64 -0
- package/src/sap/ui/test/utils/waitForThemeApplied.js +58 -0
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader.js +9 -0
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/SandboxModel.js +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/data/SalesOrderList('0500000000')-requestSideEffects.json +14 -14
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +32 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +22 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +69 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/MIT.ListBindingTemplate.AnnotationChanges.html +63 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +19 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/SandboxModel.js +1 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/data/equipments.json +37 -22
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/data/localAnnotations.xml +10 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +5 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +32 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +30 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +12 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +7 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +2 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/SandboxModel.js +14 -14
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/pages/Main.js +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +3 -0
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +1 -1
- package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +2 -2
- package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Core.qunit.js +1 -1
- package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +1 -1
- package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +1 -1
- package/test/sap/ui/core/qunit/CustomThemeFallback_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Element_data.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Element_destroy.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Element_focus.qunit.js +196 -3
- package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +1 -1
- package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +2 -3
- package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +1 -1
- package/test/sap/ui/core/qunit/FieldGroup.qunit.js +1 -1
- package/test/sap/ui/core/qunit/FocusHandler.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Fragment.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/HTML.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Icon.qunit.js +1 -1
- package/test/sap/ui/core/qunit/InvisibleText.qunit.js +1 -1
- package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +8 -4
- package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +1 -1
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Rendering.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ScrollBar.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +1 -1
- package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +1 -1
- package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ThemeManager.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Theming.qunit.js +1 -1
- package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +1 -1
- package/test/sap/ui/core/qunit/TooltipBase.qunit.js +1 -1
- package/test/sap/ui/core/qunit/UIArea.qunit.js +1 -1
- package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +1 -1
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +1 -8
- package/test/sap/ui/core/qunit/component/Component.qunit.js +36 -36
- package/test/sap/ui/core/qunit/component/ComponentContainer.qunit.js +2 -10
- package/test/sap/ui/core/qunit/component/ComponentContainer_unavoidablySync.qunit.js +2 -10
- package/test/sap/ui/core/qunit/component/ComponentSupport.qunit.js +5 -5
- package/test/sap/ui/core/qunit/component/Component_containedInLibrary.qunit.js +10 -10
- package/test/sap/ui/core/qunit/component/Component_dependencyLoading.qunit.js +7 -7
- package/test/sap/ui/core/qunit/component/Component_dependencyLoading_unavoidablySync.qunit.js +6 -6
- package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +8 -8
- package/test/sap/ui/core/qunit/component/Customizing.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +3 -3
- package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +2 -2
- package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +3 -3
- package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Manifest.qunit.js +10 -10
- package/test/sap/ui/core/qunit/component/Manifest_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Metadata.qunit.js +47 -47
- package/test/sap/ui/core/qunit/component/Metadata_unavoidablySync.qunit.js +33 -33
- package/test/sap/ui/core/qunit/component/Models.qunit.js +57 -57
- package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +12 -12
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +2 -2
- package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/manifest.json +3 -3
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/componentVariant/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/embedded/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/embedded/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inherit/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inherit/component.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/inherit/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/inherit/parent/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inherit/parent/component.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/inherit/parent/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/manifest.json +3 -3
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/manifest.json +3 -3
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/manifest.json +3 -3
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/manifest.json +3 -3
- package/test/sap/ui/core/qunit/component/testdata/manifestload/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/minUI5Version/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/minUI5Version/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/mixed/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/mixed/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/component.json +8 -8
- package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/modelsMisc/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/modelsMisc/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/other/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/routerClass/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/routerClass/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/routing/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/routing/RouterExtension.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/routing/TestView.js +1 -8
- package/test/sap/ui/core/qunit/component/testdata/routing/targets/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/routing_legacyAPIs/Component.js +5 -5
- package/test/sap/ui/core/qunit/component/testdata/routing_legacyAPIs/targets/Component.js +5 -5
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/terminologies/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component4/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component4/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Main.controller.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v1/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v1/component.json +8 -8
- package/test/sap/ui/core/qunit/component/testdata/v1empty/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v1empty/component.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v1inline/Component.js +10 -10
- package/test/sap/ui/core/qunit/component/testdata/v1missing/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/manifest.json +9 -9
- package/test/sap/ui/core/qunit/component/testdata/v2empty/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v2empty/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +10 -10
- package/test/sap/ui/core/qunit/component/testdata/v2missing/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v2models/empty/Component.js +3 -3
- package/test/sap/ui/core/qunit/component/testdata/v2models/empty/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v2models/extension/Component.js +4 -4
- package/test/sap/ui/core/qunit/component/testdata/v2models/parent/Component.js +12 -12
- package/test/sap/ui/core/qunit/component/testdata/v2models/parent/CustomModel.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2models/parent/ModelNotDefined.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2models/parentValid/Component.js +11 -11
- package/test/sap/ui/core/qunit/component/testdata/v2models/ui5Urls/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2models/ui5Urls/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2version/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v2version/manifest.json +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v4models/Component.js +3 -3
- package/test/sap/ui/core/qunit/component/testdata/v4models/cacheTokens/Component.js +3 -3
- package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/Component.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/manifest.json +1 -1
- package/test/sap/ui/core/qunit/component/testdata/v4models/unsupportedVersion/Component.js +3 -3
- package/test/sap/ui/core/qunit/component/testdata/verticalLayout/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/verticalLayout_legacyAPIs/Component.js +1 -1
- package/test/sap/ui/core/qunit/component/testdata/view/Main.controller.js +2 -2
- package/test/sap/ui/core/qunit/component/testdata/view/Main.view.xml +1 -1
- package/test/sap/ui/core/qunit/component/testdata/view/MainAsync.view.xml +1 -1
- package/test/sap/ui/core/qunit/component/testdata/view/MainAsyncWithWrongNesting.view.xml +1 -1
- package/test/sap/ui/core/qunit/component/testdata/view/Nested.view.xml +1 -1
- package/test/sap/ui/core/qunit/component/testsuite.component.qunit.js +2 -8
- package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +1 -1
- package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +1 -1
- package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +1 -1
- package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +1 -1
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelp.qunit.js +184 -51
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +2 -0
- package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +1 -1
- package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +1 -1
- package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +1 -1
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +1 -1
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +1 -1
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +188 -61
- package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +1 -1
- package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +1 -1
- package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +1 -1
- package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +511 -21
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +382 -3
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +28 -4
- package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +34 -20
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +80 -15
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +90 -6
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1201 -202
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +34 -0
- package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +38 -0
- package/test/sap/ui/core/qunit/odata/v4/data/annotations_tea_busi.xml +14 -0
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_tea_busi_supplier.xml +36 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +319 -38
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +22 -9
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +2 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +53 -10
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +6 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +30 -1
- package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +1 -1
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +1 -1
- package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +1 -1
- package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +1 -1
- package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +1 -1
- package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +1 -1
- package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +1 -1
- package/test/sap/ui/core/qunit/opa/testsuite.opa.qunit.js +448 -426
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +8 -4
- package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +1 -1
- package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +1 -1
- package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +1 -1
- package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +1 -1
- package/test/sap/ui/core/qunit/ui5classes/ManagedObject.qunit.js +62 -1
- package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/Popup.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +3 -3
- package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +3 -3
- package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +3 -3
- package/test/sap/ui/core/qunit/util/reflection/testdata/comp/Component.js +10 -0
- package/test/sap/ui/core/qunit/util/reflection/testsuite.reflection.qunit.html +14 -0
- package/test/sap/ui/core/qunit/util/reflection/testsuite.reflection.qunit.js +30 -0
- package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +3 -56
- package/test/sap/ui/core/relnotes/changes-1.126.json +1 -17
- package/test/sap/ui/core/relnotes/changes-1.127.json +52 -0
- package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
- package/test/sap/ui/qunit/TestRunner.js +721 -521
- package/test/sap/ui/qunit/testrunner.css +123 -20
- package/test/sap/ui/qunit/testrunner.html +57 -287
- /package/test/sap/ui/core/qunit/{component/testdata/other → util/reflection/testdata/comp}/fragment-withTemplating.fragment.xml +0 -0
|
@@ -9,6 +9,7 @@ sap.ui.define([
|
|
|
9
9
|
"sap/m/Input",
|
|
10
10
|
"sap/m/Label",
|
|
11
11
|
"sap/ui/Device",
|
|
12
|
+
"sap/ui/base/BindingInfo",
|
|
12
13
|
"sap/ui/base/ManagedObjectObserver",
|
|
13
14
|
"sap/ui/base/SyncPromise",
|
|
14
15
|
"sap/ui/core/Lib",
|
|
@@ -40,7 +41,7 @@ sap.ui.define([
|
|
|
40
41
|
"sap/ui/util/XMLHelper"
|
|
41
42
|
// load Table resources upfront to avoid loading times > 1 second for the first test using Table
|
|
42
43
|
// "sap/ui/table/Table"
|
|
43
|
-
], function (Log, Localization, merge, uid, Input, Label, Device, ManagedObjectObserver, SyncPromise,
|
|
44
|
+
], function (Log, Localization, merge, uid, Input, Label, Device, BindingInfo, ManagedObjectObserver, SyncPromise,
|
|
44
45
|
Library, Messaging, UI5Date, FieldHelp, FieldHelpUtil, Message, MessageType, Controller, View, Rendering,
|
|
45
46
|
BindingMode, Filter, FilterOperator, FilterType, Model, Sorter, JSONModel, MessageModel, CountMode,
|
|
46
47
|
MessageScope, Decimal, Context, ODataModel, XMLModel, TestUtils, datajs, XMLHelper) {
|
|
@@ -86,6 +87,18 @@ sap.ui.define([
|
|
|
86
87
|
{target : sTarget, additionalTargets : aAdditionalTargets});
|
|
87
88
|
}
|
|
88
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Compares two given field help hotspots.
|
|
92
|
+
*
|
|
93
|
+
* @param {object} a A field help hotspot
|
|
94
|
+
* @param {object} b Another field help hotspot
|
|
95
|
+
*
|
|
96
|
+
* @returns {-1|0|1} Wheter <code>a</code> is smaller, equal or greater
|
|
97
|
+
*/
|
|
98
|
+
function compareHotspots(a, b) {
|
|
99
|
+
return a.hotspotId.localeCompare(b.hotspotId) || a.backendHelpKey.id.localeCompare(b.backendHelpKey.id);
|
|
100
|
+
}
|
|
101
|
+
|
|
89
102
|
/**
|
|
90
103
|
* Creates an error response object for a technical error (http status code = 4xx/5xx).
|
|
91
104
|
*
|
|
@@ -101,6 +114,8 @@ sap.ui.define([
|
|
|
101
114
|
* The HTTP status code
|
|
102
115
|
* @param {string} [oErrorResponseInfo.target]
|
|
103
116
|
* The message target
|
|
117
|
+
* @param {object} [oErrorResponseInfo.headers]
|
|
118
|
+
* The message target
|
|
104
119
|
* @returns {object}
|
|
105
120
|
* The error response
|
|
106
121
|
*/
|
|
@@ -123,7 +138,7 @@ sap.ui.define([
|
|
|
123
138
|
error : oError
|
|
124
139
|
}),
|
|
125
140
|
crashBatch : oErrorResponseInfo.crashBatch,
|
|
126
|
-
headers : {"Content-Type" : "application/json;charset=utf-8"},
|
|
141
|
+
headers : oErrorResponseInfo.headers || {"Content-Type" : "application/json;charset=utf-8"},
|
|
127
142
|
statusCode : oErrorResponseInfo.statusCode || 500,
|
|
128
143
|
statusText : "FAILED"
|
|
129
144
|
};
|
|
@@ -1865,7 +1880,7 @@ sap.ui.define([
|
|
|
1865
1880
|
path : "/SalesOrderSet('1')/ToBusinessPartner/ToProducts",
|
|
1866
1881
|
title : "Absolute path with three segments to a collection; 'to 1' navigation in the middle"
|
|
1867
1882
|
}, {
|
|
1868
|
-
// even if key
|
|
1883
|
+
// even if key predicate for ToBusinessPartner cannot be resolved, canonical path for the
|
|
1869
1884
|
// product can be computed
|
|
1870
1885
|
expectedCanonicalRequest : {
|
|
1871
1886
|
deepPath : "/SalesOrderSet('1')/ToBusinessPartner/ToProducts('P1')",
|
|
@@ -23108,15 +23123,6 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23108
23123
|
<Label labelFor="Note0" text="Label for Item or Sales Order Note" />
|
|
23109
23124
|
<Input id="Note0" value="{Note}" />
|
|
23110
23125
|
</FlexBox>`;
|
|
23111
|
-
function compare(a, b) {
|
|
23112
|
-
if (a === b) {
|
|
23113
|
-
return 0;
|
|
23114
|
-
}
|
|
23115
|
-
return a < b ? -1 : 1;
|
|
23116
|
-
}
|
|
23117
|
-
function sortHotspots(a, b) {
|
|
23118
|
-
return compare(a.hotspotId, b.hotspotId) || compare(a.backendHelpKey.id, b.backendHelpKey.id);
|
|
23119
|
-
}
|
|
23120
23126
|
let fnResolve;
|
|
23121
23127
|
function updateCallback(aCurrentHotspots) {
|
|
23122
23128
|
fnResolve(aCurrentHotspots);
|
|
@@ -23126,7 +23132,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23126
23132
|
return new Promise((resolve) => {
|
|
23127
23133
|
fnResolve = resolve;
|
|
23128
23134
|
}).then((aCurrentHotspots) => {
|
|
23129
|
-
assert.deepEqual(aCurrentHotspots.sort(
|
|
23135
|
+
assert.deepEqual(aCurrentHotspots.sort(compareHotspots), aExpectedHotspots.sort(compareHotspots),
|
|
23130
23136
|
"Update called: " + sTestTitle);
|
|
23131
23137
|
});
|
|
23132
23138
|
}
|
|
@@ -23158,7 +23164,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23158
23164
|
FieldHelpUtil.setDocumentationRef(oFilterDynamicallyDestroyed,
|
|
23159
23165
|
"urn:sap-com:documentation:key?=type=DTEL&id=SALESORDERID");
|
|
23160
23166
|
const aExpectedHotspots = [{
|
|
23161
|
-
"backendHelpKey": {id: "FOO",
|
|
23167
|
+
"backendHelpKey": {id: "FOO", type: "DTEL"},
|
|
23162
23168
|
"hotspotId": oFilterWithFieldHelp.getId(),
|
|
23163
23169
|
"labelText": "Label for filter with field help"
|
|
23164
23170
|
}, {
|
|
@@ -23170,15 +23176,15 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23170
23176
|
"hotspotId": oView.byId("Note").getId(),
|
|
23171
23177
|
"labelText": "Label for Note"
|
|
23172
23178
|
}, { // documentation ref from OData annotation - composite binding part 0
|
|
23173
|
-
"backendHelpKey": {id: "GROSSAMOUNT",
|
|
23179
|
+
"backendHelpKey": {id: "GROSSAMOUNT", type: "DTEL"},
|
|
23174
23180
|
"hotspotId": oView.byId("Amount0").getId(),
|
|
23175
23181
|
"labelText": "Label for both amount and currency"
|
|
23176
23182
|
}, { // documentation ref from OData annotation - composite binding part 1
|
|
23177
|
-
"backendHelpKey": {id: "/FOO/CURRENCY",
|
|
23183
|
+
"backendHelpKey": {id: "/FOO/CURRENCY", type: "DTEL"},
|
|
23178
23184
|
"hotspotId": oView.byId("Amount0").getId(),
|
|
23179
23185
|
"labelText": "Label for both amount and currency"
|
|
23180
23186
|
}, { // documentation ref from OData annotation - composite binding showning only one part
|
|
23181
|
-
"backendHelpKey": {id: "GROSSAMOUNT",
|
|
23187
|
+
"backendHelpKey": {id: "GROSSAMOUNT", type: "DTEL"},
|
|
23182
23188
|
"hotspotId": oView.byId("Amount1").getId(),
|
|
23183
23189
|
"labelText": "Label for amount only"
|
|
23184
23190
|
}];
|
|
@@ -23198,7 +23204,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23198
23204
|
const oUpdateCalledPromise = waitForUpdate([
|
|
23199
23205
|
...aExpectedHotspots,
|
|
23200
23206
|
{
|
|
23201
|
-
"backendHelpKey": {id: "BAZ",
|
|
23207
|
+
"backendHelpKey": {id: "BAZ", type: "DTEL"},
|
|
23202
23208
|
"hotspotId": oLateFilterField.getId(),
|
|
23203
23209
|
"labelText": "Label for late filter field"
|
|
23204
23210
|
}], "late creation of a filter field");
|
|
@@ -23222,11 +23228,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23222
23228
|
const oUpdateCalledPromise = waitForUpdate([
|
|
23223
23229
|
...aExpectedHotspots,
|
|
23224
23230
|
{
|
|
23225
|
-
"backendHelpKey": {id: "GROSSAMOUNT",
|
|
23231
|
+
"backendHelpKey": {id: "GROSSAMOUNT", type: "DTEL"},
|
|
23226
23232
|
"hotspotId": oView.byId("Amount2").getId(),
|
|
23227
23233
|
"labelText": "Label for both amount and currency, lazy bound"
|
|
23228
23234
|
}, {
|
|
23229
|
-
"backendHelpKey": {id: "/FOO/CURRENCY",
|
|
23235
|
+
"backendHelpKey": {id: "/FOO/CURRENCY", type: "DTEL"},
|
|
23230
23236
|
"hotspotId": oView.byId("Amount2").getId(),
|
|
23231
23237
|
"labelText": "Label for both amount and currency, lazy bound"
|
|
23232
23238
|
}], "late composite binding");
|
|
@@ -23264,7 +23270,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23264
23270
|
const oUpdateCalledPromise = waitForUpdate([
|
|
23265
23271
|
...aExpectedHotspots,
|
|
23266
23272
|
{
|
|
23267
|
-
"backendHelpKey": {id: "ITEMNOTE",
|
|
23273
|
+
"backendHelpKey": {id: "ITEMNOTE", type: "DTEL"},
|
|
23268
23274
|
"hotspotId": oView.byId("Note0").getId(),
|
|
23269
23275
|
"labelText": "Label for Item or Sales Order Note"
|
|
23270
23276
|
}], "late initially setting a binding context");
|
|
@@ -23311,4 +23317,488 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
23311
23317
|
FieldHelp.getInstance().deactivate();
|
|
23312
23318
|
});
|
|
23313
23319
|
});
|
|
23320
|
+
|
|
23321
|
+
//*********************************************************************************************
|
|
23322
|
+
// Scenario 1: If a child control with a field help is embedded in a parent control with a
|
|
23323
|
+
// <code>fieldHelpDisplay</code> association, the field help is displayed at the parent control.
|
|
23324
|
+
// Scenario 2: If a parent control with a <code>fieldHelpDisplay</code> association has multiple child controls with
|
|
23325
|
+
// field helps, those field helps are displayed at the parent control and not the children.
|
|
23326
|
+
// Scenario 3+4: same as 1 and 2 but instead of <code>fieldHelpDisplay</code> association the parent control has
|
|
23327
|
+
// a BindingInfo.OriginalParent symbol assigned.
|
|
23328
|
+
// JIRA: CPOUI5MODELS-1761
|
|
23329
|
+
QUnit.test("Field Help: fieldHelpDisplay association and BindingInfo.OriginalParent symbol", function (assert) {
|
|
23330
|
+
const oModel = createSalesOrdersModel({defaultBindingMode: BindingMode.TwoWay});
|
|
23331
|
+
const sView = `
|
|
23332
|
+
<FlexBox id="form" binding="{/SalesOrderSet('1')}">
|
|
23333
|
+
<Label labelFor="ShowFieldHelp0" text="Element displaying field help" />
|
|
23334
|
+
<Text id="ShowFieldHelp0" />
|
|
23335
|
+
<FlexBox id="ParentWithFieldHelpDisplay">
|
|
23336
|
+
<Label labelFor="Amount0" text="Label for both amount and currency" />
|
|
23337
|
+
<Input id="Amount0" value="{
|
|
23338
|
+
mode: 'TwoWay',
|
|
23339
|
+
parts: [{
|
|
23340
|
+
constraints: {precision: 16, scale: 3},
|
|
23341
|
+
path: 'GrossAmount',
|
|
23342
|
+
type: 'sap.ui.model.odata.type.Decimal'
|
|
23343
|
+
}, {
|
|
23344
|
+
constraints: {maxLength: 5},
|
|
23345
|
+
path: 'CurrencyCode',
|
|
23346
|
+
type: 'sap.ui.model.odata.type.String'
|
|
23347
|
+
}],
|
|
23348
|
+
type: 'sap.ui.model.type.Currency'
|
|
23349
|
+
}" />
|
|
23350
|
+
<Label labelFor="AmountOnly" text="Label for amount only" />
|
|
23351
|
+
<Input id="AmountOnly" value="{
|
|
23352
|
+
formatOptions: {showMeasure: false},
|
|
23353
|
+
mode: 'TwoWay',
|
|
23354
|
+
parts: [{
|
|
23355
|
+
constraints: {precision: 16, scale: 3},
|
|
23356
|
+
path: 'GrossAmount',
|
|
23357
|
+
type: 'sap.ui.model.odata.type.Decimal'
|
|
23358
|
+
}, {
|
|
23359
|
+
constraints: {maxLength: 5},
|
|
23360
|
+
path: 'CurrencyCode',
|
|
23361
|
+
type: 'sap.ui.model.odata.type.String'
|
|
23362
|
+
}],
|
|
23363
|
+
type: 'sap.ui.model.type.Currency'
|
|
23364
|
+
}" />
|
|
23365
|
+
<Label labelFor="Note" text="Label for Note" />
|
|
23366
|
+
<Input id="Note" value="{path: 'Note', type: 'sap.ui.model.odata.type.String'}" />
|
|
23367
|
+
</FlexBox>
|
|
23368
|
+
<Label labelFor="ShowFieldHelp1" text="Element displaying field help (OriginalParent)" />
|
|
23369
|
+
<Text id="ShowFieldHelp1" />
|
|
23370
|
+
<FlexBox id="ParentWithOriginalParentSymbol">
|
|
23371
|
+
<Label labelFor="Amount1" text="Label for both amount and currency" />
|
|
23372
|
+
<Input id="Amount1" value="{
|
|
23373
|
+
mode: 'TwoWay',
|
|
23374
|
+
parts: [{
|
|
23375
|
+
constraints: {precision: 16, scale: 3},
|
|
23376
|
+
path: 'GrossAmount',
|
|
23377
|
+
type: 'sap.ui.model.odata.type.Decimal'
|
|
23378
|
+
}, {
|
|
23379
|
+
constraints: {maxLength: 5},
|
|
23380
|
+
path: 'CurrencyCode',
|
|
23381
|
+
type: 'sap.ui.model.odata.type.String'
|
|
23382
|
+
}],
|
|
23383
|
+
type: 'sap.ui.model.type.Currency'
|
|
23384
|
+
}" />
|
|
23385
|
+
<Label labelFor="AmountOnly1" text="Label for amount only" />
|
|
23386
|
+
<Input id="AmountOnly1" value="{
|
|
23387
|
+
formatOptions: {showMeasure: false},
|
|
23388
|
+
mode: 'TwoWay',
|
|
23389
|
+
parts: [{
|
|
23390
|
+
constraints: {precision: 16, scale: 3},
|
|
23391
|
+
path: 'GrossAmount',
|
|
23392
|
+
type: 'sap.ui.model.odata.type.Decimal'
|
|
23393
|
+
}, {
|
|
23394
|
+
constraints: {maxLength: 5},
|
|
23395
|
+
path: 'CurrencyCode',
|
|
23396
|
+
type: 'sap.ui.model.odata.type.String'
|
|
23397
|
+
}],
|
|
23398
|
+
type: 'sap.ui.model.type.Currency'
|
|
23399
|
+
}" />
|
|
23400
|
+
<Label labelFor="Note1" text="Label for Note" />
|
|
23401
|
+
<Input id="Note1" value="{path: 'Note', type: 'sap.ui.model.odata.type.String'}" />
|
|
23402
|
+
</FlexBox>
|
|
23403
|
+
</FlexBox>`;
|
|
23404
|
+
let fnResolve;
|
|
23405
|
+
function updateCallback(aCurrentHotspots) {
|
|
23406
|
+
fnResolve(aCurrentHotspots);
|
|
23407
|
+
}
|
|
23408
|
+
function waitForUpdate(aHotspots, sTestTitle) {
|
|
23409
|
+
const aExpectedHotspots = aHotspots;
|
|
23410
|
+
return new Promise((resolve) => {
|
|
23411
|
+
fnResolve = resolve;
|
|
23412
|
+
}).then((aCurrentHotspots) => {
|
|
23413
|
+
assert.deepEqual(aCurrentHotspots.sort(compareHotspots), aExpectedHotspots.sort(compareHotspots),
|
|
23414
|
+
"Update called: " + sTestTitle);
|
|
23415
|
+
});
|
|
23416
|
+
}
|
|
23417
|
+
|
|
23418
|
+
this.expectHeadRequest()
|
|
23419
|
+
.expectRequest("SalesOrderSet('1')", {
|
|
23420
|
+
__metadata: {uri: "SalesOrderSet('1')"},
|
|
23421
|
+
CurrencyCode: "EUR",
|
|
23422
|
+
DeliveryStatus: "N",
|
|
23423
|
+
GrossAmount: "1.23",
|
|
23424
|
+
Note: "Sales Order Note",
|
|
23425
|
+
SalesOrderID: "1"
|
|
23426
|
+
})
|
|
23427
|
+
.expectValue("Amount0", "1.23")
|
|
23428
|
+
.expectValue("AmountOnly", "1.23")
|
|
23429
|
+
.expectValue("Amount0", "1.23\xa0EUR")
|
|
23430
|
+
.expectValue("Note", "Sales Order Note");
|
|
23431
|
+
|
|
23432
|
+
return this.createView(assert, sView, {undefined: oModel, filter: new JSONModel({filter: "42"})}).then(() => {
|
|
23433
|
+
const oView = this.oView;
|
|
23434
|
+
oView.byId("ParentWithFieldHelpDisplay").setFieldHelpDisplay(oView.byId("ShowFieldHelp0"));
|
|
23435
|
+
oView.byId("ParentWithOriginalParentSymbol")[BindingInfo.OriginalParent] = oView.byId("ShowFieldHelp1");
|
|
23436
|
+
const aExpectedHotspots = [{
|
|
23437
|
+
"backendHelpKey": {id: "GROSSAMOUNT", type: "DTEL"},
|
|
23438
|
+
"hotspotId": oView.byId("ShowFieldHelp0").getId(),
|
|
23439
|
+
"labelText": "Element displaying field help"
|
|
23440
|
+
}, {
|
|
23441
|
+
"backendHelpKey": {id: "/FOO/CURRENCY", type: "DTEL"},
|
|
23442
|
+
"hotspotId": oView.byId("ShowFieldHelp0").getId(),
|
|
23443
|
+
"labelText": "Element displaying field help"
|
|
23444
|
+
}, {
|
|
23445
|
+
"backendHelpKey": {id: "NOTE", origin: "MyOrigin", type: "DTEL"},
|
|
23446
|
+
"hotspotId": oView.byId("ShowFieldHelp0").getId(),
|
|
23447
|
+
"labelText": "Element displaying field help"
|
|
23448
|
+
},{
|
|
23449
|
+
"backendHelpKey": {id: "GROSSAMOUNT", type: "DTEL"},
|
|
23450
|
+
"hotspotId": oView.byId("ShowFieldHelp1").getId(),
|
|
23451
|
+
"labelText": "Element displaying field help (OriginalParent)"
|
|
23452
|
+
}, {
|
|
23453
|
+
"backendHelpKey": {id: "/FOO/CURRENCY", type: "DTEL"},
|
|
23454
|
+
"hotspotId": oView.byId("ShowFieldHelp1").getId(),
|
|
23455
|
+
"labelText": "Element displaying field help (OriginalParent)"
|
|
23456
|
+
}, {
|
|
23457
|
+
"backendHelpKey": {id: "NOTE", origin: "MyOrigin", type: "DTEL"},
|
|
23458
|
+
"hotspotId": oView.byId("ShowFieldHelp1").getId(),
|
|
23459
|
+
"labelText": "Element displaying field help (OriginalParent)"
|
|
23460
|
+
}];
|
|
23461
|
+
const oUpdateCalledPromise = waitForUpdate(aExpectedHotspots, "initial activation");
|
|
23462
|
+
|
|
23463
|
+
// code under test
|
|
23464
|
+
FieldHelp.getInstance().activate(updateCallback);
|
|
23465
|
+
|
|
23466
|
+
return Promise.all([
|
|
23467
|
+
oUpdateCalledPromise,
|
|
23468
|
+
this.waitForChanges(assert, "Initial activation")
|
|
23469
|
+
]);
|
|
23470
|
+
}).finally(() => {
|
|
23471
|
+
FieldHelp.getInstance().deactivate();
|
|
23472
|
+
});
|
|
23473
|
+
});
|
|
23474
|
+
|
|
23475
|
+
//*********************************************************************************************
|
|
23476
|
+
// Scenario: Server responds with 503 HTTP status code and "Retry-after" response header
|
|
23477
|
+
// 1) $batch with GET request answered with 503, no error no change, callback waiting
|
|
23478
|
+
// 1a) Deferred binding request data, no request happen because pending promise, callback not called again,
|
|
23479
|
+
// callback promise reused.
|
|
23480
|
+
// 2) Callback resolves promise -> first $batch repeated, second $batch for deferred binding also sent
|
|
23481
|
+
// 3) ODataBinding#refresh results in different $batches, first $batch response processing reuses already
|
|
23482
|
+
// existing promise of 2nd $batch which responded faster with 503.
|
|
23483
|
+
// 3a) Callback rejects promise with supplied error -> requests rejected, error reported only once
|
|
23484
|
+
// 4) 3 $batch, 2nd and 3rd answered with 503, 1st answer pending
|
|
23485
|
+
// 4a) 1st $batch gets 503 answer, reuses already existing retry-after promise
|
|
23486
|
+
// 4b) resolve retry-after promise and see all 3 $batch repeated
|
|
23487
|
+
// 5) Callback rejects promise with own Error reason
|
|
23488
|
+
// 5a) preparation, GET and MERGE request answered with 503
|
|
23489
|
+
// 5b) reject with own reason, error is not reported, only logged
|
|
23490
|
+
// 5c) after rejection the change is still present and can be repeated via #submitChanges wereas GET is not repeated
|
|
23491
|
+
//
|
|
23492
|
+
// JIRA: CPOUI5MODELS-1750
|
|
23493
|
+
QUnit.test("503 retry-after handling", function (assert) {
|
|
23494
|
+
let iCallbackCounter = 0;
|
|
23495
|
+
let bCallbackWaiting = false;
|
|
23496
|
+
let iErrorHandlerCalled = 0;
|
|
23497
|
+
const mParameters = {
|
|
23498
|
+
error() {
|
|
23499
|
+
assert.ok(true);
|
|
23500
|
+
iErrorHandlerCalled += 1;
|
|
23501
|
+
},
|
|
23502
|
+
success() {
|
|
23503
|
+
assert.ok(false);
|
|
23504
|
+
}};
|
|
23505
|
+
let fnRejectRetryAfter;
|
|
23506
|
+
let pRetryAfterFinished;
|
|
23507
|
+
let fnResolveRetryAfter;
|
|
23508
|
+
let fnRolveLate503Response;
|
|
23509
|
+
let oSuppliedError;
|
|
23510
|
+
const oModel = createSalesOrdersModel({refreshAfterChange : false});
|
|
23511
|
+
const sView = `
|
|
23512
|
+
<FlexBox id="objectPage1" binding="{/SalesOrderSet('1')}">
|
|
23513
|
+
<Text id="note1" text="{Note}" />
|
|
23514
|
+
</FlexBox>
|
|
23515
|
+
<FlexBox id="objectPage2">
|
|
23516
|
+
<Text id="note2" text="{Note}" />
|
|
23517
|
+
</FlexBox>
|
|
23518
|
+
<FlexBox id="objectPage3">
|
|
23519
|
+
<Text id="note3" text="{Note}" />
|
|
23520
|
+
</FlexBox>`;
|
|
23521
|
+
|
|
23522
|
+
oModel.setRetryAfterHandler((oError) => {
|
|
23523
|
+
iCallbackCounter += 1;
|
|
23524
|
+
bCallbackWaiting = true;
|
|
23525
|
+
oSuppliedError = oError;
|
|
23526
|
+
assert.ok(oError instanceof Error);
|
|
23527
|
+
assert.strictEqual(oError.message, "HTTP request failed");
|
|
23528
|
+
assert.ok(oError.retryAfter instanceof Date);
|
|
23529
|
+
const pRetryAfter = new Promise((resolve, reject) => {
|
|
23530
|
+
fnResolveRetryAfter = resolve;
|
|
23531
|
+
fnRejectRetryAfter = reject;
|
|
23532
|
+
});
|
|
23533
|
+
pRetryAfterFinished = pRetryAfter.catch(() => {}).finally(() => {bCallbackWaiting = false;});
|
|
23534
|
+
return pRetryAfter;
|
|
23535
|
+
});
|
|
23536
|
+
|
|
23537
|
+
function create503ErrorResponse(sCode) {
|
|
23538
|
+
return createErrorResponse({
|
|
23539
|
+
crashBatch : true,
|
|
23540
|
+
message : "Service Unavailable",
|
|
23541
|
+
statusCode : 503,
|
|
23542
|
+
headers : {"retry-after" : 5},
|
|
23543
|
+
messageCode : sCode
|
|
23544
|
+
});
|
|
23545
|
+
}
|
|
23546
|
+
|
|
23547
|
+
this.expectHeadRequest()
|
|
23548
|
+
.expectRequest("SalesOrderSet('1')", create503ErrorResponse("1)"));
|
|
23549
|
+
|
|
23550
|
+
// code under test (1)
|
|
23551
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
23552
|
+
assert.ok(bCallbackWaiting);
|
|
23553
|
+
assert.strictEqual(iCallbackCounter, 1);
|
|
23554
|
+
|
|
23555
|
+
// code under test
|
|
23556
|
+
this.oView.byId("objectPage2").bindObject("/SalesOrderSet('2')");
|
|
23557
|
+
|
|
23558
|
+
// waitForChanges only needed for progress output
|
|
23559
|
+
return this.waitForChanges(assert, "1a) reuse callback promise, no request");
|
|
23560
|
+
}).then(() => {
|
|
23561
|
+
assert.ok(bCallbackWaiting);
|
|
23562
|
+
assert.strictEqual(iCallbackCounter, 1);
|
|
23563
|
+
|
|
23564
|
+
this.expectRequest("SalesOrderSet('1')", {
|
|
23565
|
+
SalesOrderID : "1", Note : "Foo1"
|
|
23566
|
+
})
|
|
23567
|
+
.expectRequest("SalesOrderSet('2')", {
|
|
23568
|
+
SalesOrderID : "2", Note : "Foo2"
|
|
23569
|
+
})
|
|
23570
|
+
.expectValue("note1", "Foo1")
|
|
23571
|
+
.expectValue("note2", "Foo2");
|
|
23572
|
+
|
|
23573
|
+
// code under test
|
|
23574
|
+
fnResolveRetryAfter();
|
|
23575
|
+
|
|
23576
|
+
return Promise.all([
|
|
23577
|
+
pRetryAfterFinished,
|
|
23578
|
+
this.waitForChanges(assert, "2) resolve -> both batches repeated")
|
|
23579
|
+
]);
|
|
23580
|
+
}).then(() => {
|
|
23581
|
+
assert.notOk(bCallbackWaiting);
|
|
23582
|
+
assert.strictEqual(iCallbackCounter, 1);
|
|
23583
|
+
|
|
23584
|
+
this.expectRequest("SalesOrderSet('1')", resolveLater(() => {
|
|
23585
|
+
// process 503 a little later than 2nd request's response, callback promise reused
|
|
23586
|
+
assert.ok(bCallbackWaiting);
|
|
23587
|
+
assert.strictEqual(iCallbackCounter, 2);
|
|
23588
|
+
return {response : create503ErrorResponse("3) late")};
|
|
23589
|
+
}))
|
|
23590
|
+
.expectRequest("SalesOrderSet('2')", create503ErrorResponse("3) early"));
|
|
23591
|
+
|
|
23592
|
+
// code under test (refresh via different groups in order to get separate batches)
|
|
23593
|
+
this.oView.byId("objectPage1").getElementBinding().refresh(true, "refresh1");
|
|
23594
|
+
this.oView.byId("objectPage2").getElementBinding().refresh(true, "refresh2");
|
|
23595
|
+
|
|
23596
|
+
return Promise.all([
|
|
23597
|
+
resolveLater(), // wait until error processing for 1st $batch is done
|
|
23598
|
+
this.waitForChanges(assert, "3) refresh answered with 503, callback only once")
|
|
23599
|
+
]);
|
|
23600
|
+
}).then(() => {
|
|
23601
|
+
assert.ok(bCallbackWaiting);
|
|
23602
|
+
assert.strictEqual(iCallbackCounter, 2);
|
|
23603
|
+
|
|
23604
|
+
this.expectValue("note1", "")
|
|
23605
|
+
.expectValue("note2", "")
|
|
23606
|
+
.expectMessages([{
|
|
23607
|
+
code : "3) late", // 3) early was overwritten because same target "/batch"
|
|
23608
|
+
message : "Service Unavailable",
|
|
23609
|
+
persistent : false,
|
|
23610
|
+
fullTarget : "/$batch",
|
|
23611
|
+
target : "/$batch",
|
|
23612
|
+
technical : true,
|
|
23613
|
+
type : "Error"
|
|
23614
|
+
}]);
|
|
23615
|
+
|
|
23616
|
+
this.oLogMock.expects("error")
|
|
23617
|
+
.withExactArgs("Request failed with status code 503: "
|
|
23618
|
+
+ "POST /sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/$batch", sinon.match("3) early"),
|
|
23619
|
+
sODataMessageParserClassName);
|
|
23620
|
+
this.oLogMock.expects("error")
|
|
23621
|
+
.withExactArgs("Request failed with status code 503: "
|
|
23622
|
+
+ "POST /sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/$batch", sinon.match("3) late"),
|
|
23623
|
+
sODataMessageParserClassName);
|
|
23624
|
+
|
|
23625
|
+
// code under test
|
|
23626
|
+
fnRejectRetryAfter(oSuppliedError);
|
|
23627
|
+
|
|
23628
|
+
return Promise.all([
|
|
23629
|
+
pRetryAfterFinished,
|
|
23630
|
+
this.waitForChanges(assert, "3a) callback rejects promise with reason oSuppliedError")
|
|
23631
|
+
]);
|
|
23632
|
+
}).then(() => {
|
|
23633
|
+
assert.notOk(bCallbackWaiting);
|
|
23634
|
+
assert.strictEqual(iCallbackCounter, 2);
|
|
23635
|
+
this.removePersistentAndTechnicalMessages(); // reset messages
|
|
23636
|
+
|
|
23637
|
+
this.expectRequest("SalesOrderSet('1')", new Promise((resolve) => {fnRolveLate503Response = resolve;}))
|
|
23638
|
+
.expectRequest("SalesOrderSet('2')", create503ErrorResponse("3) for SalesOrder 2"))
|
|
23639
|
+
.expectRequest("SalesOrderSet('3')", create503ErrorResponse("3) for SalesOrder 3"))
|
|
23640
|
+
.expectMessages([]);
|
|
23641
|
+
|
|
23642
|
+
// code under test
|
|
23643
|
+
this.oView.byId("objectPage1").getElementBinding().refresh(true, "refresh1");
|
|
23644
|
+
this.oView.byId("objectPage2").getElementBinding().refresh(true, "refresh2");
|
|
23645
|
+
this.oView.byId("objectPage3").bindObject("/SalesOrderSet('3')");
|
|
23646
|
+
|
|
23647
|
+
return this.waitForChanges(assert, "4) tree $batch, 2nd+3rd answered with 503, 1st answer pending");
|
|
23648
|
+
}).then(() => {
|
|
23649
|
+
assert.ok(bCallbackWaiting);
|
|
23650
|
+
assert.strictEqual(iCallbackCounter, 3);
|
|
23651
|
+
|
|
23652
|
+
// code under test
|
|
23653
|
+
fnRolveLate503Response({response : create503ErrorResponse("4) for SalesOrder 1")});
|
|
23654
|
+
|
|
23655
|
+
return Promise.all([
|
|
23656
|
+
resolveLater(), // wait until error processing for 1st $batch is done
|
|
23657
|
+
this.waitForChanges(assert, "4a) 1st $batch now answered also with 503")
|
|
23658
|
+
]);
|
|
23659
|
+
}).then(() => {
|
|
23660
|
+
assert.ok(bCallbackWaiting);
|
|
23661
|
+
assert.strictEqual(iCallbackCounter, 3);
|
|
23662
|
+
|
|
23663
|
+
this.expectRequest("SalesOrderSet('1')", {SalesOrderID : "1", Note : "Bar1"})
|
|
23664
|
+
.expectRequest("SalesOrderSet('2')", {SalesOrderID : "2", Note : "Bar2"})
|
|
23665
|
+
.expectRequest("SalesOrderSet('3')", {SalesOrderID : "3", Note : "Bar3"});
|
|
23666
|
+
|
|
23667
|
+
this.expectValue("note1", "Bar1")
|
|
23668
|
+
.expectValue("note2", "Bar2")
|
|
23669
|
+
.expectValue("note3", "Bar3")
|
|
23670
|
+
.expectMessages([]);
|
|
23671
|
+
|
|
23672
|
+
fnResolveRetryAfter();
|
|
23673
|
+
|
|
23674
|
+
return Promise.all([
|
|
23675
|
+
pRetryAfterFinished,
|
|
23676
|
+
this.waitForChanges(assert, "4b) see $batches once retry-after resolved")
|
|
23677
|
+
]);
|
|
23678
|
+
}).then(() => {
|
|
23679
|
+
assert.notOk(bCallbackWaiting);
|
|
23680
|
+
assert.strictEqual(iCallbackCounter, 3);
|
|
23681
|
+
|
|
23682
|
+
this.removePersistentAndTechnicalMessages(); // reset messages
|
|
23683
|
+
this.expectRequest("SalesOrderSet('2')", create503ErrorResponse("5)"))
|
|
23684
|
+
.expectMessages([]);
|
|
23685
|
+
|
|
23686
|
+
this.oView.byId("objectPage2").getElementBinding().refresh(true, "refresh2");
|
|
23687
|
+
|
|
23688
|
+
return Promise.all([
|
|
23689
|
+
resolveLater(), // we have to wait until error processing for $batch is done
|
|
23690
|
+
this.waitForChanges(assert, "5a) preparation")
|
|
23691
|
+
]);
|
|
23692
|
+
}).then(() => {
|
|
23693
|
+
assert.ok(bCallbackWaiting);
|
|
23694
|
+
assert.strictEqual(iCallbackCounter, 4);
|
|
23695
|
+
|
|
23696
|
+
this.expectValue("note1", "Note1 5)");
|
|
23697
|
+
|
|
23698
|
+
// code under test
|
|
23699
|
+
oModel.setProperty("/SalesOrderSet('1')/Note", "Note1 5)");
|
|
23700
|
+
oModel.submitChanges(mParameters);
|
|
23701
|
+
|
|
23702
|
+
return this.waitForChanges(assert, "5a) preparation (2nd request queued)");
|
|
23703
|
+
}).then(() => {
|
|
23704
|
+
assert.ok(bCallbackWaiting);
|
|
23705
|
+
assert.strictEqual(iCallbackCounter, 4);
|
|
23706
|
+
|
|
23707
|
+
this.expectValue("note3", "Note3 5)");
|
|
23708
|
+
|
|
23709
|
+
// code under test
|
|
23710
|
+
oModel.setProperty("/SalesOrderSet('3')/Note", "Note3 5)");
|
|
23711
|
+
oModel.submitChanges(mParameters);
|
|
23712
|
+
|
|
23713
|
+
return this.waitForChanges(assert, "5a) preparation (3nd request queued)");
|
|
23714
|
+
}).then(() => {
|
|
23715
|
+
assert.ok(bCallbackWaiting);
|
|
23716
|
+
assert.strictEqual(iCallbackCounter, 4);
|
|
23717
|
+
|
|
23718
|
+
this.expectValue("note2", "")
|
|
23719
|
+
.expectMessages([]);
|
|
23720
|
+
this.oLogMock.expects("error")
|
|
23721
|
+
.withExactArgs("Retry-After handler rejected with: Rejected by User",
|
|
23722
|
+
sinon.match.string, sODataModelClassName);
|
|
23723
|
+
|
|
23724
|
+
// code under test
|
|
23725
|
+
fnRejectRetryAfter(new Error("Rejected by User"));
|
|
23726
|
+
|
|
23727
|
+
return Promise.all([
|
|
23728
|
+
pRetryAfterFinished,
|
|
23729
|
+
this.waitForChanges(assert, "5b) rejection with own error, only logged")
|
|
23730
|
+
]);
|
|
23731
|
+
}).then(() => {
|
|
23732
|
+
assert.strictEqual(iErrorHandlerCalled, 2);
|
|
23733
|
+
assert.strictEqual(oModel.hasPendingChanges(true), true);
|
|
23734
|
+
|
|
23735
|
+
this.expectRequest({
|
|
23736
|
+
data : {
|
|
23737
|
+
__metadata : {uri : "SalesOrderSet('3')"},
|
|
23738
|
+
Note : "Note3 5)"
|
|
23739
|
+
},
|
|
23740
|
+
key : "SalesOrderSet('3')",
|
|
23741
|
+
method : "MERGE",
|
|
23742
|
+
requestUri : "SalesOrderSet('3')"
|
|
23743
|
+
}, NO_CONTENT)
|
|
23744
|
+
.expectRequest({
|
|
23745
|
+
data : {
|
|
23746
|
+
__metadata : {uri : "SalesOrderSet('1')"},
|
|
23747
|
+
Note : "Note1 5)"
|
|
23748
|
+
},
|
|
23749
|
+
key : "SalesOrderSet('1')",
|
|
23750
|
+
method : "MERGE",
|
|
23751
|
+
requestUri : "SalesOrderSet('1')"
|
|
23752
|
+
}, NO_CONTENT)
|
|
23753
|
+
.expectMessages([]);
|
|
23754
|
+
|
|
23755
|
+
// code under test
|
|
23756
|
+
oModel.submitChanges();
|
|
23757
|
+
|
|
23758
|
+
return this.waitForChanges(assert, "5c) changes still present and sent");
|
|
23759
|
+
}).then(() => {
|
|
23760
|
+
assert.strictEqual(oModel.hasPendingChanges(true), false);
|
|
23761
|
+
});
|
|
23762
|
+
});
|
|
23763
|
+
|
|
23764
|
+
//*********************************************************************************************
|
|
23765
|
+
// Scenario: HTTP status 503 retry-after handling in combination with sequentializeRequests
|
|
23766
|
+
// 503 and retry-after handling in combination with sequentializeRequests model parameter not
|
|
23767
|
+
// supported -> is treated as normal error
|
|
23768
|
+
// JIRA: CPOUI5MODELS-1750
|
|
23769
|
+
QUnit.test("503 retry-after handling (sequentializeRequests)", function (assert) {
|
|
23770
|
+
const oModel = createSalesOrdersModel({refreshAfterChange : false, sequentializeRequests : true});
|
|
23771
|
+
const sView = `
|
|
23772
|
+
<FlexBox id="objectPage1" binding="{/SalesOrderSet('1')}">
|
|
23773
|
+
<Text id="note1" text="{Note}"/>
|
|
23774
|
+
</FlexBox>`;
|
|
23775
|
+
|
|
23776
|
+
oModel.setRetryAfterHandler(() => {
|
|
23777
|
+
assert.ok(false, "must be not called!");
|
|
23778
|
+
});
|
|
23779
|
+
|
|
23780
|
+
this.expectHeadRequest()
|
|
23781
|
+
.expectRequest("SalesOrderSet('1')", createErrorResponse({
|
|
23782
|
+
crashBatch : true,
|
|
23783
|
+
message : "Service Unavailable",
|
|
23784
|
+
statusCode : 503,
|
|
23785
|
+
headers : {"retry-after" : 5},
|
|
23786
|
+
messageCode : "HTTP 503"
|
|
23787
|
+
}))
|
|
23788
|
+
.expectMessages([{
|
|
23789
|
+
code : "HTTP 503",
|
|
23790
|
+
message : "Service Unavailable",
|
|
23791
|
+
persistent : false,
|
|
23792
|
+
fullTarget : "/$batch",
|
|
23793
|
+
target : "/$batch",
|
|
23794
|
+
technical : true,
|
|
23795
|
+
type : "Error"
|
|
23796
|
+
}]);
|
|
23797
|
+
this.oLogMock.expects("error").withExactArgs("Request failed with status code 503: "
|
|
23798
|
+
+ "POST /sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/$batch", sinon.match.string,
|
|
23799
|
+
sODataMessageParserClassName);
|
|
23800
|
+
|
|
23801
|
+
// code under test
|
|
23802
|
+
return this.createView(assert, sView, oModel);
|
|
23803
|
+
});
|
|
23314
23804
|
});
|