@openui5/sap.ui.core 1.124.2 → 1.126.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/.eslintrc.json +4 -1
- package/.reuse/dep5 +9 -4
- package/THIRDPARTY.txt +13 -6
- 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/Log.js +0 -16
- 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/ObjectPath.js +6 -6
- 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 +35 -10
- package/src/sap/ui/Global.js +6 -6
- 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 +16 -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 +3 -3
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +22 -5
- 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 +31 -29
- 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 +4 -3
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/ExtensionPoint.js +23 -9
- package/src/sap/ui/core/Fragment.js +15 -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 +84 -50
- 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 +66 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +2 -2
- 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 +148 -102
- 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 +2 -2
- package/src/sap/ui/core/UIComponent.js +23 -16
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +110 -74
- package/src/sap/ui/core/boot.js +1 -6
- package/src/sap/ui/core/cldr/zh_TW.json +20 -20
- 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 +2 -2
- package/src/sap/ui/core/dnd/DragAndDrop.js +180 -33
- package/src/sap/ui/core/dnd/DragDropBase.js +13 -2
- 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 +6 -3
- package/src/sap/ui/core/fieldhelp/FieldHelp.js +389 -0
- package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +62 -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 +2 -1
- package/src/sap/ui/core/library.js +49 -9
- 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/Controller.js +77 -77
- 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 +10 -2
- package/src/sap/ui/core/mvc/XMLProcessingMode.js +4 -1
- package/src/sap/ui/core/mvc/XMLView.js +33 -5
- package/src/sap/ui/core/mvc/XMLViewRenderer.js +40 -7
- 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/routing/async/TargetCache.js +12 -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/bootstrapFallback.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/themes/sap_hcb/base_BlindLayer.less +37 -0
- package/src/sap/ui/core/themes/sap_hcb/base_BrowserScrollbar.less +36 -0
- package/src/sap/ui/core/themes/sap_hcb/base_BusyIndicator.less +19 -0
- package/src/sap/ui/core/themes/sap_hcb/base_CommandShortcutHints.less +20 -0
- package/src/sap/ui/core/themes/sap_hcb/base_DragAndDrop.less +76 -0
- package/src/sap/ui/core/themes/sap_hcb/base_Icon.less +144 -0
- package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +292 -0
- package/src/sap/ui/core/themes/sap_hcb/base_SAP-icons.less +10 -0
- package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +20 -0
- package/src/sap/ui/core/themes/sap_hcb/base_Shadow.less +3 -0
- package/src/sap/ui/core/themes/sap_hcb/base_TechnicalInfo.less +157 -0
- package/src/sap/ui/core/themes/sap_hcb/base_View.less +12 -0
- package/src/sap/ui/core/themes/sap_hcb/base_media.less +36 -0
- package/src/sap/ui/core/themes/sap_hcb/base_parameterClasses.less +83 -0
- package/src/sap/ui/core/themes/sap_hcb/base_shared.less +340 -0
- package/src/sap/ui/core/themes/sap_hcb/library.source.less +27 -1
- package/src/sap/ui/core/theming/Parameters.js +66 -6
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +14 -15
- 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/jquery/control.js +6 -3
- package/src/sap/ui/model/Binding.js +38 -0
- 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/ManagedObjectBindingSupport.js +5 -0
- 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/analytics/AnalyticalBinding.js +8 -12
- package/src/sap/ui/model/base/ManagedObjectModel.js +12 -2
- package/src/sap/ui/model/json/JSONModel.js +6 -5
- 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/ODataUtils.js +22 -14
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +50 -6
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +127 -46
- package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +72 -73
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +406 -250
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +49 -47
- package/src/sap/ui/model/odata/v4/ODataModel.js +271 -217
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +205 -205
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -10
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +232 -61
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +53 -9
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -59
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +140 -80
- package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +98 -90
- package/src/sap/ui/model/odata/v4/lib/_TreeState.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +22 -22
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +63 -63
- package/src/sap/ui/model/resource/ResourceModel.js +7 -2
- 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 +1 -1
- package/src/sap/ui/qunit/qunit-coverage-istanbul.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/OpaPlugin.js +36 -12
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/starter/_utils.js +18 -3
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +0 -25
- package/test/sap/ui/core/BindableResponseHeaders.html +5 -6
- package/test/sap/ui/core/ComponentCleanup.html +46 -46
- package/test/sap/ui/core/ComponentManifestFirst.html +26 -20
- package/test/sap/ui/core/ContextMenuSupport.html +9 -10
- package/test/sap/ui/core/DesigntimeOverview.html +1 -1
- package/test/sap/ui/core/EventBroadcaster.html +2 -2
- package/test/sap/ui/core/FieldGroup.html +70 -61
- package/test/sap/ui/core/GenericEventBinding.html +26 -23
- package/test/sap/ui/core/HTMLControl.html +46 -38
- package/test/sap/ui/core/HTMLSanitizer.html +70 -45
- package/test/sap/ui/core/IntervalTrigger.html +22 -21
- package/test/sap/ui/core/InvisibleControls.html +72 -72
- package/test/sap/ui/core/InvisibleText.html +2 -2
- package/test/sap/ui/core/LRUPersistentCache.html +19 -18
- package/test/sap/ui/core/LabelEnablement.html +18 -29
- package/test/sap/ui/core/Localization.html +40 -65
- package/test/sap/ui/core/Localization_HeapUsage.html +11 -12
- package/test/sap/ui/core/ManagedObjectModel.html +6 -7
- package/test/sap/ui/core/ODataAnnotationsPerformance.html +592 -602
- package/test/sap/ui/core/ODataV2CanonicalRequests.html +16 -13
- package/test/sap/ui/core/ODataV2Messages.html +15 -12
- package/test/sap/ui/core/ODataV2MessagesPerf.html +156 -132
- package/test/sap/ui/core/Popup.html +18 -14
- package/test/sap/ui/core/PopupWithUserSelection.html +4 -4
- package/test/sap/ui/core/StashedControlSupport.html +1 -1
- package/test/sap/ui/core/ThemeParameters.html +32 -20
- package/test/sap/ui/core/ValidateURL.html +109 -75
- package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.html +2 -1
- package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.js +2 -12
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +1 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.controller.js +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Main.controller.js +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/Component.js +1 -5
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Component.js +4 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/manifest.json +37 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Component.js +5 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/manifest.json +42 -0
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +6 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Main.view.xml +4 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/manifest.json +49 -0
- package/test/sap/ui/core/demokit/sample/common/Controller.js +2 -2
- package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -2
- 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/types/v2/DateTime/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +35 -31
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ConsumeV2Service/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +71 -68
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/manifest.json +7 -16
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Main.controller.js +3 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Draft/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/FieldGroups.view.xml +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +46 -43
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +12 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +21 -18
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/manifest.json +4 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/SandboxModel.js +6 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +130 -38
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +35 -43
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +25 -22
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +5 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/manifest.json +3 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +60 -57
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/manifest.json +4 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/MusicArtists/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.view.xml +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Products/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +194 -90
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +102 -58
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +135 -39
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +14 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/manifest.json +1 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +4 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/manifest.json +2 -11
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +19 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -8
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Main.controller.js +1 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +6 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/manifest.json +2 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Component.js +1 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.html +0 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/manifest.json +3 -11
- 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/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/manifest.json +2 -13
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/Component.js +1 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/index.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +4 -4
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/manifest.json +2 -11
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.html +0 -1
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
- package/test/sap/ui/core/getComputedStyle.html +2 -1
- package/test/sap/ui/core/getComputedStyleFF.html +1 -1
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Component.js +5 -8
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.controller.js +6 -2
- package/test/sap/ui/core/internal/samples/client/MusicCollection/Main.view.xml +7 -3
- package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -3
- package/test/sap/ui/core/internal/samples/client/MusicCollection/manifest.json +1 -13
- package/test/sap/ui/core/internal/samples/odata/twoFields/Component.js +3 -45
- package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +37 -1
- package/test/sap/ui/core/internal/samples/odata/twoFields/Main.view.xml +5 -5
- package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/twoFields/manifest.json +1 -11
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Component.js +3 -22
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.controller.js +16 -22
- package/test/sap/ui/core/internal/samples/odata/v2/Products/Main.view.xml +3 -2
- package/test/sap/ui/core/internal/samples/odata/v2/Products/SandboxModel.js +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/v2/Products/manifest.json +2 -13
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +1 -0
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +49 -41
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -4
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/manifest.json +3 -12
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +1 -0
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +2 -2
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +7 -6
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -3
- package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/manifest.json +1 -11
- package/test/sap/ui/core/qunit/CommandExecution.qunit.js +96 -92
- package/test/sap/ui/core/qunit/Fragment.qunit.js +20 -20
- package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Icon.qunit.js +217 -1
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +24 -0
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +18 -5
- package/test/sap/ui/core/qunit/ScrollBar.qunit.js +15 -18
- package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +80 -0
- package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -0
- package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +6 -14
- package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +2 -1
- package/test/sap/ui/core/qunit/base/Config.qunit.js +117 -114
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +3 -3
- package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +98 -95
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +20 -45
- package/test/sap/ui/core/qunit/base/Config_global.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +2 -2
- package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +17 -16
- package/test/sap/ui/core/qunit/base/Config_url.qunit.html +2 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.beforeBootstrap.js +6 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.qunit.js +4 -4
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +30 -10
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +5 -1
- package/test/sap/ui/core/qunit/component/Customizing.qunit.js +2 -2
- package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +36 -1
- package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +475 -290
- package/test/sap/ui/core/qunit/component/Models.qunit.js +0 -70
- package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +86 -0
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +86 -1
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Cell_Found.fragment.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EP_In_Product_Table_Column.fragment.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/EPinNestedView.view.xml +51 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/ExtensionPointProvider.js +27 -4
- package/test/sap/ui/core/qunit/component/testdata/customizing/customer/ext/Main.view.xml +5 -0
- package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Main.view.xml +0 -1
- package/test/sap/ui/core/qunit/component/testdata/customizing/sap/Sub2.view.xml +1 -3
- package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +231 -5
- package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +14 -2
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelp.qunit.js +1146 -0
- package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +55 -0
- package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.html +12 -0
- package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.js +50 -0
- package/test/sap/ui/core/qunit/generic/ControlRenderer.qunit.js +4 -1
- package/test/sap/ui/core/qunit/generic/legacy/ControlRenderer.qunit.js +4 -0
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +1 -1
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +6 -0
- package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +1 -1
- package/test/sap/ui/core/qunit/jquery-mobile-custom.beforeBootstrap.js +11 -0
- package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
- package/test/sap/ui/core/qunit/loader/amd/base_tag/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amd/config_paths/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amd/config_paths_relative/_launchTest.js +2 -4
- package/test/sap/ui/core/qunit/loader/amdAPIs.qunit.js +3 -0
- package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -6
- package/test/sap/ui/core/qunit/loader/config.qunit.js +41 -2
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +13 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +2 -2
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +8 -6
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +7 -7
- package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +131 -22
- package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -2
- package/test/sap/ui/core/qunit/mvc/testdata/asyncHooks.view.xml +1 -3
- package/test/sap/ui/core/qunit/mvc/testdata/cache.view.xml +1 -1
- package/test/sap/ui/core/qunit/mvc/testdata/legacy/test.view.xml +32 -0
- package/test/sap/ui/core/qunit/mvc/testdata/test.view.xml +2 -15
- package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +9 -4
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -12
- package/test/sap/ui/core/qunit/odata/type/testsuite.odata.types.qunit.js +1 -0
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +285 -12
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +55 -6
- package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +18 -0
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +118 -61
- package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +17 -17
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +559 -74
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +42 -42
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2695 -97
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +125 -12
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +7 -6
- package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +12 -13
- package/test/sap/ui/core/qunit/odata/v4/_AnnotationHelperExpression.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +796 -110
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +102 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +48 -57
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +141 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +2 -2
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +175 -69
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +1 -1
- package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +17 -14
- package/test/sap/ui/core/qunit/routing/async/Views.qunit.js +3 -0
- package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +6 -1
- package/test/sap/ui/core/qunit/test/starter/find/main.js +6 -4
- package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/themes/sap_horizon_hcb/library.css +2 -0
- package/test/sap/ui/core/qunit/testdata/routing/HistoryIFrame.html +2 -1
- package/test/sap/ui/core/qunit/testsuite.qunit.js +1 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.browser.runtime.qunit.js +5 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +4 -1
- package/test/sap/ui/core/qunit/ui/Device.qunit.js +92 -25
- package/test/sap/ui/core/qunit/ui5classes/ManagedObjectMetadata.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +47 -1
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +20 -20
- package/test/sap/ui/core/relnotes/changes-1.124.json +1 -66
- package/test/sap/ui/core/relnotes/changes-1.125.json +32 -0
- package/test/sap/ui/core/relnotes/changes-1.126.json +47 -0
- package/test/sap/ui/core/samples/ResponsiveDemo.html +97 -103
- package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
- package/test/sap/ui/core/samples/draganddrop/DragAndDrop.html +2 -2
- package/test/sap/ui/core/samples/mvc/Product.html +1 -7
- package/test/sap/ui/core/samples/mvc/ViewPreprocessor.html +20 -12
- package/test/sap/ui/core/samples/mvc/XMLView.html +77 -24
- package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +13 -19
- package/test/sap/ui/core/samples/mvc/controller/Async.controller.js +0 -1
- package/test/sap/ui/core/samples/mvc/controller/Product.controller.js +0 -1
- package/test/sap/ui/core/samples/mvc/views/Async.view.xml +16 -57
- package/test/sap/ui/core/samples/mvc/views/Dummy.fragment.xml +2 -2
- package/test/sap/ui/core/samples/mvc/views/Dummy.view.xml +2 -2
- package/test/sap/ui/core/samples/mvc/views/Product.view.xml +16 -57
- package/test/sap/ui/core/util/PasteHelper.html +148 -147
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
- package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
- package/test/testsuite/js/settings.js +5 -4
- package/test/testsuite/styles/main.css +5 -0
- package/test/sap/ui/core/ResourceRoots.html +0 -28
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/component.json +0 -17
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/component.json +0 -18
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/component.json +0 -30
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +0 -52
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Component.js +0 -30
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/Sandbox.js +0 -51
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L0_top5.json +0 -32
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_A_skip8.json +0 -138
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_B.json +0 -17
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_C.json +0 -17
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/Items_L1_top8.json +0 -93
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/data/metadata.xml +0 -2322
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/i18n/i18n.properties +0 -3
- package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/manifest.json +0 -69
|
@@ -2467,7 +2467,7 @@ sap.ui.define([
|
|
|
2467
2467
|
this.mock(this.oModel).expects("resolve").exactly(oFixture.newContext ? 1 : 0)
|
|
2468
2468
|
.withExactArgs(oBinding.sPath, sinon.match.same(oContext))
|
|
2469
2469
|
.returns("/bar/Suppliers");
|
|
2470
|
-
this.mock(oOldHeaderContext).expects("
|
|
2470
|
+
this.mock(oOldHeaderContext).expects("doSetSelected").exactly(oFixture.newContext ? 1 : 0)
|
|
2471
2471
|
.withExactArgs(false);
|
|
2472
2472
|
this.mock(Context).expects("create").exactly(oFixture.newContext ? 1 : 0)
|
|
2473
2473
|
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
@@ -2508,7 +2508,7 @@ sap.ui.define([
|
|
|
2508
2508
|
oContext = {
|
|
2509
2509
|
getBinding : function () {}
|
|
2510
2510
|
},
|
|
2511
|
-
|
|
2511
|
+
oParentBinding0 = {
|
|
2512
2512
|
isRootBindingSuspended : function () {}
|
|
2513
2513
|
};
|
|
2514
2514
|
|
|
@@ -2524,8 +2524,8 @@ sap.ui.define([
|
|
|
2524
2524
|
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
2525
2525
|
"/resolved/path")
|
|
2526
2526
|
.returns("~headerContext~");
|
|
2527
|
-
this.mock(oContext).expects("getBinding").withExactArgs().returns(
|
|
2528
|
-
this.mock(
|
|
2527
|
+
this.mock(oContext).expects("getBinding").withExactArgs().returns(oParentBinding0);
|
|
2528
|
+
this.mock(oParentBinding0).expects("isRootBindingSuspended").withExactArgs().returns(true);
|
|
2529
2529
|
this.mock(Binding.prototype).expects("setContext").never();
|
|
2530
2530
|
this.mock(oBinding).expects("setResumeChangeReason").withExactArgs(ChangeReason.Context);
|
|
2531
2531
|
|
|
@@ -2745,8 +2745,7 @@ sap.ui.define([
|
|
|
2745
2745
|
aCreatedContexts,
|
|
2746
2746
|
aPromises = [],
|
|
2747
2747
|
oReadPromise = Promise.reject(oError),
|
|
2748
|
-
that = this
|
|
2749
|
-
i;
|
|
2748
|
+
that = this;
|
|
2750
2749
|
|
|
2751
2750
|
function getPath(i) {
|
|
2752
2751
|
return "/EMPLOYEES/" + i;
|
|
@@ -2759,7 +2758,7 @@ sap.ui.define([
|
|
|
2759
2758
|
oBinding.mPreviousContextsByPath = {
|
|
2760
2759
|
"/EMPLOYEES/99" : 99 // not parked by #reset
|
|
2761
2760
|
};
|
|
2762
|
-
for (i = 0; i < oBinding.iCreatedContexts; i += 1) {
|
|
2761
|
+
for (let i = 0; i < oBinding.iCreatedContexts; i += 1) {
|
|
2763
2762
|
oBinding.aContexts[i] = { // dummy for a created context
|
|
2764
2763
|
// for simplicity, ignore bRelative here
|
|
2765
2764
|
getPath : getPath.bind(null, i)
|
|
@@ -2830,7 +2829,7 @@ sap.ui.define([
|
|
|
2830
2829
|
oBinding.iCreatedContexts = 0;
|
|
2831
2830
|
oBinding.aContexts = ["a", "b", "c"];
|
|
2832
2831
|
if (bKeepCacheOnError) {
|
|
2833
|
-
for (i = 0; i < oBinding.iCreatedContexts; i += 1) {
|
|
2832
|
+
for (let i = 0; i < oBinding.iCreatedContexts; i += 1) {
|
|
2834
2833
|
oBinding.mPreviousContextsByPath[getPath(i)] = i;
|
|
2835
2834
|
}
|
|
2836
2835
|
}
|
|
@@ -3160,7 +3159,7 @@ sap.ui.define([
|
|
|
3160
3159
|
};
|
|
3161
3160
|
this.mock(oBinding).expects("lockGroup").withExactArgs("myGroup").returns("~groupLock~");
|
|
3162
3161
|
oRefreshKeptElementsCall = this.mock(oNewCache).expects("refreshKeptElements")
|
|
3163
|
-
.withExactArgs("~groupLock~", sinon.match.func,
|
|
3162
|
+
.withExactArgs("~groupLock~", sinon.match.func, "~bIgnorePendingChanges~")
|
|
3164
3163
|
.returns(bFail
|
|
3165
3164
|
? SyncPromise.reject(oError)
|
|
3166
3165
|
: SyncPromise.resolve("~result~"));
|
|
@@ -3398,7 +3397,8 @@ sap.ui.define([
|
|
|
3398
3397
|
"DataStateChange",
|
|
3399
3398
|
"patchCompleted",
|
|
3400
3399
|
"patchSent",
|
|
3401
|
-
"refresh"
|
|
3400
|
+
"refresh",
|
|
3401
|
+
"selectionChanged"
|
|
3402
3402
|
].forEach(function (sEvent) {
|
|
3403
3403
|
oBindingMock.expects("attachEvent")
|
|
3404
3404
|
.withExactArgs(sEvent, sinon.match.same(mEventParameters)).returns(oReturn);
|
|
@@ -4146,17 +4146,16 @@ sap.ui.define([
|
|
|
4146
4146
|
QUnit.test(sTitle, function (assert) {
|
|
4147
4147
|
var oBinding = this.bindList("/EMPLOYEES", {/*oContext*/}),
|
|
4148
4148
|
aContexts = [
|
|
4149
|
-
{
|
|
4150
|
-
{
|
|
4151
|
-
{
|
|
4149
|
+
{doSetSelected : mustBeMocked},
|
|
4150
|
+
{doSetSelected : mustBeMocked},
|
|
4151
|
+
{doSetSelected : mustBeMocked}
|
|
4152
4152
|
],
|
|
4153
4153
|
oContextMock = this.mock(Context),
|
|
4154
|
-
i,
|
|
4155
4154
|
sPath,
|
|
4156
4155
|
aResults = [
|
|
4157
|
-
{
|
|
4158
|
-
{
|
|
4159
|
-
{
|
|
4156
|
+
{doSetSelected : mustBeMocked},
|
|
4157
|
+
{doSetSelected : mustBeMocked},
|
|
4158
|
+
{doSetSelected : mustBeMocked}
|
|
4160
4159
|
],
|
|
4161
4160
|
iServerIndex,
|
|
4162
4161
|
iStart = 2;
|
|
@@ -4172,7 +4171,7 @@ sap.ui.define([
|
|
|
4172
4171
|
}
|
|
4173
4172
|
this.mock(oBinding).expects("getResolvedPath").twice().withExactArgs()
|
|
4174
4173
|
.returns("~resolved~");
|
|
4175
|
-
for (i = iStart; i < iStart + aResults.length; i += 1) {
|
|
4174
|
+
for (let i = iStart; i < iStart + aResults.length; i += 1) {
|
|
4176
4175
|
iServerIndex = bCreated ? i - 1 : i;
|
|
4177
4176
|
sPath = "~resolved~" + (bUsePredicates
|
|
4178
4177
|
? _Helper.getPrivateAnnotation(aResults[i - iStart], "predicate")
|
|
@@ -4181,7 +4180,7 @@ sap.ui.define([
|
|
|
4181
4180
|
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
4182
4181
|
sPath, iServerIndex)
|
|
4183
4182
|
.returns(aContexts[i - iStart]);
|
|
4184
|
-
this.mock(aContexts[i - iStart]).expects("
|
|
4183
|
+
this.mock(aContexts[i - iStart]).expects("doSetSelected")
|
|
4185
4184
|
.withExactArgs("~selected~");
|
|
4186
4185
|
}
|
|
4187
4186
|
this.mock(oBinding.oHeaderContext).expects("isSelected").exactly(aContexts.length)
|
|
@@ -4190,7 +4189,7 @@ sap.ui.define([
|
|
|
4190
4189
|
// code under test
|
|
4191
4190
|
assert.strictEqual(oBinding.createContexts(iStart, aResults), true);
|
|
4192
4191
|
|
|
4193
|
-
for (i = iStart; i < iStart + aResults.length; i += 1) {
|
|
4192
|
+
for (let i = iStart; i < iStart + aResults.length; i += 1) {
|
|
4194
4193
|
assert.strictEqual(oBinding.aContexts[i], aContexts[i - iStart]);
|
|
4195
4194
|
}
|
|
4196
4195
|
|
|
@@ -4341,7 +4340,7 @@ sap.ui.define([
|
|
|
4341
4340
|
var oBinding = this.bindList("/EMPLOYEES", {/*oContext*/}),
|
|
4342
4341
|
oContext1 = Context.create(this.oModel, oBinding, "/EMPLOYEES/1", 1),
|
|
4343
4342
|
oContext2 = Context.create(this.oModel, oBinding, "/EMPLOYEES/2", 2),
|
|
4344
|
-
oContext3 = {
|
|
4343
|
+
oContext3 = {doSetSelected : mustBeMocked},
|
|
4345
4344
|
oContextMock = this.mock(Context);
|
|
4346
4345
|
|
|
4347
4346
|
oBinding.mPreviousContextsByPath = {
|
|
@@ -4357,7 +4356,7 @@ sap.ui.define([
|
|
|
4357
4356
|
.returns(oContext3);
|
|
4358
4357
|
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
4359
4358
|
.withExactArgs().returns("~selected~");
|
|
4360
|
-
this.mock(oContext3).expects("
|
|
4359
|
+
this.mock(oContext3).expects("doSetSelected").withExactArgs("~selected~");
|
|
4361
4360
|
this.mock(this.oModel).expects("addPrerenderingTask")
|
|
4362
4361
|
.withExactArgs(sinon.match.func).callsArg(0);
|
|
4363
4362
|
this.mock(oBinding).expects("destroyPreviousContexts").withExactArgs(["/EMPLOYEES/0"]);
|
|
@@ -4448,7 +4447,7 @@ sap.ui.define([
|
|
|
4448
4447
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
4449
4448
|
oCreatedContext = Context.create(this.oModel, oBinding, "/EMPLOYEES('1')", -1,
|
|
4450
4449
|
SyncPromise.resolve()),
|
|
4451
|
-
oNewContext = {
|
|
4450
|
+
oNewContext = {doSetSelected : mustBeMocked};
|
|
4452
4451
|
|
|
4453
4452
|
oBinding.mPreviousContextsByPath = {
|
|
4454
4453
|
"/EMPLOYEES('1')" : oCreatedContext
|
|
@@ -4460,11 +4459,12 @@ sap.ui.define([
|
|
|
4460
4459
|
.returns(oNewContext);
|
|
4461
4460
|
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
4462
4461
|
.withExactArgs().returns("~selected~");
|
|
4463
|
-
this.mock(oNewContext).expects("
|
|
4462
|
+
this.mock(oNewContext).expects("doSetSelected").withExactArgs("~selected~");
|
|
4464
4463
|
this.mock(this.oModel).expects("addPrerenderingTask")
|
|
4465
4464
|
.withExactArgs(sinon.match.func).callsArg(0);
|
|
4466
4465
|
this.mock(oCreatedContext).expects("destroy").withExactArgs();
|
|
4467
4466
|
|
|
4467
|
+
// code under test
|
|
4468
4468
|
oBinding.createContexts(0, [{
|
|
4469
4469
|
"@$ui5._" : {predicate : "('1')"}
|
|
4470
4470
|
}]);
|
|
@@ -4967,7 +4967,7 @@ sap.ui.define([
|
|
|
4967
4967
|
oCreateInCacheExpectation.args[0][6](oError);
|
|
4968
4968
|
|
|
4969
4969
|
oSetSelectedExpectation = this.mock(oContext0).expects("doSetSelected")
|
|
4970
|
-
.withExactArgs(false);
|
|
4970
|
+
.withExactArgs(false, true);
|
|
4971
4971
|
oRemoveCreatedExpectation = oBindingMock.expects("removeCreated")
|
|
4972
4972
|
.withExactArgs(sinon.match.same(oContext0));
|
|
4973
4973
|
|
|
@@ -5487,14 +5487,14 @@ sap.ui.define([
|
|
|
5487
5487
|
created : function () {},
|
|
5488
5488
|
fetchValue : function () {},
|
|
5489
5489
|
getPath : function () {},
|
|
5490
|
-
|
|
5490
|
+
doSetSelected : mustBeMocked,
|
|
5491
5491
|
updateAfterCreate : function () {}
|
|
5492
5492
|
},
|
|
5493
5493
|
oNewContext1 = {
|
|
5494
5494
|
created : function () {},
|
|
5495
5495
|
fetchValue : function () {},
|
|
5496
5496
|
getPath : function () {},
|
|
5497
|
-
|
|
5497
|
+
doSetSelected : mustBeMocked,
|
|
5498
5498
|
updateAfterCreate : function () {}
|
|
5499
5499
|
},
|
|
5500
5500
|
bNotAllowed = aAtEnd[0] && !aAtEnd[1],
|
|
@@ -5529,7 +5529,7 @@ sap.ui.define([
|
|
|
5529
5529
|
});
|
|
5530
5530
|
this.mock(oBinding.oHeaderContext).expects("isSelected").exactly(bNotAllowed ? 1 : 2)
|
|
5531
5531
|
.withExactArgs().returns("~selected~");
|
|
5532
|
-
this.mock(oNewContext0).expects("
|
|
5532
|
+
this.mock(oNewContext0).expects("doSetSelected").withExactArgs("~selected~");
|
|
5533
5533
|
this.mock(oNewContext0).expects("created").exactly(bTransient ? 1 : 0)
|
|
5534
5534
|
.withExactArgs()
|
|
5535
5535
|
.callsFake(function () {
|
|
@@ -5582,7 +5582,7 @@ sap.ui.define([
|
|
|
5582
5582
|
oNewContext1.oCreatedPromise = Promise.resolve(arguments[4]);
|
|
5583
5583
|
return oNewContext1;
|
|
5584
5584
|
});
|
|
5585
|
-
this.mock(oNewContext1).expects("
|
|
5585
|
+
this.mock(oNewContext1).expects("doSetSelected").withExactArgs("~selected~");
|
|
5586
5586
|
this.mock(oNewContext1).expects("created").exactly(bTransient ? 1 : 0)
|
|
5587
5587
|
.withExactArgs()
|
|
5588
5588
|
.callsFake(function () {
|
|
@@ -5650,7 +5650,7 @@ sap.ui.define([
|
|
|
5650
5650
|
created : function () {},
|
|
5651
5651
|
fetchValue : function () {},
|
|
5652
5652
|
getPath : function () { return ""; },
|
|
5653
|
-
|
|
5653
|
+
doSetSelected : mustBeMocked,
|
|
5654
5654
|
refreshDependentBindings : function () {}
|
|
5655
5655
|
};
|
|
5656
5656
|
|
|
@@ -5670,7 +5670,7 @@ sap.ui.define([
|
|
|
5670
5670
|
.returns(oNewContext);
|
|
5671
5671
|
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
5672
5672
|
.withExactArgs().returns("~selected~");
|
|
5673
|
-
this.mock(oNewContext).expects("
|
|
5673
|
+
this.mock(oNewContext).expects("doSetSelected").withExactArgs("~selected~");
|
|
5674
5674
|
this.mock(oNewContext).expects("fetchValue").withExactArgs().resolves(undefined);
|
|
5675
5675
|
this.mock(_Helper).expects("setPrivateAnnotation").never();
|
|
5676
5676
|
|
|
@@ -5805,7 +5805,7 @@ sap.ui.define([
|
|
|
5805
5805
|
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5806
5806
|
// too far :-(
|
|
5807
5807
|
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
5808
|
-
oBinding.
|
|
5808
|
+
oBinding.oCache = {isRefreshNeededAfterCreate : mustBeMocked};
|
|
5809
5809
|
this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
|
|
5810
5810
|
.returns("~oCreatePathPromise~");
|
|
5811
5811
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
|
|
@@ -5821,9 +5821,10 @@ sap.ui.define([
|
|
|
5821
5821
|
this.mock(oBinding).expects("isRelative").never();
|
|
5822
5822
|
const oParentContext = {
|
|
5823
5823
|
getCanonicalPath : mustBeMocked,
|
|
5824
|
-
isExpanded : mustBeMocked
|
|
5824
|
+
isExpanded : mustBeMocked,
|
|
5825
|
+
iIndex : "~parentIndex~"
|
|
5825
5826
|
};
|
|
5826
|
-
oBinding.aContexts
|
|
5827
|
+
oBinding.aContexts[2] = oParentContext;
|
|
5827
5828
|
const oInitialData = {"@$ui5.node.parent" : oParentContext};
|
|
5828
5829
|
const oEntityData = {};
|
|
5829
5830
|
this.mock(_Helper).expects("publicClone")
|
|
@@ -5831,6 +5832,9 @@ sap.ui.define([
|
|
|
5831
5832
|
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs()
|
|
5832
5833
|
.returns("/canonical/path");
|
|
5833
5834
|
this.mock(oParentContext).expects("isExpanded").withExactArgs().returns(bExpanded);
|
|
5835
|
+
this.mock(oBinding.oCache).expects("isRefreshNeededAfterCreate")
|
|
5836
|
+
.withExactArgs("~parentIndex~")
|
|
5837
|
+
.returns(false);
|
|
5834
5838
|
this.mock(oBinding).expects("lockGroup")
|
|
5835
5839
|
.withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
|
|
5836
5840
|
this.mock(oBinding).expects("createInCache")
|
|
@@ -5840,7 +5844,7 @@ sap.ui.define([
|
|
|
5840
5844
|
.and(sinon.match({"@$ui5.node.parent" : "canonical/path"})),
|
|
5841
5845
|
false, sinon.match.func, sinon.match.func)
|
|
5842
5846
|
.returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
|
|
5843
|
-
const oContext = {fetchValue : mustBeMocked,
|
|
5847
|
+
const oContext = {fetchValue : mustBeMocked, doSetSelected : mustBeMocked};
|
|
5844
5848
|
this.mock(Context).expects("create")
|
|
5845
5849
|
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
5846
5850
|
"~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/3,
|
|
@@ -5848,11 +5852,11 @@ sap.ui.define([
|
|
|
5848
5852
|
.returns(oContext);
|
|
5849
5853
|
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
5850
5854
|
.withExactArgs().returns("~selected~");
|
|
5851
|
-
this.mock(oContext).expects("
|
|
5855
|
+
this.mock(oContext).expects("doSetSelected").withExactArgs("~selected~");
|
|
5852
5856
|
this.mock(oContext).expects("fetchValue").withExactArgs()
|
|
5853
5857
|
.returns(SyncPromise.resolve()); //TODO
|
|
5854
|
-
this.mock(oBinding).expects("
|
|
5855
|
-
.withExactArgs(
|
|
5858
|
+
this.mock(oBinding).expects("insertContext")
|
|
5859
|
+
.withExactArgs(sinon.match.same(oContext), 3, false);
|
|
5856
5860
|
|
|
5857
5861
|
// code under test
|
|
5858
5862
|
assert.strictEqual(oBinding.create(oInitialData, true), oContext);
|
|
@@ -5860,9 +5864,6 @@ sap.ui.define([
|
|
|
5860
5864
|
assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
|
|
5861
5865
|
assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
|
|
5862
5866
|
assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
|
|
5863
|
-
assert.strictEqual(oBinding.iMaxLength, 43);
|
|
5864
|
-
assert.deepEqual(oBinding.aContexts,
|
|
5865
|
-
["0", "1", oParentContext, oContext, {iIndex : 4}, undefined, {iIndex : 6}]);
|
|
5866
5867
|
});
|
|
5867
5868
|
});
|
|
5868
5869
|
|
|
@@ -5873,7 +5874,6 @@ sap.ui.define([
|
|
|
5873
5874
|
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5874
5875
|
// too far :-(
|
|
5875
5876
|
oBinding.mParameters.$$aggregation = {expandTo : 2, hierarchyQualifier : "X"};
|
|
5876
|
-
oBinding.iMaxLength = 42;
|
|
5877
5877
|
this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
|
|
5878
5878
|
.returns("~oCreatePathPromise~");
|
|
5879
5879
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
|
|
@@ -5887,7 +5887,6 @@ sap.ui.define([
|
|
|
5887
5887
|
this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
|
|
5888
5888
|
this.mock(oBinding).expects("checkDeepCreate").never();
|
|
5889
5889
|
this.mock(oBinding).expects("isRelative").never();
|
|
5890
|
-
oBinding.aContexts.push({iIndex : 0}, undefined, {iIndex : 2});
|
|
5891
5890
|
this.mock(_Helper).expects("publicClone")
|
|
5892
5891
|
.withExactArgs(sinon.match.same(oInitialData), true).returns("~oEntityData~");
|
|
5893
5892
|
this.mock(oBinding).expects("lockGroup")
|
|
@@ -5897,7 +5896,7 @@ sap.ui.define([
|
|
|
5897
5896
|
sinon.match(rTransientPredicate), "~oEntityData~",
|
|
5898
5897
|
false, sinon.match.func, sinon.match.func)
|
|
5899
5898
|
.returns(SyncPromise.resolve(Promise.resolve("~oCreatedEntity~")));
|
|
5900
|
-
const oContext = {fetchValue : mustBeMocked,
|
|
5899
|
+
const oContext = {fetchValue : mustBeMocked, doSetSelected : mustBeMocked};
|
|
5901
5900
|
this.mock(Context).expects("create")
|
|
5902
5901
|
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
5903
5902
|
"~sResolvedPath~($uid=id-1-23)", /*iChildIndex*/0,
|
|
@@ -5905,11 +5904,11 @@ sap.ui.define([
|
|
|
5905
5904
|
.returns(oContext);
|
|
5906
5905
|
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
5907
5906
|
.withExactArgs().returns("~selected~");
|
|
5908
|
-
this.mock(oContext).expects("
|
|
5907
|
+
this.mock(oContext).expects("doSetSelected").withExactArgs("~selected~");
|
|
5909
5908
|
this.mock(oContext).expects("fetchValue").withExactArgs()
|
|
5910
5909
|
.returns(SyncPromise.resolve()); //TODO
|
|
5911
|
-
this.mock(oBinding).expects("
|
|
5912
|
-
.withExactArgs(
|
|
5910
|
+
this.mock(oBinding).expects("insertContext")
|
|
5911
|
+
.withExactArgs(sinon.match.same(oContext), 0, false);
|
|
5913
5912
|
|
|
5914
5913
|
// code under test
|
|
5915
5914
|
assert.strictEqual(oBinding.create(oInitialData, true), oContext);
|
|
@@ -5917,9 +5916,125 @@ sap.ui.define([
|
|
|
5917
5916
|
assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
|
|
5918
5917
|
assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
|
|
5919
5918
|
assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
|
|
5920
|
-
|
|
5921
|
-
|
|
5922
|
-
|
|
5919
|
+
});
|
|
5920
|
+
});
|
|
5921
|
+
|
|
5922
|
+
//*********************************************************************************************
|
|
5923
|
+
[undefined, 42].forEach(function (iRank) {
|
|
5924
|
+
[false, true].forEach(function (bRefresh) {
|
|
5925
|
+
const sTitle = "create: recursive hierarchy, createInPlace, rank=" + iRank
|
|
5926
|
+
+ ", refresh=" + bRefresh;
|
|
5927
|
+
|
|
5928
|
+
QUnit.test(sTitle, function (assert) {
|
|
5929
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
5930
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
5931
|
+
// too far :-(
|
|
5932
|
+
oBinding.mParameters.$$aggregation = {createInPlace : true, hierarchyQualifier : "X"};
|
|
5933
|
+
oBinding.oCache = {isRefreshNeededAfterCreate : mustBeMocked};
|
|
5934
|
+
this.mock(oBinding).expects("fetchResourcePath").withExactArgs()
|
|
5935
|
+
.returns("~oCreatePathPromise~");
|
|
5936
|
+
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs()
|
|
5937
|
+
.returns("~sGroupId~");
|
|
5938
|
+
this.mock(oBinding).expects("getResolvedPath").withExactArgs()
|
|
5939
|
+
.returns("~sResolvedPath~");
|
|
5940
|
+
const oHelperMock = this.mock(_Helper);
|
|
5941
|
+
oHelperMock.expects("uid").withExactArgs().returns("id-1-23");
|
|
5942
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
5943
|
+
oHelperMock.expects("isDataAggregation")
|
|
5944
|
+
.withExactArgs(sinon.match.same(oBinding.mParameters)).returns(false);
|
|
5945
|
+
this.mock(oBinding).expects("isTransient").twice().withExactArgs().returns(false);
|
|
5946
|
+
this.mock(oBinding).expects("checkDeepCreate").never();
|
|
5947
|
+
this.mock(oBinding).expects("isRelative").never();
|
|
5948
|
+
const oParentContext = {
|
|
5949
|
+
getCanonicalPath : mustBeMocked,
|
|
5950
|
+
isExpanded : mustBeMocked,
|
|
5951
|
+
iIndex : "~parentIndex~"
|
|
5952
|
+
};
|
|
5953
|
+
oBinding.aContexts[2] = oParentContext;
|
|
5954
|
+
const oInitialData = {"@$ui5.node.parent" : oParentContext};
|
|
5955
|
+
const oEntityData = {};
|
|
5956
|
+
oHelperMock.expects("publicClone").withExactArgs(sinon.match.same(oInitialData), true)
|
|
5957
|
+
.returns(oEntityData);
|
|
5958
|
+
this.mock(oParentContext).expects("getCanonicalPath").withExactArgs()
|
|
5959
|
+
.returns("/canonical/path");
|
|
5960
|
+
this.mock(oParentContext).expects("isExpanded").withExactArgs().returns(undefined);
|
|
5961
|
+
this.mock(oBinding.oCache).expects("isRefreshNeededAfterCreate")
|
|
5962
|
+
.withExactArgs("~parentIndex~")
|
|
5963
|
+
.returns(bRefresh);
|
|
5964
|
+
this.mock(oBinding).expects("lockGroup")
|
|
5965
|
+
.withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
|
|
5966
|
+
const oContext = {
|
|
5967
|
+
destroy : mustBeMocked,
|
|
5968
|
+
fetchValue : mustBeMocked,
|
|
5969
|
+
doSetSelected : mustBeMocked,
|
|
5970
|
+
updateAfterCreate : mustBeMocked
|
|
5971
|
+
};
|
|
5972
|
+
const oCreatePromise = new SyncPromise((resolve) => {
|
|
5973
|
+
setTimeout(() => {
|
|
5974
|
+
oHelperMock.expects("getPrivateAnnotation")
|
|
5975
|
+
.withExactArgs("~oCreatedEntity~", "predicate")
|
|
5976
|
+
.returns("~sPredicate~");
|
|
5977
|
+
this.mock(oBinding).expects("adjustPredicate")
|
|
5978
|
+
.withExactArgs("($uid=id-1-23)", "~sPredicate~", sinon.match.same(oContext));
|
|
5979
|
+
this.mock(oBinding).expects("fireEvent")
|
|
5980
|
+
.withExactArgs("createCompleted",
|
|
5981
|
+
{context : sinon.match.same(oContext), success : true});
|
|
5982
|
+
oHelperMock.expects("getPrivateAnnotation")
|
|
5983
|
+
.withExactArgs("~oCreatedEntity~", "rank")
|
|
5984
|
+
.returns(iRank);
|
|
5985
|
+
const bUseContext = iRank && !bRefresh;
|
|
5986
|
+
this.mock(oContext).expects("destroy").exactly(bUseContext ? 0 : 1).withExactArgs();
|
|
5987
|
+
this.mock(oBinding).expects("insertContext").exactly(bUseContext ? 1 : 0)
|
|
5988
|
+
.withExactArgs(sinon.match.same(oContext), 42);
|
|
5989
|
+
oHelperMock.expects("getPrivateAnnotation").exactly(bUseContext ? 1 : 0)
|
|
5990
|
+
.withExactArgs("~oCreatedEntity~", "deepCreate").returns(false);
|
|
5991
|
+
oHelperMock.expects("deletePrivateAnnotation").exactly(bUseContext ? 1 : 0)
|
|
5992
|
+
.withExactArgs("~oCreatedEntity~", "deepCreate");
|
|
5993
|
+
this.mock(oBinding).expects("getGroupId").exactly(bUseContext ? 1 : 0)
|
|
5994
|
+
.withExactArgs().returns("~sGroupId~");
|
|
5995
|
+
this.mock(this.oModel).expects("isApiGroup").exactly(bUseContext ? 1 : 0)
|
|
5996
|
+
.withExactArgs("~sGroupId~").returns(false);
|
|
5997
|
+
this.mock(oContext).expects("updateAfterCreate").exactly(bUseContext ? 1 : 0)
|
|
5998
|
+
.withExactArgs(true, "~sGroupId~");
|
|
5999
|
+
|
|
6000
|
+
resolve("~oCreatedEntity~");
|
|
6001
|
+
}, 0);
|
|
6002
|
+
});
|
|
6003
|
+
this.mock(oBinding).expects("createInCache")
|
|
6004
|
+
.withExactArgs("~oGroupLock~", "~oCreatePathPromise~", "~sResolvedPath~",
|
|
6005
|
+
sinon.match(rTransientPredicate), sinon.match.same(oEntityData),
|
|
6006
|
+
false, sinon.match.func, sinon.match.func)
|
|
6007
|
+
.returns(oCreatePromise);
|
|
6008
|
+
this.mock(oBinding).expects("requestSideEffects").exactly(bRefresh ? 1 : 0)
|
|
6009
|
+
.withExactArgs("~sGroupId~", [""])
|
|
6010
|
+
.resolves("~refreshResult~");
|
|
6011
|
+
this.mock(Context).expects("create")
|
|
6012
|
+
.withExactArgs(sinon.match.same(this.oModel), sinon.match.same(oBinding),
|
|
6013
|
+
"~sResolvedPath~($uid=id-1-23)", /*iIndex*/undefined,
|
|
6014
|
+
sinon.match(function (oCreatePromise0) {
|
|
6015
|
+
oCreatePromise0.then(function (vResult) {
|
|
6016
|
+
assert.deepEqual(vResult,
|
|
6017
|
+
// createInCache's oCreatePromise resolves with no defined result
|
|
6018
|
+
bRefresh ? [undefined, "~refreshResult~"] : undefined);
|
|
6019
|
+
});
|
|
6020
|
+
return oCreatePromise0 instanceof SyncPromise;
|
|
6021
|
+
}), undefined)
|
|
6022
|
+
.returns(oContext);
|
|
6023
|
+
this.mock(oBinding.oHeaderContext).expects("isSelected")
|
|
6024
|
+
.withExactArgs().returns("~selected~");
|
|
6025
|
+
this.mock(oContext).expects("doSetSelected").withExactArgs("~selected~");
|
|
6026
|
+
this.mock(oContext).expects("fetchValue").never();
|
|
6027
|
+
this.mock(oBinding).expects("_fireChange").never();
|
|
6028
|
+
|
|
6029
|
+
// code under test
|
|
6030
|
+
assert.strictEqual(oBinding.create(oInitialData, true), oContext);
|
|
6031
|
+
|
|
6032
|
+
assert.strictEqual(oBinding.iActiveContexts, 0, "unchanged");
|
|
6033
|
+
assert.strictEqual(oBinding.iCreatedContexts, 0, "unchanged");
|
|
6034
|
+
assert.strictEqual(oBinding.bFirstCreateAtEnd, false);
|
|
6035
|
+
|
|
6036
|
+
return oCreatePromise;
|
|
6037
|
+
});
|
|
5923
6038
|
});
|
|
5924
6039
|
});
|
|
5925
6040
|
|
|
@@ -6055,7 +6170,7 @@ sap.ui.define([
|
|
|
6055
6170
|
oContext.created().catch(function (oError) {
|
|
6056
6171
|
assert.ok(oError.canceled, "create promise rejected with 'canceled'");
|
|
6057
6172
|
});
|
|
6058
|
-
this.mock(oContext).expects("doSetSelected").withExactArgs(false);
|
|
6173
|
+
this.mock(oContext).expects("doSetSelected").withExactArgs(false, true);
|
|
6059
6174
|
this.mock(oBinding).expects("removeCreated").withExactArgs(sinon.match.same(oContext))
|
|
6060
6175
|
.callThrough();
|
|
6061
6176
|
oBindingMock.expects("deleteFromCache").callsFake(function () {
|
|
@@ -8485,11 +8600,11 @@ sap.ui.define([
|
|
|
8485
8600
|
function expectVisitAndRefresh(aPromises) {
|
|
8486
8601
|
that.mock(oBinding).expects("visitSideEffects").withExactArgs(sGroupId,
|
|
8487
8602
|
sinon.match.same(aPaths), bHeader ? undefined : oContext, aPromises)
|
|
8488
|
-
.callsFake(function (_sGroupId, _aPaths, _oContext,
|
|
8489
|
-
|
|
8490
|
-
|
|
8603
|
+
.callsFake(function (_sGroupId, _aPaths, _oContext, aPromises0) {
|
|
8604
|
+
aPromises0.push(Promise.resolve());
|
|
8605
|
+
aPromises0.push(Promise.reject(oCanceledError));
|
|
8491
8606
|
if (bRecursionRejects) {
|
|
8492
|
-
|
|
8607
|
+
aPromises0.push(Promise.reject(oError));
|
|
8493
8608
|
}
|
|
8494
8609
|
});
|
|
8495
8610
|
that.mock(oBinding).expects("refreshDependentListBindingsWithoutCache")
|
|
@@ -9563,12 +9678,13 @@ sap.ui.define([
|
|
|
9563
9678
|
+ ", count=" + iCount + ", silent=" + bSilent;
|
|
9564
9679
|
|
|
9565
9680
|
if (!bSuccess && iCount === 0 || bDataRequested && iCount < 0) {
|
|
9566
|
-
return; //
|
|
9681
|
+
return; // skip useless combinations
|
|
9567
9682
|
}
|
|
9568
9683
|
|
|
9569
9684
|
QUnit.test(sTitle, function (assert) {
|
|
9570
9685
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
9571
9686
|
oContext = {
|
|
9687
|
+
iIndex : "~iIndex~",
|
|
9572
9688
|
getModelIndex : function () {},
|
|
9573
9689
|
getPath : function () {},
|
|
9574
9690
|
toString : function () { return "~context~"; }
|
|
@@ -9585,6 +9701,7 @@ sap.ui.define([
|
|
|
9585
9701
|
oBinding.oCache = { // simulate an aggregation cache
|
|
9586
9702
|
expand : function () {}
|
|
9587
9703
|
};
|
|
9704
|
+
oBinding.aContexts["~iIndex~"] = oContext;
|
|
9588
9705
|
|
|
9589
9706
|
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
9590
9707
|
this.mock(oBinding).expects("lockGroup").withExactArgs().returns(oGroupLock);
|
|
@@ -9654,6 +9771,22 @@ sap.ui.define([
|
|
|
9654
9771
|
});
|
|
9655
9772
|
});
|
|
9656
9773
|
|
|
9774
|
+
//*********************************************************************************************
|
|
9775
|
+
QUnit.test("expand: Not currently part of the hierarchy", function (assert) {
|
|
9776
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
9777
|
+
const oContext = {
|
|
9778
|
+
iIndex : 0,
|
|
9779
|
+
toString : () => "~oContext~"
|
|
9780
|
+
};
|
|
9781
|
+
|
|
9782
|
+
oBinding.aContexts = [, oContext];
|
|
9783
|
+
|
|
9784
|
+
assert.throws(function () {
|
|
9785
|
+
// code under test
|
|
9786
|
+
oBinding.expand(oContext);
|
|
9787
|
+
}, new Error("Not currently part of the hierarchy: ~oContext~"));
|
|
9788
|
+
});
|
|
9789
|
+
|
|
9657
9790
|
//*********************************************************************************************
|
|
9658
9791
|
QUnit.test("insertGap", function (assert) {
|
|
9659
9792
|
const _ = undefined;
|
|
@@ -9710,12 +9843,12 @@ sap.ui.define([
|
|
|
9710
9843
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
9711
9844
|
oCollapseExpectation,
|
|
9712
9845
|
oContext = {
|
|
9846
|
+
iIndex : "~iIndex~",
|
|
9713
9847
|
getModelIndex : function () {},
|
|
9714
9848
|
getPath : function () {}
|
|
9715
9849
|
},
|
|
9716
9850
|
aContextsBefore,
|
|
9717
|
-
oFireChangeExpectation
|
|
9718
|
-
i;
|
|
9851
|
+
oFireChangeExpectation;
|
|
9719
9852
|
|
|
9720
9853
|
// create a context dummy object with index i
|
|
9721
9854
|
function createContextDummy(i) {
|
|
@@ -9733,10 +9866,11 @@ sap.ui.define([
|
|
|
9733
9866
|
oBinding.oCache = { // simulate an aggregation cache
|
|
9734
9867
|
collapse : function () {}
|
|
9735
9868
|
};
|
|
9736
|
-
for (i = 0; i < 8; i += 1) {
|
|
9869
|
+
for (let i = 0; i < 8; i += 1) {
|
|
9737
9870
|
// with gap at 6
|
|
9738
9871
|
oBinding.aContexts.push(i === 6 ? undefined : createContextDummy(i));
|
|
9739
9872
|
}
|
|
9873
|
+
oBinding.aContexts["~iIndex~"] = oContext;
|
|
9740
9874
|
oBinding.iMaxLength = 8;
|
|
9741
9875
|
aContextsBefore = oBinding.aContexts.slice();
|
|
9742
9876
|
assert.deepEqual(oBinding.mPreviousContextsByPath, {});
|
|
@@ -9767,9 +9901,9 @@ sap.ui.define([
|
|
|
9767
9901
|
assert.strictEqual(oBinding.aContexts[4], aContextsBefore[7], "4");
|
|
9768
9902
|
assert.strictEqual(oBinding.aContexts.length, 5);
|
|
9769
9903
|
assert.strictEqual(oBinding.iMaxLength, 5);
|
|
9770
|
-
oBinding.aContexts.forEach(function (
|
|
9904
|
+
oBinding.aContexts.forEach(function (oContext0, iIndex) {
|
|
9771
9905
|
if (iIndex !== 3) { // 6 - iCount
|
|
9772
|
-
assert.strictEqual(
|
|
9906
|
+
assert.strictEqual(oContext0.iIndex, iIndex);
|
|
9773
9907
|
}
|
|
9774
9908
|
});
|
|
9775
9909
|
assert.deepEqual(oBinding.mPreviousContextsByPath, {
|
|
@@ -9780,10 +9914,10 @@ sap.ui.define([
|
|
|
9780
9914
|
} else {
|
|
9781
9915
|
assert.strictEqual(oBinding.iMaxLength, 8);
|
|
9782
9916
|
assert.strictEqual(oBinding.aContexts.length, 8);
|
|
9783
|
-
oBinding.aContexts.forEach(function (
|
|
9917
|
+
oBinding.aContexts.forEach(function (oContext0, iIndex) {
|
|
9784
9918
|
if (iIndex !== 6) {
|
|
9785
|
-
assert.strictEqual(
|
|
9786
|
-
assert.strictEqual(
|
|
9919
|
+
assert.strictEqual(oContext0.iIndex, iIndex);
|
|
9920
|
+
assert.strictEqual(oContext0.getPath(), "/EMPLOYEES/" + iIndex);
|
|
9787
9921
|
}
|
|
9788
9922
|
});
|
|
9789
9923
|
assert.deepEqual(oBinding.mPreviousContextsByPath, {});
|
|
@@ -9793,6 +9927,22 @@ sap.ui.define([
|
|
|
9793
9927
|
});
|
|
9794
9928
|
});
|
|
9795
9929
|
|
|
9930
|
+
//*********************************************************************************************
|
|
9931
|
+
QUnit.test("collapse: Not currently part of the hierarchy", function (assert) {
|
|
9932
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
9933
|
+
const oContext = {
|
|
9934
|
+
iIndex : 0,
|
|
9935
|
+
toString : () => "~oContext~"
|
|
9936
|
+
};
|
|
9937
|
+
|
|
9938
|
+
oBinding.aContexts = [, oContext];
|
|
9939
|
+
|
|
9940
|
+
assert.throws(function () {
|
|
9941
|
+
// code under test
|
|
9942
|
+
oBinding.collapse(oContext);
|
|
9943
|
+
}, new Error("Not currently part of the hierarchy: ~oContext~"));
|
|
9944
|
+
});
|
|
9945
|
+
|
|
9796
9946
|
//*********************************************************************************************
|
|
9797
9947
|
QUnit.test("resetKeepAlive", function () {
|
|
9798
9948
|
var oBinding = this.bindList("/EMPLOYEES"),
|
|
@@ -10427,6 +10577,17 @@ sap.ui.define([
|
|
|
10427
10577
|
assert.strictEqual(oBinding.iActiveContexts, 41);
|
|
10428
10578
|
});
|
|
10429
10579
|
|
|
10580
|
+
//*********************************************************************************************
|
|
10581
|
+
QUnit.test("fireSelectionChanged", function () {
|
|
10582
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
10583
|
+
|
|
10584
|
+
this.mock(oBinding).expects("fireEvent")
|
|
10585
|
+
.withExactArgs("selectionChanged", {context : "~oContext~"});
|
|
10586
|
+
|
|
10587
|
+
// code under test
|
|
10588
|
+
oBinding.fireSelectionChanged("~oContext~");
|
|
10589
|
+
});
|
|
10590
|
+
|
|
10430
10591
|
//*********************************************************************************************
|
|
10431
10592
|
[false, true].forEach(function (bFireChange) {
|
|
10432
10593
|
QUnit.test("getAllCurrentContexts: bFireChange = " + bFireChange, function (assert) {
|
|
@@ -11078,7 +11239,7 @@ sap.ui.define([
|
|
|
11078
11239
|
[false, true].forEach((bIsExpanded) => {
|
|
11079
11240
|
[1, 4].forEach((iCount) => {
|
|
11080
11241
|
[false, true].forEach((bMakeRoot) => {
|
|
11081
|
-
[23, 42
|
|
11242
|
+
[23, 42].forEach((iNewIndex) => {
|
|
11082
11243
|
const sTitle = `move: expanded=${bIsExpanded}, child nodes added=${iCount},
|
|
11083
11244
|
make root=${bMakeRoot}, new index=${iNewIndex}`;
|
|
11084
11245
|
|
|
@@ -11104,6 +11265,7 @@ sap.ui.define([
|
|
|
11104
11265
|
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
11105
11266
|
// too far :-(
|
|
11106
11267
|
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
11268
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
11107
11269
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
11108
11270
|
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
11109
11271
|
.returns("~oGroupLock~");
|
|
@@ -11112,7 +11274,7 @@ sap.ui.define([
|
|
|
11112
11274
|
};
|
|
11113
11275
|
oBinding.oCache = oCache;
|
|
11114
11276
|
this.mock(oCache).expects("move").withExactArgs("~oGroupLock~", "~child~",
|
|
11115
|
-
bMakeRoot ? null : "~parent~", undefined, undefined)
|
|
11277
|
+
bMakeRoot ? null : "~parent~", undefined, undefined, undefined)
|
|
11116
11278
|
.returns({promise : new SyncPromise((resolve) => {
|
|
11117
11279
|
setTimeout(() => {
|
|
11118
11280
|
if (oParentContext) {
|
|
@@ -11132,6 +11294,10 @@ sap.ui.define([
|
|
|
11132
11294
|
this.mock(oChildContext).expects("getModelIndex").withExactArgs()
|
|
11133
11295
|
.returns(iOldIndex);
|
|
11134
11296
|
oBinding.aContexts[iOldIndex] = oChildContext;
|
|
11297
|
+
this.mock(_Helper).expects("insert")
|
|
11298
|
+
.withExactArgs(sinon.match.same(oBinding.aContexts), iNewIndex,
|
|
11299
|
+
sinon.match.same(oChildContext))
|
|
11300
|
+
.callThrough(); // needed for "setIndices"
|
|
11135
11301
|
this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
|
|
11136
11302
|
.withExactArgs(sinon.match.same(oChildContext))
|
|
11137
11303
|
.returns(SyncPromise.resolve());
|
|
@@ -11166,7 +11332,13 @@ sap.ui.define([
|
|
|
11166
11332
|
//*********************************************************************************************
|
|
11167
11333
|
[false, true].forEach((bMakeRoot) => {
|
|
11168
11334
|
[undefined, null, {}].forEach((oSiblingContext) => {
|
|
11169
|
-
|
|
11335
|
+
[false, true].forEach((bUpdateSiblingIndex) => {
|
|
11336
|
+
const sTitle = `move: refresh; make root=${bMakeRoot}, with sibling=${oSiblingContext}`
|
|
11337
|
+
+ `, update sibling's index=${bUpdateSiblingIndex}`;
|
|
11338
|
+
|
|
11339
|
+
if (bUpdateSiblingIndex && !oSiblingContext) {
|
|
11340
|
+
return;
|
|
11341
|
+
}
|
|
11170
11342
|
|
|
11171
11343
|
QUnit.test(sTitle, async function (assert) {
|
|
11172
11344
|
const oChildContext = {
|
|
@@ -11187,9 +11359,13 @@ sap.ui.define([
|
|
|
11187
11359
|
let sSiblingPath = oSiblingContext;
|
|
11188
11360
|
if (oSiblingContext) {
|
|
11189
11361
|
sSiblingPath = "~sibling~";
|
|
11362
|
+
oSiblingContext.iIndex = "~old~";
|
|
11190
11363
|
oSiblingContext.getCanonicalPath = mustBeMocked;
|
|
11364
|
+
oSiblingContext.isEffectivelyKeptAlive = mustBeMocked;
|
|
11191
11365
|
this.mock(oSiblingContext).expects("getCanonicalPath").withExactArgs()
|
|
11192
11366
|
.returns("/~sibling~");
|
|
11367
|
+
this.mock(oSiblingContext).expects("isEffectivelyKeptAlive").withExactArgs()
|
|
11368
|
+
.returns(bUpdateSiblingIndex);
|
|
11193
11369
|
}
|
|
11194
11370
|
const oBinding = this.bindList("/EMPLOYEES");
|
|
11195
11371
|
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
@@ -11197,6 +11373,7 @@ sap.ui.define([
|
|
|
11197
11373
|
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
11198
11374
|
this.mock(oBinding).expects("collapse").never();
|
|
11199
11375
|
this.mock(oBinding).expects("expand").never();
|
|
11376
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
11200
11377
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
11201
11378
|
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
11202
11379
|
.returns("~oGroupLock~");
|
|
@@ -11204,15 +11381,16 @@ sap.ui.define([
|
|
|
11204
11381
|
move : mustBeMocked
|
|
11205
11382
|
};
|
|
11206
11383
|
oBinding.oCache = oCache;
|
|
11207
|
-
const
|
|
11384
|
+
const fnGetIndices = sinon.stub().returns(["~childIndex~", "~siblingIndex~"]);
|
|
11208
11385
|
this.mock(oCache).expects("move")
|
|
11209
11386
|
.withExactArgs("~oGroupLock~", "~child~", bMakeRoot ? null : "~parent~", sSiblingPath,
|
|
11210
|
-
bHasSibling ? "~childNonCanonical~" : undefined
|
|
11387
|
+
bHasSibling ? "~childNonCanonical~" : undefined,
|
|
11388
|
+
oSiblingContext ? bUpdateSiblingIndex : undefined)
|
|
11211
11389
|
.returns({promise : "A", refresh : true});
|
|
11212
11390
|
this.mock(oBinding).expects("requestSideEffects").withExactArgs("~group~", [""])
|
|
11213
11391
|
.returns("B");
|
|
11214
11392
|
this.mock(SyncPromise).expects("all").withExactArgs(["A", "B"])
|
|
11215
|
-
.returns(SyncPromise.resolve(Promise.resolve([
|
|
11393
|
+
.returns(SyncPromise.resolve(Promise.resolve([fnGetIndices])));
|
|
11216
11394
|
this.mock(oBinding).expects("insertGap").never();
|
|
11217
11395
|
this.mock(oBinding).expects("_fireChange").never();
|
|
11218
11396
|
|
|
@@ -11221,12 +11399,17 @@ sap.ui.define([
|
|
|
11221
11399
|
oSiblingContext);
|
|
11222
11400
|
|
|
11223
11401
|
assert.strictEqual(oSyncPromise.isPending(), true);
|
|
11224
|
-
assert.notOk(
|
|
11402
|
+
assert.notOk(fnGetIndices.called);
|
|
11225
11403
|
|
|
11226
11404
|
await oSyncPromise;
|
|
11227
11405
|
|
|
11228
|
-
assert.strictEqual(oChildContext.iIndex, "~
|
|
11406
|
+
assert.strictEqual(oChildContext.iIndex, "~childIndex~");
|
|
11407
|
+
if (oSiblingContext) {
|
|
11408
|
+
assert.strictEqual(oSiblingContext.iIndex,
|
|
11409
|
+
bUpdateSiblingIndex ? "~siblingIndex~" : "~old~");
|
|
11410
|
+
}
|
|
11229
11411
|
});
|
|
11412
|
+
});
|
|
11230
11413
|
});
|
|
11231
11414
|
});
|
|
11232
11415
|
|
|
@@ -11245,6 +11428,7 @@ sap.ui.define([
|
|
|
11245
11428
|
// too far :-(
|
|
11246
11429
|
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
11247
11430
|
this.mock(oBinding).expects("collapse").never();
|
|
11431
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
11248
11432
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
11249
11433
|
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
11250
11434
|
.returns("~oGroupLock~");
|
|
@@ -11253,7 +11437,7 @@ sap.ui.define([
|
|
|
11253
11437
|
};
|
|
11254
11438
|
oBinding.oCache = oCache;
|
|
11255
11439
|
this.mock(oCache).expects("move")
|
|
11256
|
-
.withExactArgs("~oGroupLock~", "~child~", "~parent~", undefined, undefined)
|
|
11440
|
+
.withExactArgs("~oGroupLock~", "~child~", "~parent~", undefined, undefined, undefined)
|
|
11257
11441
|
.returns({promise : SyncPromise.reject("~error~"), refresh : false});
|
|
11258
11442
|
this.mock(oBinding).expects("expand").never();
|
|
11259
11443
|
|
|
@@ -11277,6 +11461,7 @@ sap.ui.define([
|
|
|
11277
11461
|
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
11278
11462
|
// too far :-(
|
|
11279
11463
|
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
11464
|
+
this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
11280
11465
|
this.mock(oBinding).expects("getUpdateGroupId").withExactArgs().returns("~group~");
|
|
11281
11466
|
this.mock(oBinding).expects("lockGroup").withExactArgs("~group~", true, true)
|
|
11282
11467
|
.returns("~oGroupLock~");
|
|
@@ -11286,13 +11471,16 @@ sap.ui.define([
|
|
|
11286
11471
|
};
|
|
11287
11472
|
oBinding.oCache = oCache;
|
|
11288
11473
|
this.mock(oCache).expects("move")
|
|
11289
|
-
.withExactArgs("~oGroupLock~", "~child~", null, undefined, undefined)
|
|
11474
|
+
.withExactArgs("~oGroupLock~", "~child~", null, undefined, undefined, undefined)
|
|
11290
11475
|
.returns({promise : SyncPromise.resolve([1, 43, "~iCollapseCount~"]), refresh : false});
|
|
11291
11476
|
this.mock(oBinding).expects("requestSideEffects").never();
|
|
11292
11477
|
this.mock(oBinding).expects("insertGap").never();
|
|
11293
11478
|
this.mock(oBinding).expects("collapse")
|
|
11294
11479
|
.withExactArgs(sinon.match.same(oChildContext), true, "~iCollapseCount~");
|
|
11295
11480
|
this.mock(oChildContext).expects("getModelIndex").withExactArgs().returns(43);
|
|
11481
|
+
this.mock(_Helper).expects("insert")
|
|
11482
|
+
.withExactArgs(sinon.match.same(oBinding.aContexts), 43,
|
|
11483
|
+
sinon.match.same(oChildContext));
|
|
11296
11484
|
this.mock(oBinding).expects("expand")
|
|
11297
11485
|
.withExactArgs(sinon.match.same(oChildContext))
|
|
11298
11486
|
.returns(SyncPromise.reject("~error~"));
|
|
@@ -11880,6 +12068,220 @@ sap.ui.define([
|
|
|
11880
12068
|
assert.strictEqual(ODataListBinding.isBelowAggregation(oContext), true);
|
|
11881
12069
|
});
|
|
11882
12070
|
|
|
12071
|
+
//*********************************************************************************************
|
|
12072
|
+
QUnit.test("fetchOrGetSibling: Missing recursive hierarchy", function (assert) {
|
|
12073
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12074
|
+
this.mock(oBinding).expects("checkSuspended").never();
|
|
12075
|
+
|
|
12076
|
+
assert.throws(function () {
|
|
12077
|
+
// code under test
|
|
12078
|
+
oBinding.fetchOrGetSibling();
|
|
12079
|
+
}, new Error("Missing recursive hierarchy"));
|
|
12080
|
+
|
|
12081
|
+
oBinding.mParameters = {$$aggregation : {}};
|
|
12082
|
+
|
|
12083
|
+
assert.throws(function () {
|
|
12084
|
+
// code under test
|
|
12085
|
+
oBinding.fetchOrGetSibling();
|
|
12086
|
+
}, new Error("Missing recursive hierarchy"));
|
|
12087
|
+
});
|
|
12088
|
+
|
|
12089
|
+
//*********************************************************************************************
|
|
12090
|
+
[-2, +2, -3, +3, 0].forEach((iOffset) => {
|
|
12091
|
+
QUnit.test(`fetchOrGetSibling: unsupported offset ${iOffset}`, function (assert) {
|
|
12092
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12093
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12094
|
+
// too far :-(
|
|
12095
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12096
|
+
this.mock(oBinding).expects("checkSuspended").never();
|
|
12097
|
+
|
|
12098
|
+
assert.throws(function () {
|
|
12099
|
+
// code under test
|
|
12100
|
+
oBinding.fetchOrGetSibling(/*oNode*/null, iOffset);
|
|
12101
|
+
}, new Error("Unsupported offset: " + iOffset));
|
|
12102
|
+
});
|
|
12103
|
+
});
|
|
12104
|
+
|
|
12105
|
+
//*********************************************************************************************
|
|
12106
|
+
QUnit.test("fetchOrGetSibling: Unsupported context (deleted)", function (assert) {
|
|
12107
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12108
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12109
|
+
// too far :-(
|
|
12110
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12111
|
+
const oNode = {
|
|
12112
|
+
iIndex : "~iIndex~",
|
|
12113
|
+
isDeleted : mustBeMocked
|
|
12114
|
+
// NO: isTransient
|
|
12115
|
+
};
|
|
12116
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(true);
|
|
12117
|
+
oBinding.aContexts["~iIndex~"] = oNode;
|
|
12118
|
+
this.mock(oBinding).expects("checkSuspended").never();
|
|
12119
|
+
|
|
12120
|
+
assert.throws(function () {
|
|
12121
|
+
// code under test
|
|
12122
|
+
oBinding.fetchOrGetSibling(oNode, -1);
|
|
12123
|
+
}, new Error("Unsupported context: " + oNode));
|
|
12124
|
+
});
|
|
12125
|
+
|
|
12126
|
+
//*********************************************************************************************
|
|
12127
|
+
QUnit.test("fetchOrGetSibling: Unsupported context (transient)", function (assert) {
|
|
12128
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12129
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12130
|
+
// too far :-(
|
|
12131
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12132
|
+
const oNode = {
|
|
12133
|
+
iIndex : "~iIndex~",
|
|
12134
|
+
isDeleted : mustBeMocked,
|
|
12135
|
+
isTransient : mustBeMocked
|
|
12136
|
+
};
|
|
12137
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(false);
|
|
12138
|
+
this.mock(oNode).expects("isTransient").withExactArgs().returns(true);
|
|
12139
|
+
oBinding.aContexts["~iIndex~"] = oNode;
|
|
12140
|
+
this.mock(oBinding).expects("checkSuspended").never();
|
|
12141
|
+
|
|
12142
|
+
assert.throws(function () {
|
|
12143
|
+
// code under test
|
|
12144
|
+
oBinding.fetchOrGetSibling(oNode, -1);
|
|
12145
|
+
}, new Error("Unsupported context: " + oNode));
|
|
12146
|
+
});
|
|
12147
|
+
|
|
12148
|
+
//*********************************************************************************************
|
|
12149
|
+
QUnit.test("fetchOrGetSibling: Unsupported context (index)", function (assert) {
|
|
12150
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12151
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12152
|
+
// too far :-(
|
|
12153
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12154
|
+
const oNode = {
|
|
12155
|
+
iIndex : "~iIndex~",
|
|
12156
|
+
isDeleted : mustBeMocked,
|
|
12157
|
+
isTransient : mustBeMocked
|
|
12158
|
+
};
|
|
12159
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(false);
|
|
12160
|
+
this.mock(oNode).expects("isTransient").withExactArgs().returns(false);
|
|
12161
|
+
oBinding.aContexts["wrong index"] = oNode;
|
|
12162
|
+
this.mock(oBinding).expects("checkSuspended").never();
|
|
12163
|
+
|
|
12164
|
+
assert.throws(function () {
|
|
12165
|
+
// code under test
|
|
12166
|
+
oBinding.fetchOrGetSibling(oNode, -1);
|
|
12167
|
+
}, new Error("Unsupported context: " + oNode));
|
|
12168
|
+
});
|
|
12169
|
+
|
|
12170
|
+
//*********************************************************************************************
|
|
12171
|
+
[{in : undefined, out : +1}, {in : +1, out : +1}, {in : -1, out : -1}].forEach((oOffset, i) => {
|
|
12172
|
+
[{in : -1, out : null}, {in : undefined, out : undefined}].forEach((oResult, j) => {
|
|
12173
|
+
QUnit.test(`fetchOrGetSibling: null/undefined #${i},${j}`, function (assert) {
|
|
12174
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12175
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12176
|
+
// too far :-(
|
|
12177
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12178
|
+
const oNode = {
|
|
12179
|
+
iIndex : "~iIndex~",
|
|
12180
|
+
isDeleted : mustBeMocked,
|
|
12181
|
+
isTransient : mustBeMocked
|
|
12182
|
+
};
|
|
12183
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(false);
|
|
12184
|
+
this.mock(oNode).expects("isTransient").withExactArgs().returns(false);
|
|
12185
|
+
oBinding.aContexts["~iIndex~"] = oNode;
|
|
12186
|
+
const oCheckSuspendedExpectation
|
|
12187
|
+
= this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
12188
|
+
this.mock(oBinding).expects("lockGroup").never();
|
|
12189
|
+
const oCache = {
|
|
12190
|
+
getSiblingIndex : mustBeMocked
|
|
12191
|
+
};
|
|
12192
|
+
oBinding.oCache = oCache;
|
|
12193
|
+
const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
|
|
12194
|
+
.withExactArgs("~iIndex~", oOffset.out).returns(oResult.in);
|
|
12195
|
+
this.mock(oBinding).expects("fetchContexts").never();
|
|
12196
|
+
this.mock(oBinding).expects("requestContexts").never();
|
|
12197
|
+
|
|
12198
|
+
// code under test
|
|
12199
|
+
assert.strictEqual(oBinding.fetchOrGetSibling(oNode, oOffset.in), oResult.out);
|
|
12200
|
+
|
|
12201
|
+
sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
|
|
12202
|
+
});
|
|
12203
|
+
});
|
|
12204
|
+
});
|
|
12205
|
+
|
|
12206
|
+
//*********************************************************************************************
|
|
12207
|
+
[0, 1, 42].forEach((iIndex) => {
|
|
12208
|
+
QUnit.test(`fetchOrGetSibling: no request, index = ${iIndex}`, function (assert) {
|
|
12209
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12210
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12211
|
+
// too far :-(
|
|
12212
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12213
|
+
const oNode = {
|
|
12214
|
+
iIndex : "~iIndex~",
|
|
12215
|
+
isDeleted : mustBeMocked,
|
|
12216
|
+
isTransient : mustBeMocked
|
|
12217
|
+
};
|
|
12218
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(false);
|
|
12219
|
+
this.mock(oNode).expects("isTransient").withExactArgs().returns(false);
|
|
12220
|
+
oBinding.aContexts["~iIndex~"] = oNode;
|
|
12221
|
+
const oCheckSuspendedExpectation
|
|
12222
|
+
= this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
12223
|
+
this.mock(oBinding).expects("lockGroup").never();
|
|
12224
|
+
const oCache = {
|
|
12225
|
+
getSiblingIndex : mustBeMocked
|
|
12226
|
+
};
|
|
12227
|
+
oBinding.oCache = oCache;
|
|
12228
|
+
const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
|
|
12229
|
+
.withExactArgs("~iIndex~", +1).returns(iIndex);
|
|
12230
|
+
this.mock(oBinding).expects("fetchContexts")
|
|
12231
|
+
.withExactArgs(iIndex, 1, 0, sinon.match.same(_GroupLock.$cached))
|
|
12232
|
+
.callsFake(function () {
|
|
12233
|
+
oBinding.aContexts[iIndex] = "~oSiblingContext~";
|
|
12234
|
+
return "n/a";
|
|
12235
|
+
});
|
|
12236
|
+
this.mock(oBinding).expects("requestContexts").never();
|
|
12237
|
+
|
|
12238
|
+
// code under test
|
|
12239
|
+
assert.strictEqual(oBinding.fetchOrGetSibling(oNode), "~oSiblingContext~");
|
|
12240
|
+
|
|
12241
|
+
sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
|
|
12242
|
+
});
|
|
12243
|
+
});
|
|
12244
|
+
|
|
12245
|
+
//*********************************************************************************************
|
|
12246
|
+
[false, true].forEach((bNull) => {
|
|
12247
|
+
QUnit.test(`fetchOrGetSibling: request, null=${bNull}`, async function (assert) {
|
|
12248
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12249
|
+
// Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
|
|
12250
|
+
// too far :-(
|
|
12251
|
+
oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
|
|
12252
|
+
const oNode = {
|
|
12253
|
+
iIndex : "~iIndex~",
|
|
12254
|
+
isDeleted : mustBeMocked,
|
|
12255
|
+
isTransient : mustBeMocked
|
|
12256
|
+
};
|
|
12257
|
+
this.mock(oNode).expects("isDeleted").withExactArgs().returns(false);
|
|
12258
|
+
this.mock(oNode).expects("isTransient").withExactArgs().returns(false);
|
|
12259
|
+
oBinding.aContexts["~iIndex~"] = oNode;
|
|
12260
|
+
const oCheckSuspendedExpectation
|
|
12261
|
+
= this.mock(oBinding).expects("checkSuspended").withExactArgs();
|
|
12262
|
+
this.mock(oBinding).expects("lockGroup").withExactArgs().returns("~oGroupLock~");
|
|
12263
|
+
const oCache = {
|
|
12264
|
+
getSiblingIndex : mustBeMocked,
|
|
12265
|
+
requestSiblingIndex : mustBeMocked
|
|
12266
|
+
};
|
|
12267
|
+
oBinding.oCache = oCache;
|
|
12268
|
+
const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
|
|
12269
|
+
.withExactArgs("~iIndex~", -1).returns(undefined);
|
|
12270
|
+
this.mock(oBinding).expects("fetchContexts").never();
|
|
12271
|
+
this.mock(oCache).expects("requestSiblingIndex")
|
|
12272
|
+
.withExactArgs("~iIndex~", -1, "~oGroupLock~").resolves(bNull ? -1 : 42);
|
|
12273
|
+
this.mock(oBinding).expects("requestContexts").exactly(bNull ? 0 : 1)
|
|
12274
|
+
.withExactArgs(42, 1).resolves(["~oSiblingContext~"]);
|
|
12275
|
+
|
|
12276
|
+
// code under test
|
|
12277
|
+
const oPromise = oBinding.fetchOrGetSibling(oNode, -1, true);
|
|
12278
|
+
|
|
12279
|
+
sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
|
|
12280
|
+
assert.ok(oPromise instanceof Promise);
|
|
12281
|
+
assert.strictEqual(await oPromise, bNull ? null : "~oSiblingContext~");
|
|
12282
|
+
});
|
|
12283
|
+
});
|
|
12284
|
+
|
|
11883
12285
|
//*********************************************************************************************
|
|
11884
12286
|
QUnit.test("setResetViaSideEffects ", function (assert) {
|
|
11885
12287
|
const oBinding = this.bindList("/SalesOrderList");
|
|
@@ -11898,6 +12300,89 @@ sap.ui.define([
|
|
|
11898
12300
|
oBinding.setResetViaSideEffects(true);
|
|
11899
12301
|
assert.strictEqual(oBinding.bResetViaSideEffects, false, "true must not win over false");
|
|
11900
12302
|
});
|
|
12303
|
+
|
|
12304
|
+
//*********************************************************************************************
|
|
12305
|
+
QUnit.test("insertContext: use index", function (assert) {
|
|
12306
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12307
|
+
oBinding.aContexts = [
|
|
12308
|
+
{iIndex : 0, sName : "foo"},
|
|
12309
|
+
{iIndex : 1, sName : "bar"},
|
|
12310
|
+
undefined,
|
|
12311
|
+
{iIndex : 2, sName : "baz"}
|
|
12312
|
+
];
|
|
12313
|
+
oBinding.iMaxLength = 42;
|
|
12314
|
+
|
|
12315
|
+
this.mock(oBinding).expects("_fireChange").twice()
|
|
12316
|
+
.withExactArgs({reason : ChangeReason.Add});
|
|
12317
|
+
|
|
12318
|
+
// code under test
|
|
12319
|
+
oBinding.insertContext({sName : "created0"}, 1);
|
|
12320
|
+
|
|
12321
|
+
assert.strictEqual(oBinding.iMaxLength, 43);
|
|
12322
|
+
assert.deepEqual(oBinding.aContexts, [
|
|
12323
|
+
{iIndex : 0, sName : "foo"},
|
|
12324
|
+
{sName : "created0"},
|
|
12325
|
+
{iIndex : 2, sName : "bar"},
|
|
12326
|
+
undefined,
|
|
12327
|
+
{iIndex : 3, sName : "baz"}
|
|
12328
|
+
]);
|
|
12329
|
+
|
|
12330
|
+
// code under test
|
|
12331
|
+
oBinding.insertContext({sName : "created1"}, 6);
|
|
12332
|
+
|
|
12333
|
+
assert.strictEqual(oBinding.iMaxLength, 44);
|
|
12334
|
+
assert.deepEqual(oBinding.aContexts, [
|
|
12335
|
+
{iIndex : 0, sName : "foo"},
|
|
12336
|
+
{sName : "created0"},
|
|
12337
|
+
{iIndex : 2, sName : "bar"},
|
|
12338
|
+
undefined,
|
|
12339
|
+
{iIndex : 3, sName : "baz"},
|
|
12340
|
+
undefined,
|
|
12341
|
+
{sName : "created1"}
|
|
12342
|
+
]);
|
|
12343
|
+
});
|
|
12344
|
+
|
|
12345
|
+
//*********************************************************************************************
|
|
12346
|
+
[false, true].forEach(function (bAtEnd, i) {
|
|
12347
|
+
QUnit.test("insertContext: add to creation area #" + i, function (assert) {
|
|
12348
|
+
const oBinding = this.bindList("/EMPLOYEES");
|
|
12349
|
+
oBinding.aContexts = [
|
|
12350
|
+
{iIndex : -1, sName : "created0"},
|
|
12351
|
+
{iIndex : 0, sName : "foo"},
|
|
12352
|
+
{iIndex : 1, sName : "bar"}
|
|
12353
|
+
];
|
|
12354
|
+
oBinding.bFirstCreateAtEnd = bAtEnd;
|
|
12355
|
+
oBinding.iMaxLength = 23;
|
|
12356
|
+
|
|
12357
|
+
this.mock(oBinding).expects("_fireChange").twice()
|
|
12358
|
+
.withExactArgs({reason : ChangeReason.Add});
|
|
12359
|
+
|
|
12360
|
+
// code under test: insert at beginning of aContexts
|
|
12361
|
+
oBinding.insertContext({iIndex : -2, sName : "created1"}, /*iIndex*/undefined, bAtEnd);
|
|
12362
|
+
|
|
12363
|
+
assert.strictEqual(oBinding.iMaxLength, 23, "unchanged");
|
|
12364
|
+
assert.deepEqual(oBinding.aContexts, [
|
|
12365
|
+
{iIndex : -2, sName : "created1"},
|
|
12366
|
+
{iIndex : -1, sName : "created0"},
|
|
12367
|
+
{iIndex : 0, sName : "foo"},
|
|
12368
|
+
{iIndex : 1, sName : "bar"}
|
|
12369
|
+
]);
|
|
12370
|
+
|
|
12371
|
+
oBinding.iCreatedContexts = 3; // creation area increases to a third item
|
|
12372
|
+
|
|
12373
|
+
// code under test: insert at end of creation area; adjusting indices
|
|
12374
|
+
oBinding.insertContext({iIndex : -3, sName : "created2"}, /*iIndex*/undefined, !bAtEnd);
|
|
12375
|
+
|
|
12376
|
+
assert.strictEqual(oBinding.iMaxLength, 23, "unchanged");
|
|
12377
|
+
assert.deepEqual(oBinding.aContexts, [
|
|
12378
|
+
{iIndex : -3, sName : "created1"},
|
|
12379
|
+
{iIndex : -2, sName : "created0"},
|
|
12380
|
+
{iIndex : -1, sName : "created2"},
|
|
12381
|
+
{iIndex : 0, sName : "foo"},
|
|
12382
|
+
{iIndex : 1, sName : "bar"}
|
|
12383
|
+
]);
|
|
12384
|
+
});
|
|
12385
|
+
});
|
|
11901
12386
|
});
|
|
11902
12387
|
|
|
11903
12388
|
//TODO integration: 2 entity sets with same $expand, but different $select
|