@openui5/sap.ui.core 1.121.1 → 1.121.2
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/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 +4 -4
- 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 +1 -1
- package/src/sap/ui/base/ManagedObject.js +1 -1
- 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/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 +1 -1
- package/src/sap/ui/core/Core.js +1 -1
- 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 +1 -1
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- 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/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 +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/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 +1 -1
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- 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/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/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/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 +3 -3
- 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/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 +1 -1
- 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/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/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/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 +1 -1
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +4 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +36 -24
- 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/generic/TestBase.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/test/sap/ui/core/demokit/sample/MessageManager/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/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/ui5.yaml +1 -1
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +126 -0
- package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +9 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +31 -11
- package/test/sap/ui/core/qunit/odata/v4/lib/_Parser.qunit.js +8 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +34 -19
|
@@ -2667,6 +2667,59 @@ sap.ui.define([
|
|
|
2667
2667
|
});
|
|
2668
2668
|
});
|
|
2669
2669
|
|
|
2670
|
+
//*********************************************************************************************
|
|
2671
|
+
// Scenario: PATCH an entity with a key predicate consisting of a single key property of type
|
|
2672
|
+
// Edm.DateTimeOffset. The PATCH failed and a UI5 message is created.
|
|
2673
|
+
// SNOW: CS20240007200281
|
|
2674
|
+
QUnit.test("CS20240007200281: key property is Edm.DateTimeOffset", async function (assert) {
|
|
2675
|
+
const oModel = this.createSpecialCasesModel({autoExpandSelect : true});
|
|
2676
|
+
const sView = `
|
|
2677
|
+
<Table id="table" items="{/Artists(ArtistID='42',IsActiveEntity=true)/_Event}">
|
|
2678
|
+
<Input id="name" value="{Name}"/>
|
|
2679
|
+
</Table>`;
|
|
2680
|
+
|
|
2681
|
+
this.expectRequest("Artists(ArtistID='42',IsActiveEntity=true)/_Event"
|
|
2682
|
+
+ "?$select=Name,TimeStamp&$skip=0&$top=100", {
|
|
2683
|
+
value : [
|
|
2684
|
+
{Name : "Taubertal Festival", TimeStamp : "08-08-2024T01:02:03Z"}
|
|
2685
|
+
]
|
|
2686
|
+
})
|
|
2687
|
+
.expectChange("name", ["Taubertal Festival"]);
|
|
2688
|
+
|
|
2689
|
+
await this.createView(assert, sView, oModel);
|
|
2690
|
+
const aTableRows = this.oView.byId("table").getItems();
|
|
2691
|
+
|
|
2692
|
+
this.expectChange("name", ["Woodstock"])
|
|
2693
|
+
.expectRequest({
|
|
2694
|
+
method : "PATCH",
|
|
2695
|
+
url : "Artists(ArtistID='42',IsActiveEntity=true)"
|
|
2696
|
+
+ "/_Event(08-08-2024T01%3A02%3A03Z)",
|
|
2697
|
+
payload : {Name : "Woodstock"}
|
|
2698
|
+
}, createErrorInsideBatch({target : "Name"}))
|
|
2699
|
+
.expectMessages([{
|
|
2700
|
+
code : "CODE",
|
|
2701
|
+
message : "Request intentionally failed",
|
|
2702
|
+
persistent : true,
|
|
2703
|
+
target : "/Artists(ArtistID='42',IsActiveEntity=true)"
|
|
2704
|
+
+ "/_Event(08-08-2024T01%3A02%3A03Z)/Name",
|
|
2705
|
+
technical : true,
|
|
2706
|
+
type : "Error"
|
|
2707
|
+
}]);
|
|
2708
|
+
|
|
2709
|
+
this.oLogMock.expects("error")
|
|
2710
|
+
.withArgs("Failed to update path /Artists(ArtistID='42',IsActiveEntity=true)"
|
|
2711
|
+
+ "/_Event(08-08-2024T01%3A02%3A03Z)/Name");
|
|
2712
|
+
|
|
2713
|
+
const oInput = aTableRows[0].getCells()[0];
|
|
2714
|
+
// code under test
|
|
2715
|
+
oInput.getBinding("value").setValue("Woodstock");
|
|
2716
|
+
|
|
2717
|
+
await this.waitForChanges(assert);
|
|
2718
|
+
|
|
2719
|
+
await this.checkValueState(assert, oInput, "Error",
|
|
2720
|
+
"Request intentionally failed");
|
|
2721
|
+
});
|
|
2722
|
+
|
|
2670
2723
|
//*********************************************************************************************
|
|
2671
2724
|
// Scenario: Minimal test for an absolute ODataPropertyBinding. This scenario is comparable with
|
|
2672
2725
|
// "FavoriteProduct" in the SalesOrders application.
|
|
@@ -15188,6 +15241,79 @@ sap.ui.define([
|
|
|
15188
15241
|
]);
|
|
15189
15242
|
});
|
|
15190
15243
|
});
|
|
15244
|
+
|
|
15245
|
+
//*********************************************************************************************
|
|
15246
|
+
// Scenario: We simulate parts of a file upload here. Initially, the Edm.Stream property is
|
|
15247
|
+
// missing from the response (of course) and a late property request is sent leading to
|
|
15248
|
+
// "Picture@$ui5.noData : true" being set. File upload happens outside the model and only a file
|
|
15249
|
+
// name would be PATCHed, this is omitted here. Removal of the file requires the model to PATCH
|
|
15250
|
+
// a null value, which ruins the URL. Thus the property is reset to undefined on the client side
|
|
15251
|
+
// only. This must not prevent a side effect from setting "Picture@$ui5.noData : true" again!
|
|
15252
|
+
// Thus upload and removal can be repeated (endlessly) while a URL is implicitly available for
|
|
15253
|
+
// up- and download at all times.
|
|
15254
|
+
// SNOW: DINC0088146
|
|
15255
|
+
QUnit.test("DINC0088146", async function (assert) {
|
|
15256
|
+
const oModel = this.createSpecialCasesModel({autoExpandSelect : true});
|
|
15257
|
+
const sView = `
|
|
15258
|
+
<Table id="list" items="{/Artists}">
|
|
15259
|
+
<Text id="id" text="{ArtistID}"/>
|
|
15260
|
+
</Table>
|
|
15261
|
+
<FlexBox id="detail">
|
|
15262
|
+
<Text id="link" text="{Picture}"/>
|
|
15263
|
+
</FlexBox>`;
|
|
15264
|
+
const sLink = "/special/cases/Artists(ArtistID='42',IsActiveEntity=true)/Picture";
|
|
15265
|
+
|
|
15266
|
+
this.expectRequest("Artists?$select=ArtistID,IsActiveEntity&$skip=0&$top=100", {
|
|
15267
|
+
value : [{
|
|
15268
|
+
ArtistID : "42",
|
|
15269
|
+
IsActiveEntity : true
|
|
15270
|
+
}]
|
|
15271
|
+
})
|
|
15272
|
+
.expectChange("link");
|
|
15273
|
+
|
|
15274
|
+
await this.createView(assert, sView, oModel);
|
|
15275
|
+
|
|
15276
|
+
this.expectRequest("Artists(ArtistID='42',IsActiveEntity=true)?$select=Picture", {
|
|
15277
|
+
ArtistID : "42",
|
|
15278
|
+
// Picture (Edm.Stream) missing here
|
|
15279
|
+
"Picture@odata.mediaContentType" : null
|
|
15280
|
+
})
|
|
15281
|
+
.expectChange("link", sLink);
|
|
15282
|
+
|
|
15283
|
+
const oContext = this.oView.byId("list").getItems()[0].getBindingContext();
|
|
15284
|
+
this.oView.byId("detail").setBindingContext(oContext);
|
|
15285
|
+
|
|
15286
|
+
await this.waitForChanges(assert, "detail");
|
|
15287
|
+
|
|
15288
|
+
for (let i = 0; i < 3; i += 1) {
|
|
15289
|
+
this.expectChange("link", null)
|
|
15290
|
+
.expectChange("link", sLink)
|
|
15291
|
+
.expectRequest({
|
|
15292
|
+
method : "PATCH",
|
|
15293
|
+
url : "Artists(ArtistID='42',IsActiveEntity=true)",
|
|
15294
|
+
payload : {Picture : null}
|
|
15295
|
+
})
|
|
15296
|
+
.expectRequest("Artists?$select=ArtistID,IsActiveEntity,Picture"
|
|
15297
|
+
+ "&$filter=ArtistID eq '42' and IsActiveEntity eq true", {
|
|
15298
|
+
value : [{
|
|
15299
|
+
ArtistID : "42",
|
|
15300
|
+
IsActiveEntity : true,
|
|
15301
|
+
// Picture (Edm.Stream) missing here
|
|
15302
|
+
"Picture@odata.mediaContentType" : null
|
|
15303
|
+
}]
|
|
15304
|
+
})
|
|
15305
|
+
.expectChange("link", sLink); // due to "Picture@$ui5.noData : true" being set
|
|
15306
|
+
|
|
15307
|
+
// eslint-disable-next-line no-await-in-loop
|
|
15308
|
+
await Promise.all([
|
|
15309
|
+
oContext.setProperty("Picture", null),
|
|
15310
|
+
oContext.requestSideEffects(["Picture"]),
|
|
15311
|
+
oContext.setProperty("Picture", undefined, /*sGroupId*/null),
|
|
15312
|
+
this.waitForChanges(assert, "remove #" + i)
|
|
15313
|
+
]);
|
|
15314
|
+
}
|
|
15315
|
+
});
|
|
15316
|
+
|
|
15191
15317
|
//*********************************************************************************************
|
|
15192
15318
|
// Scenario: Writing instance annotations via create and update.
|
|
15193
15319
|
// 1. POST: Initial payload containing instance annotations
|
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
<NavigationProperty Name="_Publication" Type="Collection(special.cases.PublicationsType)" Partner="_Artist"/>
|
|
27
27
|
<NavigationProperty Name="BestFriend" Type="special.cases.ArtistsType" />
|
|
28
28
|
<NavigationProperty Name="_Friend" Type="Collection(special.cases.ArtistsType)" />
|
|
29
|
+
<NavigationProperty Name="_Event" Type="Collection(special.cases.EventsType)" />
|
|
30
|
+
</EntityType>
|
|
31
|
+
<EntityType Name="EventsType">
|
|
32
|
+
<Key>
|
|
33
|
+
<PropertyRef Name="TimeStamp"/>
|
|
34
|
+
</Key>
|
|
35
|
+
<Property Name="TimeStamp" Type="Edm.DateTimeOffset" Nullable="false"/>
|
|
36
|
+
<Property Name="Name" Type="Edm.String"/>
|
|
29
37
|
</EntityType>
|
|
30
38
|
<EntityType Name="DraftAdministrativeDataType">
|
|
31
39
|
<Key>
|
|
@@ -185,6 +193,7 @@
|
|
|
185
193
|
<NavigationPropertyBinding Path="BestFriend" Target="Artists"/>
|
|
186
194
|
<NavigationPropertyBinding Path="SiblingEntity" Target="Artists" />
|
|
187
195
|
</EntitySet>
|
|
196
|
+
<EntitySet Name="Events" EntityType="special.cases.EventsType"/>
|
|
188
197
|
<EntitySet Name="As" EntityType="special.cases.A">
|
|
189
198
|
<NavigationPropertyBinding Path="AtoEntityWithComplexKey"
|
|
190
199
|
Target="EntitiesWithComplexKey"/>
|
|
@@ -1468,12 +1468,16 @@ sap.ui.define([
|
|
|
1468
1468
|
});
|
|
1469
1469
|
|
|
1470
1470
|
//*********************************************************************************************
|
|
1471
|
-
|
|
1471
|
+
[false, true].forEach((bUndefined) => {
|
|
1472
|
+
QUnit.test("updateSelected: private annotations, undefined: " + bUndefined, function (assert) {
|
|
1472
1473
|
var oBinding = {},
|
|
1473
1474
|
oContext = {oBinding : oBinding},
|
|
1474
1475
|
// oContext is recursive and must not be descended into
|
|
1475
1476
|
oOldValue = {"@$ui5._" : {context : oContext}};
|
|
1476
1477
|
|
|
1478
|
+
if (bUndefined) {
|
|
1479
|
+
oOldValue.foo = undefined; // MUST NOT make a difference
|
|
1480
|
+
}
|
|
1477
1481
|
oBinding.oContext = oContext;
|
|
1478
1482
|
this.mock(_Helper).expects("fireChange").withExactArgs("~mChangeListener~", "foo",
|
|
1479
1483
|
undefined, true);
|
|
@@ -1483,18 +1487,30 @@ sap.ui.define([
|
|
|
1483
1487
|
{"@$ui5._" : {predicate : "(1)"}, bar : {}},
|
|
1484
1488
|
["foo", "bar/*"]);
|
|
1485
1489
|
|
|
1486
|
-
assert.deepEqual(oOldValue,
|
|
1487
|
-
|
|
1488
|
-
|
|
1490
|
+
assert.deepEqual(oOldValue, bUndefined ? {
|
|
1491
|
+
"@$ui5._" : {context : oContext, predicate : "(1)"},
|
|
1492
|
+
bar : {},
|
|
1493
|
+
foo : undefined,
|
|
1494
|
+
"foo@$ui5.noData" : true
|
|
1495
|
+
} : {
|
|
1496
|
+
"@$ui5._" : {context : oContext, predicate : "(1)"},
|
|
1497
|
+
bar : {},
|
|
1498
|
+
"foo@$ui5.noData" : true
|
|
1499
|
+
});
|
|
1489
1500
|
});
|
|
1501
|
+
});
|
|
1490
1502
|
|
|
1491
1503
|
//*********************************************************************************************
|
|
1492
|
-
|
|
1504
|
+
[false, true].forEach((bUndefined) => {
|
|
1505
|
+
QUnit.test("updateSelected: create annotation, undefined: " + bUndefined, function (assert) {
|
|
1493
1506
|
var oBinding = {},
|
|
1494
1507
|
oHelperMock = this.mock(_Helper),
|
|
1495
1508
|
oOldValue0 = {},
|
|
1496
1509
|
oOldValue1 = {};
|
|
1497
1510
|
|
|
1511
|
+
if (bUndefined) {
|
|
1512
|
+
oOldValue0.foo = undefined; // MUST NOT make a difference
|
|
1513
|
+
}
|
|
1498
1514
|
oBinding.oContext = {oBinding : oBinding};
|
|
1499
1515
|
oHelperMock.expects("fireChange").withExactArgs("~mChangeListener~", "foo", undefined,
|
|
1500
1516
|
true);
|
|
@@ -1510,20 +1526,24 @@ sap.ui.define([
|
|
|
1510
1526
|
_Helper.updateSelected("~mChangeListener~", "", oOldValue0,
|
|
1511
1527
|
{baz : {bar : {}}}, ["foo", "bar", "baz/bar"]);
|
|
1512
1528
|
|
|
1513
|
-
assert.deepEqual(oOldValue0, {
|
|
1514
|
-
"foo@$ui5.noData" : true,
|
|
1529
|
+
assert.deepEqual(oOldValue0, bUndefined ? {
|
|
1515
1530
|
"bar@$ui5.noData" : true,
|
|
1516
|
-
baz : {bar : {}}
|
|
1531
|
+
baz : {bar : {}},
|
|
1532
|
+
foo : undefined,
|
|
1533
|
+
"foo@$ui5.noData" : true
|
|
1534
|
+
} : {
|
|
1535
|
+
"bar@$ui5.noData" : true,
|
|
1536
|
+
baz : {bar : {}},
|
|
1537
|
+
"foo@$ui5.noData" : true
|
|
1517
1538
|
});
|
|
1518
1539
|
|
|
1519
1540
|
// code under test (do not create annotation)
|
|
1520
1541
|
_Helper.updateSelected("~mChangeListener~", "", oOldValue1,
|
|
1521
1542
|
{baz : {bar : {}}}, ["foo", "bar", "baz/bar"], undefined, /*bOkIfMissing*/ true);
|
|
1522
1543
|
|
|
1523
|
-
assert.deepEqual(oOldValue1, {
|
|
1524
|
-
baz : {bar : {}}
|
|
1525
|
-
});
|
|
1544
|
+
assert.deepEqual(oOldValue1, {baz : {bar : {}}});
|
|
1526
1545
|
});
|
|
1546
|
+
});
|
|
1527
1547
|
|
|
1528
1548
|
//*********************************************************************************************
|
|
1529
1549
|
QUnit.test("updateSelected: $postBodyCollection", function (assert) {
|
|
@@ -382,6 +382,11 @@ sap.ui.define([
|
|
|
382
382
|
string : "$filter=foo eq %2b1e%2B10",
|
|
383
383
|
parsed : {$filter : "foo eq %2b1e%2B10"},
|
|
384
384
|
converted : {$filter : "foo eq %2b1e%2B10"}
|
|
385
|
+
}, {
|
|
386
|
+
// "$filter=foo eq 2016-01-13T14:08:31Z"
|
|
387
|
+
string : "$filter=foo eq 2016-01-13T14%3a08%3A31Z",
|
|
388
|
+
parsed : {$filter : "foo eq 2016-01-13T14%3a08%3A31Z"},
|
|
389
|
+
converted : {$filter : "foo eq 2016-01-13T14%3a08%3A31Z"}
|
|
385
390
|
}, {
|
|
386
391
|
// "$filter=foo eq ' a ' ' ' "
|
|
387
392
|
string : "$filter=foo eq %27a%27%27%27",
|
|
@@ -838,8 +843,9 @@ sap.ui.define([
|
|
|
838
843
|
//*********************************************************************************************
|
|
839
844
|
QUnit.test("parseKeyPredicate", function (assert) {
|
|
840
845
|
[
|
|
841
|
-
"false", "true", "3.14", "2016-04-23", "2016-01-13T14:08:31Z",
|
|
842
|
-
"'foo''bar'", "'foo/bar'",
|
|
846
|
+
"false", "true", "3.14", "2016-04-23", "2016-01-13T14:08:31Z",
|
|
847
|
+
"2016-01-13T14%3a08%3A31Z", "-1", "'foo'", "'foo''bar'", "'foo/bar'",
|
|
848
|
+
"F050568D-393C-1ED4-9D97-E65F0F3FCC23"
|
|
843
849
|
].forEach(function (sValue) {
|
|
844
850
|
var sPredicate = "(" + sValue + ")";
|
|
845
851
|
|
|
@@ -1427,19 +1427,29 @@ sap.ui.define([
|
|
|
1427
1427
|
});
|
|
1428
1428
|
|
|
1429
1429
|
//*********************************************************************************************
|
|
1430
|
+
[false, true].forEach(function (bWithCredentials) {
|
|
1430
1431
|
[false, true].forEach(function (bSuccess) {
|
|
1431
|
-
|
|
1432
|
+
const sTitle = "refreshSecurityToken, success=" + bSuccess + ", withCredentials="
|
|
1433
|
+
+ bWithCredentials;
|
|
1434
|
+
QUnit.test(sTitle, function (assert) {
|
|
1432
1435
|
var oError = {},
|
|
1433
1436
|
oPromise,
|
|
1434
1437
|
mHeaders = {},
|
|
1435
|
-
|
|
1438
|
+
oAjaxSettings = {
|
|
1439
|
+
headers : "~requestHeaders~",
|
|
1440
|
+
method : "HEAD"
|
|
1441
|
+
},
|
|
1436
1442
|
oRequestor = _Requestor.create("/Service/", oModelInterface, mHeaders,
|
|
1437
|
-
{"sap-client" : "123"}),
|
|
1443
|
+
{"sap-client" : "123"}, /*sODataVersion*/undefined, bWithCredentials),
|
|
1438
1444
|
oTokenRequiredResponse = {};
|
|
1439
1445
|
|
|
1446
|
+
if (bWithCredentials) {
|
|
1447
|
+
oAjaxSettings.xhrFields = {withCredentials : true};
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1440
1450
|
this.mock(Object).expects("assign").twice()
|
|
1441
1451
|
.withExactArgs({}, sinon.match.same(mHeaders), {"X-CSRF-Token" : "Fetch"})
|
|
1442
|
-
.returns(
|
|
1452
|
+
.returns("~requestHeaders~");
|
|
1443
1453
|
this.mock(_Helper).expects("createError")
|
|
1444
1454
|
.exactly(bSuccess ? 0 : 2)
|
|
1445
1455
|
.withExactArgs(sinon.match.same(oTokenRequiredResponse),
|
|
@@ -1447,10 +1457,7 @@ sap.ui.define([
|
|
|
1447
1457
|
.returns(oError);
|
|
1448
1458
|
|
|
1449
1459
|
this.mock(jQuery).expects("ajax").twice()
|
|
1450
|
-
.withExactArgs("/Service/?sap-client=123",
|
|
1451
|
-
headers : sinon.match.same(mRequestHeaders),
|
|
1452
|
-
method : "HEAD"
|
|
1453
|
-
}))
|
|
1460
|
+
.withExactArgs("/Service/?sap-client=123", oAjaxSettings)
|
|
1454
1461
|
.callsFake(function () {
|
|
1455
1462
|
var jqXHR;
|
|
1456
1463
|
|
|
@@ -1503,6 +1510,7 @@ sap.ui.define([
|
|
|
1503
1510
|
});
|
|
1504
1511
|
});
|
|
1505
1512
|
});
|
|
1513
|
+
});
|
|
1506
1514
|
|
|
1507
1515
|
//*********************************************************************************************
|
|
1508
1516
|
QUnit.test("refreshSecurityToken: keep fetching even if none is sent", function (assert) {
|
|
@@ -4424,28 +4432,35 @@ sap.ui.define([
|
|
|
4424
4432
|
});
|
|
4425
4433
|
|
|
4426
4434
|
//*****************************************************************************************
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4435
|
+
[false, true].forEach(function (bWithCredentials) {
|
|
4436
|
+
const sTitle = "setSessionContext: successful ping, bWithCredentials: " + bWithCredentials;
|
|
4437
|
+
QUnit.test(sTitle, function (assert) {
|
|
4438
|
+
var oAjaxSettings = {
|
|
4439
|
+
headers : {
|
|
4440
|
+
"SAP-ContextId" : "context"
|
|
4441
|
+
},
|
|
4442
|
+
method : "HEAD"
|
|
4443
|
+
},
|
|
4444
|
+
oExpectation,
|
|
4445
|
+
oRequestor = _Requestor.create(sServiceUrl, oModelInterface, {}, {"sap-client" : "120"},
|
|
4446
|
+
/*sODataVersion*/undefined, bWithCredentials);
|
|
4432
4447
|
|
|
4448
|
+
if (bWithCredentials) {
|
|
4449
|
+
oAjaxSettings.xhrFields = {withCredentials : true};
|
|
4450
|
+
}
|
|
4433
4451
|
oExpectation = this.mock(window).expects("setInterval")
|
|
4434
4452
|
.withExactArgs(sinon.match.func, 115000);
|
|
4435
4453
|
|
|
4436
4454
|
oRequestor.setSessionContext("context", "120");
|
|
4437
4455
|
|
|
4438
|
-
this.mock(jQuery).expects("ajax")
|
|
4439
|
-
|
|
4440
|
-
"SAP-ContextId" : "context"
|
|
4441
|
-
}),
|
|
4442
|
-
method : "HEAD"
|
|
4443
|
-
})
|
|
4456
|
+
this.mock(jQuery).expects("ajax")
|
|
4457
|
+
.withExactArgs(sServiceUrl + "?sap-client=120", oAjaxSettings)
|
|
4444
4458
|
.returns(createMock(assert, undefined, "OK", {}));
|
|
4445
4459
|
|
|
4446
4460
|
// code under test - call setInterval function
|
|
4447
4461
|
oExpectation.callArg(0);
|
|
4448
4462
|
});
|
|
4463
|
+
});
|
|
4449
4464
|
|
|
4450
4465
|
//*****************************************************************************************
|
|
4451
4466
|
[false, true].forEach(function (bErrorId) {
|