@openui5/sap.ui.core 1.119.1 → 1.120.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRDPARTY.txt +6 -6
- package/package.json +1 -1
- package/src/jquery.sap.global.js +40 -111
- package/src/jquery.sap.properties.js +7 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +5 -3
- package/src/jquery.sap.storage.js +6 -3
- package/src/sap/base/Event.js +32 -78
- package/src/sap/base/Eventing.js +114 -271
- package/src/sap/base/Log.js +21 -1
- package/src/sap/base/config.js +14 -9
- package/src/sap/base/i18n/Formatting.js +400 -256
- package/src/sap/base/i18n/LanguageTag.js +64 -66
- package/src/sap/base/i18n/Localization.js +125 -87
- package/src/sap/base/i18n/ResourceBundle.js +1 -1
- package/src/sap/base/i18n/date/CalendarType.js +2 -2
- package/src/sap/base/i18n/date/CalendarWeekNumbering.js +2 -2
- package/src/sap/base/i18n/date/TimezoneUtils.js +43 -6
- package/src/sap/base/util/LoaderExtensions.js +8 -2
- package/src/sap/base/util/mixedFetch.js +1 -0
- package/src/sap/base/util/resolveReference.js +31 -13
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +1 -0
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +6 -7
- package/src/sap/ui/base/BindingInfo.js +3 -3
- package/src/sap/ui/base/BindingParser.js +5 -2
- package/src/sap/ui/base/DataType.js +57 -1
- package/src/sap/ui/base/DesignTime.js +69 -0
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +25 -4
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +102 -85
- package/src/sap/ui/base/ManagedObjectMetadata.js +53 -31
- package/src/sap/ui/base/ManagedObjectObserver.js +1 -0
- package/src/sap/ui/base/Metadata.js +3 -3
- package/src/sap/ui/base/Object.js +19 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/AnimationMode.js +2 -2
- package/src/sap/ui/core/AppCacheBuster.js +30 -18
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/CalendarType.js +6 -0
- package/src/sap/ui/core/Component.js +175 -86
- package/src/sap/ui/core/ComponentContainer.js +6 -5
- package/src/sap/ui/core/ComponentMetadata.js +3 -4
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +395 -709
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/ControlBehavior.js +37 -28
- package/src/sap/ui/core/Core.js +338 -216
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +3 -1
- package/src/sap/ui/core/Element.js +24 -10
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +3 -2
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +3 -3
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IndicationColorSupport.js +13 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +2 -3
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +17 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +8 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/Lib.js +253 -57
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +118 -32
- package/src/sap/ui/core/Manifest.js +4 -2
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Placeholder.js +18 -0
- package/src/sap/ui/core/Popup.js +5 -0
- package/src/sap/ui/core/RenderManager.js +21 -17
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/Rendering.js +51 -47
- package/src/sap/ui/core/ResizeHandler.js +2 -2
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Shortcut.js +5 -3
- package/src/sap/ui/core/Supportability.js +146 -0
- package/src/sap/ui/core/Theming.js +130 -88
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +4 -3
- package/src/sap/ui/core/UIArea.js +5 -4
- package/src/sap/ui/core/UIComponent.js +38 -12
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +3 -3
- package/src/sap/ui/core/_IconRegistry.js +13 -6
- package/src/sap/ui/core/cldr/ar.json +143 -137
- package/src/sap/ui/core/cldr/ar_EG.json +143 -137
- package/src/sap/ui/core/cldr/ar_SA.json +143 -137
- package/src/sap/ui/core/cldr/bg.json +423 -423
- package/src/sap/ui/core/cldr/ca.json +541 -494
- package/src/sap/ui/core/cldr/cs.json +475 -364
- package/src/sap/ui/core/cldr/cy.json +656 -477
- package/src/sap/ui/core/cldr/da.json +334 -275
- package/src/sap/ui/core/cldr/de.json +388 -291
- package/src/sap/ui/core/cldr/de_AT.json +388 -291
- package/src/sap/ui/core/cldr/de_CH.json +394 -297
- package/src/sap/ui/core/cldr/el.json +169 -166
- package/src/sap/ui/core/cldr/el_CY.json +169 -166
- package/src/sap/ui/core/cldr/en.json +558 -521
- package/src/sap/ui/core/cldr/en_AU.json +558 -520
- package/src/sap/ui/core/cldr/en_GB.json +476 -439
- package/src/sap/ui/core/cldr/en_HK.json +520 -482
- package/src/sap/ui/core/cldr/en_IE.json +486 -448
- package/src/sap/ui/core/cldr/en_IN.json +466 -428
- package/src/sap/ui/core/cldr/en_NZ.json +506 -468
- package/src/sap/ui/core/cldr/en_PG.json +506 -468
- package/src/sap/ui/core/cldr/en_SG.json +506 -468
- package/src/sap/ui/core/cldr/en_ZA.json +486 -448
- package/src/sap/ui/core/cldr/es.json +473 -468
- package/src/sap/ui/core/cldr/es_AR.json +445 -440
- package/src/sap/ui/core/cldr/es_BO.json +479 -474
- package/src/sap/ui/core/cldr/es_CL.json +469 -464
- package/src/sap/ui/core/cldr/es_CO.json +387 -381
- package/src/sap/ui/core/cldr/es_MX.json +502 -497
- package/src/sap/ui/core/cldr/es_PE.json +455 -450
- package/src/sap/ui/core/cldr/es_UY.json +479 -474
- package/src/sap/ui/core/cldr/es_VE.json +499 -494
- package/src/sap/ui/core/cldr/et.json +378 -320
- package/src/sap/ui/core/cldr/fa.json +104 -104
- package/src/sap/ui/core/cldr/fi.json +401 -315
- package/src/sap/ui/core/cldr/fr.json +391 -385
- package/src/sap/ui/core/cldr/fr_BE.json +391 -385
- package/src/sap/ui/core/cldr/fr_CA.json +499 -493
- package/src/sap/ui/core/cldr/fr_CH.json +334 -328
- package/src/sap/ui/core/cldr/fr_LU.json +391 -385
- package/src/sap/ui/core/cldr/he.json +291 -159
- package/src/sap/ui/core/cldr/hi.json +157 -128
- package/src/sap/ui/core/cldr/hr.json +514 -461
- package/src/sap/ui/core/cldr/hu.json +287 -257
- package/src/sap/ui/core/cldr/id.json +463 -416
- package/src/sap/ui/core/cldr/it.json +468 -413
- package/src/sap/ui/core/cldr/it_CH.json +468 -413
- package/src/sap/ui/core/cldr/ja.json +98 -61
- package/src/sap/ui/core/cldr/kk.json +631 -571
- package/src/sap/ui/core/cldr/ko.json +79 -71
- package/src/sap/ui/core/cldr/lt.json +361 -270
- package/src/sap/ui/core/cldr/lv.json +234 -242
- package/src/sap/ui/core/cldr/ms.json +463 -408
- package/src/sap/ui/core/cldr/nb.json +176 -143
- package/src/sap/ui/core/cldr/nl.json +463 -393
- package/src/sap/ui/core/cldr/nl_BE.json +463 -393
- package/src/sap/ui/core/cldr/pl.json +633 -344
- package/src/sap/ui/core/cldr/pt.json +447 -336
- package/src/sap/ui/core/cldr/pt_PT.json +488 -449
- package/src/sap/ui/core/cldr/ro.json +477 -383
- package/src/sap/ui/core/cldr/ru.json +367 -332
- package/src/sap/ui/core/cldr/ru_UA.json +361 -326
- package/src/sap/ui/core/cldr/sk.json +502 -537
- package/src/sap/ui/core/cldr/sl.json +168 -161
- package/src/sap/ui/core/cldr/sr.json +276 -225
- package/src/sap/ui/core/cldr/sr_Latn.json +972 -907
- package/src/sap/ui/core/cldr/sv.json +420 -346
- package/src/sap/ui/core/cldr/th.json +117 -94
- package/src/sap/ui/core/cldr/tr.json +413 -359
- package/src/sap/ui/core/cldr/uk.json +395 -368
- package/src/sap/ui/core/cldr/vi.json +392 -379
- package/src/sap/ui/core/cldr/zh_CN.json +91 -33
- package/src/sap/ui/core/cldr/zh_HK.json +90 -32
- package/src/sap/ui/core/cldr/zh_SG.json +90 -32
- package/src/sap/ui/core/cldr/zh_TW.json +75 -51
- package/src/sap/ui/core/date/CalendarWeekNumbering.js +6 -0
- package/src/sap/ui/core/date/Islamic.js +4 -4
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/date/_Calendars.js +5 -2
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragAndDrop.js +3 -2
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +33 -21
- package/src/sap/ui/core/format/NumberFormat.js +3 -2
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +2 -2
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +128 -8
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +2 -2
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/message/MessageType.js +2 -1
- package/src/sap/ui/core/messagebundle.properties +24 -0
- package/src/sap/ui/core/messagebundle_ar.properties +15 -3
- package/src/sap/ui/core/messagebundle_bg.properties +14 -2
- package/src/sap/ui/core/messagebundle_ca.properties +13 -1
- package/src/sap/ui/core/messagebundle_cs.properties +15 -3
- package/src/sap/ui/core/messagebundle_cy.properties +16 -4
- package/src/sap/ui/core/messagebundle_da.properties +15 -3
- package/src/sap/ui/core/messagebundle_de.properties +15 -3
- package/src/sap/ui/core/messagebundle_el.properties +16 -4
- package/src/sap/ui/core/messagebundle_en.properties +12 -0
- package/src/sap/ui/core/messagebundle_en_GB.properties +16 -4
- package/src/sap/ui/core/messagebundle_es.properties +15 -3
- package/src/sap/ui/core/messagebundle_es_MX.properties +15 -3
- package/src/sap/ui/core/messagebundle_et.properties +15 -3
- package/src/sap/ui/core/messagebundle_fi.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr.properties +15 -3
- package/src/sap/ui/core/messagebundle_fr_CA.properties +14 -2
- package/src/sap/ui/core/messagebundle_hi.properties +16 -4
- package/src/sap/ui/core/messagebundle_hr.properties +14 -2
- package/src/sap/ui/core/messagebundle_hu.properties +16 -4
- package/src/sap/ui/core/messagebundle_id.properties +15 -3
- package/src/sap/ui/core/messagebundle_it.properties +17 -5
- package/src/sap/ui/core/messagebundle_iw.properties +15 -3
- package/src/sap/ui/core/messagebundle_ja.properties +25 -13
- package/src/sap/ui/core/messagebundle_kk.properties +15 -3
- package/src/sap/ui/core/messagebundle_ko.properties +14 -2
- package/src/sap/ui/core/messagebundle_lt.properties +15 -3
- package/src/sap/ui/core/messagebundle_lv.properties +15 -3
- package/src/sap/ui/core/messagebundle_mk.properties +352 -0
- package/src/sap/ui/core/messagebundle_ms.properties +15 -3
- package/src/sap/ui/core/messagebundle_nl.properties +15 -3
- package/src/sap/ui/core/messagebundle_no.properties +14 -2
- package/src/sap/ui/core/messagebundle_pl.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt.properties +15 -3
- package/src/sap/ui/core/messagebundle_pt_PT.properties +14 -2
- package/src/sap/ui/core/messagebundle_ro.properties +15 -3
- package/src/sap/ui/core/messagebundle_ru.properties +15 -3
- package/src/sap/ui/core/messagebundle_sh.properties +43 -31
- package/src/sap/ui/core/messagebundle_sk.properties +16 -4
- package/src/sap/ui/core/messagebundle_sl.properties +15 -3
- package/src/sap/ui/core/messagebundle_sv.properties +22 -10
- package/src/sap/ui/core/messagebundle_th.properties +15 -3
- package/src/sap/ui/core/messagebundle_tr.properties +15 -3
- package/src/sap/ui/core/messagebundle_uk.properties +18 -6
- package/src/sap/ui/core/messagebundle_vi.properties +18 -6
- package/src/sap/ui/core/messagebundle_zh_CN.properties +15 -3
- package/src/sap/ui/core/messagebundle_zh_TW.properties +15 -3
- package/src/sap/ui/core/mvc/Controller.js +22 -16
- package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
- package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -15
- package/src/sap/ui/core/mvc/HTMLView.js +2 -2
- package/src/sap/ui/core/mvc/JSONView.js +4 -1
- package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -0
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/OverrideExecution.js +4 -4
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +25 -15
- package/src/sap/ui/core/mvc/ViewType.js +2 -0
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -1
- package/src/sap/ui/core/plugin/LessSupport.js +3 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/routing/Router.js +2 -4
- package/src/sap/ui/core/routing/Target.js +1 -3
- package/src/sap/ui/core/routing/Targets.js +2 -3
- package/src/sap/ui/core/routing/Views.js +2 -3
- package/src/sap/ui/core/routing/async/Target.js +1 -1
- package/src/sap/ui/core/rules/Config.support.js +11 -17
- package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
- package/src/sap/ui/core/search/SearchProvider.js +2 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Hotkeys.js +5 -3
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -3
- package/src/sap/ui/core/support/Support.js +3 -5
- package/src/sap/ui/core/support/ToolsAPI.js +15 -11
- package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
- package/src/sap/ui/core/support/plugins/Interaction.js +4 -4
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +7 -5
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -1
- package/src/sap/ui/core/syncStyleClass.js +2 -2
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +9 -9
- package/src/sap/ui/core/theming/Parameters.js +18 -19
- package/src/sap/ui/core/theming/ThemeManager.js +23 -4
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/XMLPreprocessor.js +3 -0
- package/src/sap/ui/core/util/_LocalizationHelper.js +122 -0
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +4 -4
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/webc/WebComponent.js +1 -1
- package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +29 -7
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientListBinding.js +9 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/ClientTreeBinding.js +9 -4
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +2 -2
- package/src/sap/ui/model/Filter.js +39 -1
- package/src/sap/ui/model/FilterProcessor.js +15 -5
- package/src/sap/ui/model/ListBinding.js +5 -0
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +14 -8
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/TreeBinding.js +3 -0
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/analytics/AnalyticalBinding.js +3 -1
- package/src/sap/ui/model/json/JSONListBinding.js +3 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/json/JSONTreeBinding.js +3 -2
- package/src/sap/ui/model/message/MessageListBinding.js +3 -0
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +9 -3
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataListBinding.js +8 -2
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +9 -5
- package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -2
- package/src/sap/ui/model/odata/ODataTreeBinding.js +2 -0
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +9 -14
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +40 -15
- package/src/sap/ui/model/odata/v2/ODataModel.js +26 -62
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +38 -4
- package/src/sap/ui/model/odata/v4/Context.js +81 -7
- package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +217 -75
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
- package/src/sap/ui/model/odata/v4/ODataModel.js +6 -6
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +406 -199
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +12 -7
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -30
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -4
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +6 -6
- package/src/sap/ui/model/resource/ResourceModel.js +5 -6
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLListBinding.js +3 -0
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/model/xml/XMLTreeBinding.js +3 -0
- package/src/sap/ui/performance/BeaconRequest.js +2 -2
- package/src/sap/ui/performance/trace/Interaction.js +20 -16
- package/src/sap/ui/qunit/QUnitUtils.js +64 -45
- package/src/sap/ui/qunit/qunit-coverage.js +6 -0
- package/src/sap/ui/qunit/utils/ControlIterator.js +31 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/security/Security.js +128 -0
- package/src/sap/ui/test/BlanketReporter.js +2 -3
- package/src/sap/ui/test/BlanketReporterUI.view.xml +1 -1
- package/src/sap/ui/test/BranchTracking.js +2 -3
- package/src/sap/ui/test/ModuleTracking.js +48 -20
- package/src/sap/ui/test/OpaExtension.js +3 -3
- package/src/sap/ui/test/OpaPlugin.js +16 -6
- package/src/sap/ui/test/TestUtils.js +7 -4
- package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
- package/src/sap/ui/test/_ControlFinder.js +3 -2
- package/src/sap/ui/test/_LogCollector.js +1 -0
- package/src/sap/ui/test/_UsageReport.js +115 -114
- package/src/sap/ui/test/actions/EnterText.js +24 -2
- package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -0
- package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -2
- package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
- package/src/sap/ui/test/generic/GenericTestCollection.js +5 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/Utils.js +1 -1
- package/src/sap/ui/test/matchers/LabelFor.js +2 -12
- package/src/sap/ui/test/matchers/Matcher.js +1 -1
- package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -0
- package/src/sap/ui/test/selectors/_Selector.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/ui5loader-autoconfig.js +84 -11
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/localService/mockserver.js +3 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/ChartAnnotation.fragment.xml +7 -7
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.view.xml +12 -13
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Facets.fragment.xml +4 -4
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Field.fragment.xml +8 -8
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/FormFacet.fragment.xml +3 -5
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/LabeledField.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Table.fragment.xml +10 -10
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/TableFacet.fragment.xml +3 -3
- package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/HeaderInfo.fragment.xml +1 -1
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Field.fragment.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Template.view.xml +19 -21
- package/test/sap/ui/core/demokit/sample/ViewTemplate/types/TemplateV4.view.xml +2 -2
- package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -3
- package/test/sap/ui/core/demokit/sample/common/pages/Any.js +7 -8
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
- package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
- package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +15 -6
- package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +3 -4
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +39 -16
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +18 -21
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +509 -395
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +586 -422
- package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -1
- package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +7 -7
- package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +0 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +34 -9
- package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +156 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -2
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Facets.fragment.xml +22 -23
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/FormattedText.fragment.xml +2 -3
- package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Main.view.xml +5 -5
- package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.controller.js +2 -3
- package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
- package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
- package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
- package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
- package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
- package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
- package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
- package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
- package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
- package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
- package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
- package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
- package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
- package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
- package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
- package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
- package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
- package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +2 -2
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
- package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +2 -2
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +2 -3
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +2 -3
- package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
- package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +18 -0
- package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +4 -3
- package/test/sap/ui/core/qunit/Core.qunit.js +5 -14
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Core_libraryPreloadFiles_unavoidablyUsingEval.qunit.js +6 -6
- package/test/sap/ui/core/qunit/Core_unavoidablyUsingEval.qunit.js +31 -30
- package/test/sap/ui/core/qunit/DataState.qunit.js +7 -4
- package/test/sap/ui/core/qunit/DuplicateIds.qunit.js +3 -0
- package/test/sap/ui/core/qunit/DuplicateIds_noError.qunit.js +4 -0
- package/test/sap/ui/core/qunit/Element_metadata_renderer.qunit.js +6 -0
- package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +144 -85
- package/test/sap/ui/core/qunit/HTML.qunit.js +87 -84
- package/test/sap/ui/core/qunit/InvisibleText.qunit.js +22 -1
- package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +4 -4
- package/test/sap/ui/core/qunit/Lib.qunit.js +64 -1
- package/test/sap/ui/core/qunit/ListBinding.qunit.js +14 -1
- package/test/sap/ui/core/qunit/ManagedObject.qunit.js +90 -4
- package/test/sap/ui/core/qunit/ManagedObjectMetadata.qunit.js +41 -40
- package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +2 -1
- package/test/sap/ui/core/qunit/{ManagedObject_noBoot.qunit.js → ManagedObject_BindingParser.qunit.js} +10 -9
- package/test/sap/ui/core/qunit/Object.qunit.js +36 -0
- package/test/sap/ui/core/qunit/RenderManager.qunit.js +86 -94
- package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +11 -97
- package/test/sap/ui/core/qunit/StaticBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/UIArea.qunit.js +34 -35
- package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/DesignMode_controllerDeactivated.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/DesignMode_suppressedDeactivation.qunit.js +5 -6
- package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/app/_createDesignModeTests_legacyAPIs.qunit.js +8 -10
- package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +2 -2
- package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +49 -30
- package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +123 -10
- package/test/sap/ui/core/qunit/base/util/resolveReference.qunit.js +9 -0
- package/test/sap/ui/core/qunit/base/util/testdata/MyModule.js +5 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.beforeBootstrap.qunit.js +4 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.html +1 -0
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +9 -10
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload_legacyAPIs.qunit.js +0 -2
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinBody.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinHead.qunit.html +2 -1
- package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +122 -266
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.js +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.js +16 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.html +22 -0
- package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.js +14 -0
- package/test/sap/ui/core/qunit/bootstrap/ControlBehavior.qunit.js +110 -0
- package/test/sap/ui/core/qunit/bootstrap/PreloadCfg.qunit.js +4 -3
- package/test/sap/ui/core/qunit/bootstrap/ResourceRoot_ResourcesURL_Standard.qunit.html +1 -1
- package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.beforeBootstrap.qunit.js +2 -3
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +39 -34
- package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted_legacyAPIs.qunit.js +5 -1
- package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +51 -15
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.html +23 -0
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.js +1 -1
- package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery.sap.stubs.qunit.js +16 -20
- package/test/sap/ui/core/qunit/compat_legacyAPIs/testsuite.compat.qunit.js +1 -4
- package/test/sap/ui/core/qunit/component/Component.qunit.js +100 -7
- package/test/sap/ui/core/qunit/component/Models.qunit.js +3 -1
- package/test/sap/ui/core/qunit/component/Preloading.qunit.js +8 -12
- package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +8 -2
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +34 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +23 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Main.view.xml +8 -0
- package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +28 -0
- package/test/sap/ui/core/qunit/date/_Calendars.qunit.js +52 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaksUsingIterator.qunit.js +3 -4
- package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +18 -0
- package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +15 -0
- package/test/sap/ui/core/qunit/generic/testsuite.generic.qunit.js +21 -0
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.js +2 -3
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +16 -0
- package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.js +1 -1
- package/test/sap/ui/core/qunit/gherkin/testsuite.gherkin.qunit.js +3 -2
- package/test/sap/ui/core/qunit/i18n/Buddhist.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +217 -114
- package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +7 -4
- package/test/sap/ui/core/qunit/i18n/Japanese.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +341 -7
- package/test/sap/ui/core/qunit/i18n/Persian.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +3 -0
- package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +10 -1
- package/test/sap/ui/core/qunit/i18n/helper/_timezones.js +17 -11
- package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
- package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +5 -1
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +2 -2
- package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
- package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +1 -2
- package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -1
- package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +2 -1
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.html +24 -0
- package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +12 -6
- package/test/sap/ui/core/qunit/jquery.sap.global-config_beforeBootstrap.qunit.js +1 -1
- package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +30 -0
- package/test/sap/ui/core/qunit/loader/exposeAsAMDLoader.qunit.html +1 -0
- package/test/sap/ui/core/qunit/model/Binding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +5 -2
- package/test/sap/ui/core/qunit/model/ClientTreeBindingAdapter.qunit.js +6 -0
- package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Context.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Filter.qunit.js +49 -0
- package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +68 -1
- package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +23 -5
- package/test/sap/ui/core/qunit/model/Model.qunit.js +46 -2
- package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/Sorter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +43 -3
- package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +107 -93
- package/test/sap/ui/core/qunit/mvc/View.qunit.js +3 -0
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +17 -14
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +23 -12
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +29 -82
- package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML_unavoidablySync.qunit.js +123 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -0
- package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +16 -0
- package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +408 -419
- package/test/sap/ui/core/qunit/odata/AnnotationHelper.qunit.js +6 -4
- package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +16 -0
- package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +8 -1
- package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
- package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
- package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -1
- package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/type/DateTimeWithTimezone.qunit.js +6 -6
- package/test/sap/ui/core/qunit/odata/type/Time.qunit.js +3 -4
- package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +52 -29
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +952 -292
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +8 -15
- package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +6 -7
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +215 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +211 -20
- package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
- package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +3 -2
- package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +69 -2
- package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
- package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +601 -99
- package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1896 -407
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +7 -5
- package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +909 -422
- package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +21 -6
- package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +104 -33
- package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +8 -0
- package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +4 -4
- package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +9 -9
- package/test/sap/ui/core/qunit/odata/v4/lib/_V2MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/odata/v4/lib/_V4MetadataConverter.qunit.js +3 -3
- package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +16 -0
- package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +17 -9
- package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +66 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +3 -3
- package/test/sap/ui/core/qunit/opa/autowaiter/_timeoutWaiter.js +11 -0
- package/test/sap/ui/core/qunit/opa/fixture/miniUI5Site.js +14 -8
- package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.js +18 -12
- package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
- package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
- package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
- package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +1 -0
- package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +5 -4
- package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +20 -18
- package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +1 -4
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/Component.js +2 -25
- package/test/sap/ui/core/qunit/routing/fixture/routingConfig/manifest.json +28 -0
- package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +1 -2
- package/test/sap/ui/core/qunit/testdata/libraries/scenario11/lib1/library.js +11 -0
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library-preload.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library.js +3 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library-preload.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library.js +2 -1
- package/test/sap/ui/core/qunit/testdata/libraries/terminologies/integration/lib/library-preload.js +1 -1
- package/test/sap/ui/core/qunit/testdata/shortcutHints/Component.js +9 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.controller.js +8 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.view.xml +16 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/lib/MyControl.js +27 -0
- package/test/sap/ui/core/qunit/testdata/shortcutHints/manifest.json +26 -0
- package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/library.js +4 -5
- package/test/sap/ui/core/qunit/testdata/uilib-failing-css-import/library.js +5 -6
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.controller.js +2 -1
- package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.view.xml +18 -1
- package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +3 -0
- package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +0 -4
- package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +6 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.js +4 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.modular.core.qunit.js +1 -1
- package/test/sap/ui/core/qunit/testsuites/testsuite.security.qunit.js +3 -9
- package/test/sap/ui/core/qunit/types/DataType.qunit.js +14 -3
- package/test/sap/ui/core/qunit/types/Date.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +391 -147
- package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +32 -29
- package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +7 -4
- package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +5 -1
- package/test/sap/ui/core/qunit/types/ListFormat.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +5 -4
- package/test/sap/ui/core/qunit/types/NumberFormatCurrenciesTrailing.qunit.js +4 -3
- package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +3 -0
- package/test/sap/ui/core/qunit/types/TimezoneUtil.qunit.js +23 -0
- package/test/sap/ui/core/qunit/types/Types.qunit.js +44 -10
- package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +3 -0
- package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
- package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +592 -83
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-allowlist.js +7 -0
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-frameOptions.js +7 -0
- package/test/sap/ui/core/qunit/{bootstrap/CfgFromGlobalObject.qunit.html → util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.html} +7 -11
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.html +26 -0
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.js +3 -4
- package/test/sap/ui/core/qunit/{bootstrap/CfgDefaults.qunit.html → util/jQuery.sap.FrameOptions-meta-tag.qunit.html} +5 -8
- package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag.qunit.js +3 -4
- package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +10 -10
- package/test/sap/ui/core/qunit/util/jquery.sap.logger.qunit.html +18 -0
- package/test/sap/ui/core/qunit/util/jquery.sap.resources.qunit.js +1 -1
- package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +1 -3
- package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +3 -0
- package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +3 -0
- package/test/sap/ui/core/relnotes/changes-1.119.json +1 -12
- package/test/sap/ui/core/relnotes/changes-1.120.json +442 -0
- package/test/sap/ui/core/terminologies/App.controller.js +2 -3
- package/test/sap/ui/core/terminologies/main.js +2 -3
- package/test/sap/ui/test/qunit/TestUtils.qunit.js +3 -3
- package/src/sap/ui/core/ConfigTest.js +0 -17
- package/src/sap/ui/core/_ConfigurationProvider.js +0 -187
- package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +0 -57
- package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +0 -71
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.html +0 -29
- package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.beforeBootstrap.qunit.js +0 -20
- package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +0 -40
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.html +0 -42
- package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +0 -49
- package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +0 -96
- package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-meta-tag.js +0 -10
- package/test/sap/ui/core/samples/mvc/JSONView.html +0 -65
|
@@ -386,6 +386,7 @@ sap.ui.define([
|
|
|
386
386
|
for (j = aChildNodes.length - 1; j >= 0; j -= 1) {
|
|
387
387
|
oChildNode = aChildNodes[j];
|
|
388
388
|
if (oChildNode.nodeType === Node.ELEMENT_NODE
|
|
389
|
+
&& oChildNode.localName !== "AnalyticalColumn"
|
|
389
390
|
&& oChildNode.localName !== "Column"
|
|
390
391
|
&& oChildNode.localName !== "rowMode") {
|
|
391
392
|
oColumn = document.createElementNS("sap.ui.table", "Column");
|
|
@@ -399,6 +400,7 @@ sap.ui.define([
|
|
|
399
400
|
}
|
|
400
401
|
}
|
|
401
402
|
|
|
403
|
+
convertElements(oDocument.getElementsByTagNameNS("sap.ui.table", "AnalyticalTable"));
|
|
402
404
|
convertElements(oDocument.getElementsByTagNameNS("sap.ui.table", "Table"));
|
|
403
405
|
convertElements(oDocument.getElementsByTagNameNS("sap.ui.table", "TreeTable"));
|
|
404
406
|
}
|
|
@@ -517,9 +519,6 @@ sap.ui.define([
|
|
|
517
519
|
this.mChanges = {};
|
|
518
520
|
// counter for OData messages created during a test
|
|
519
521
|
this.iODataMessageCount = 0;
|
|
520
|
-
// {map<string, true>}
|
|
521
|
-
// If an ID is in this.mIgnoredChanges, change events with null are ignored
|
|
522
|
-
this.mIgnoredChanges = {};
|
|
523
522
|
// {map<string, string[][]>}
|
|
524
523
|
// this.mListChanges["id"][i] is a list of expected changes for the property "text" of
|
|
525
524
|
// the control with ID "id" in row i
|
|
@@ -667,9 +666,7 @@ sap.ui.define([
|
|
|
667
666
|
sVisibleId = iRow === undefined ? sControlId : sControlId + "[" + iRow + "]";
|
|
668
667
|
|
|
669
668
|
if (!aExpectedValues || !aExpectedValues.length) {
|
|
670
|
-
|
|
671
|
-
assert.ok(false, sVisibleId + ": " + JSON.stringify(sValue) + " (unexpected)");
|
|
672
|
-
}
|
|
669
|
+
assert.ok(false, sVisibleId + ": " + JSON.stringify(sValue) + " (unexpected)");
|
|
673
670
|
} else {
|
|
674
671
|
sExpectedValue = aExpectedValues.shift();
|
|
675
672
|
// Note: avoid bad performance of assert.strictEqual(), e.g. DOM manipulation
|
|
@@ -779,6 +776,8 @@ sap.ui.define([
|
|
|
779
776
|
* @param {object} oHandler The request handler object
|
|
780
777
|
* @param {object} oHttpClient The HttpClient object
|
|
781
778
|
* @param {object} oMetadata The metadata object
|
|
779
|
+
* @returns {object}
|
|
780
|
+
* An object with a property <code>abort</code>, containing a function to abort the request
|
|
782
781
|
*/
|
|
783
782
|
function checkRequest(oRequest, fnSuccess, fnError, oHandler, oHttpClient, oMetadata) {
|
|
784
783
|
if (oRequest.requestUri.includes("$batch")) {
|
|
@@ -1113,7 +1112,7 @@ sap.ui.define([
|
|
|
1113
1112
|
// esp. for the table.Table this is essential.
|
|
1114
1113
|
that.oView.placeAt("qunit-fixture");
|
|
1115
1114
|
|
|
1116
|
-
return that.waitForChanges(assert);
|
|
1115
|
+
return that.waitForChanges(assert, "create view");
|
|
1117
1116
|
});
|
|
1118
1117
|
},
|
|
1119
1118
|
|
|
@@ -1486,19 +1485,6 @@ sap.ui.define([
|
|
|
1486
1485
|
return this;
|
|
1487
1486
|
},
|
|
1488
1487
|
|
|
1489
|
-
/**
|
|
1490
|
-
* Allows that the property "text" of the control with the given ID is set to undefined or
|
|
1491
|
-
* null. This may happen when bindings are initialized before the model value is available.
|
|
1492
|
-
*
|
|
1493
|
-
* @param {string} sControlId The control ID
|
|
1494
|
-
* @returns {object} The test instance for chaining
|
|
1495
|
-
*/
|
|
1496
|
-
ignoreNullChanges : function (sControlId) {
|
|
1497
|
-
this.mIgnoredChanges[sControlId] = true;
|
|
1498
|
-
|
|
1499
|
-
return this;
|
|
1500
|
-
},
|
|
1501
|
-
|
|
1502
1488
|
/**
|
|
1503
1489
|
* Observes and checks value changes for a control. In case the test uses {#expectChange},
|
|
1504
1490
|
* checks the model internal value by attaching a formatter; if the test uses
|
|
@@ -1697,15 +1683,17 @@ sap.ui.define([
|
|
|
1697
1683
|
* states.
|
|
1698
1684
|
*
|
|
1699
1685
|
* @param {object} assert The QUnit assert object
|
|
1700
|
-
* @param {
|
|
1686
|
+
* @param {string} [sTitle] Title for this section of a test
|
|
1687
|
+
* @param {number} [iWaitTimeout=3000] The timeout time in milliseconds
|
|
1701
1688
|
* @returns {Promise} A promise that is resolved when all requests have been responded,
|
|
1702
1689
|
* all expected values for controls have been set, all expected messages and all value
|
|
1703
1690
|
* states have been checked
|
|
1704
1691
|
*/
|
|
1705
|
-
waitForChanges : function (assert,
|
|
1692
|
+
waitForChanges : function (assert, sTitle, iWaitTimeout) {
|
|
1706
1693
|
var oPromise,
|
|
1707
1694
|
that = this;
|
|
1708
1695
|
|
|
1696
|
+
iWaitTimeout = iWaitTimeout || 3000;
|
|
1709
1697
|
oPromise = new SyncPromise(function (resolve) {
|
|
1710
1698
|
that.resolve = resolve;
|
|
1711
1699
|
// After three seconds everything should have run through
|
|
@@ -1713,11 +1701,11 @@ sap.ui.define([
|
|
|
1713
1701
|
setTimeout(function () {
|
|
1714
1702
|
if (oPromise.isPending()) {
|
|
1715
1703
|
assert.ok(false, "Timeout in waitForChanges");
|
|
1716
|
-
resolve();
|
|
1704
|
+
resolve(true);
|
|
1717
1705
|
}
|
|
1718
|
-
},
|
|
1706
|
+
}, iWaitTimeout);
|
|
1719
1707
|
that.checkFinish(assert);
|
|
1720
|
-
}).then(function () {
|
|
1708
|
+
}).then(function (bTimeout) {
|
|
1721
1709
|
var sControlId, aExpectedValuesPerRow, i, j;
|
|
1722
1710
|
|
|
1723
1711
|
// Report missing requests
|
|
@@ -1743,8 +1731,8 @@ sap.ui.define([
|
|
|
1743
1731
|
}
|
|
1744
1732
|
}
|
|
1745
1733
|
that.checkMessages(assert);
|
|
1746
|
-
return that.aValueStates.length === 0
|
|
1747
|
-
?
|
|
1734
|
+
return (that.aValueStates.length === 0
|
|
1735
|
+
? SyncPromise.resolve()
|
|
1748
1736
|
// Checks the controls' value state after waiting some time for the control to
|
|
1749
1737
|
// set it.
|
|
1750
1738
|
: resolveLater(function () {
|
|
@@ -1760,6 +1748,9 @@ sap.ui.define([
|
|
|
1760
1748
|
+ oControl.getValueStateText());
|
|
1761
1749
|
});
|
|
1762
1750
|
that.aValueStates = [];
|
|
1751
|
+
})).then(() => {
|
|
1752
|
+
assert.ok(!bTimeout, "waitForChanges(" + (sTitle || "") + "): "
|
|
1753
|
+
+ (bTimeout ? "Timeout (" + iWaitTimeout + " ms)" : "Done"));
|
|
1763
1754
|
});
|
|
1764
1755
|
});
|
|
1765
1756
|
|
|
@@ -5037,7 +5028,7 @@ usePreliminaryContext : false}}">\
|
|
|
5037
5028
|
}]
|
|
5038
5029
|
})
|
|
5039
5030
|
.expectValue("connectionID", ["10"])
|
|
5040
|
-
.expectValue("flightDate", ["5/30/15, 1:47
|
|
5031
|
+
.expectValue("flightDate", ["5/30/15, 1:47\u202FPM"])
|
|
5041
5032
|
.expectMessage(oFlight10PriceError, "/FlightCollection",
|
|
5042
5033
|
"/CarrierCollection('1')/carrierFlights")
|
|
5043
5034
|
.expectMessage(oFlight20PriceWarning, "/FlightCollection",
|
|
@@ -5054,7 +5045,7 @@ usePreliminaryContext : false}}">\
|
|
|
5054
5045
|
});
|
|
5055
5046
|
}).then(function (oFilter) {
|
|
5056
5047
|
that.expectValue("connectionID", ["20"])
|
|
5057
|
-
.expectValue("flightDate", ["6/30/15, 1:47
|
|
5048
|
+
.expectValue("flightDate", ["6/30/15, 1:47\u202FPM"]);
|
|
5058
5049
|
|
|
5059
5050
|
oItemsBinding.filter(oFilter);
|
|
5060
5051
|
|
|
@@ -5319,7 +5310,7 @@ usePreliminaryContext : false}}">\
|
|
|
5319
5310
|
that.expectRequest({
|
|
5320
5311
|
created : true,
|
|
5321
5312
|
data : {
|
|
5322
|
-
__metadata :
|
|
5313
|
+
__metadata : {type : "GWSAMPLE_BASIC.SalesOrderLineItem"}
|
|
5323
5314
|
},
|
|
5324
5315
|
method : "POST",
|
|
5325
5316
|
requestUri : "SalesOrderSet('1')/ToLineItems"
|
|
@@ -5449,7 +5440,7 @@ usePreliminaryContext : false}}">\
|
|
|
5449
5440
|
}).then(function () {
|
|
5450
5441
|
var oResetPromise;
|
|
5451
5442
|
|
|
5452
|
-
if (bWithFailedPOST && bPersistTechnicalMessages
|
|
5443
|
+
if (bWithFailedPOST && bPersistTechnicalMessages) {
|
|
5453
5444
|
that.expectMessages([{
|
|
5454
5445
|
code : "UF0",
|
|
5455
5446
|
fullTarget : "/SalesOrderSet('1')/ToLineItems('~key~')",
|
|
@@ -8248,11 +8239,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
8248
8239
|
ID : "1",
|
|
8249
8240
|
TimezoneID : "America/New_York"
|
|
8250
8241
|
}, {"sap-message" : getMessageHeader(oDateWarning)})
|
|
8251
|
-
.expectValue("dateAndTime", "Jan 17, 2022, 4:54:48
|
|
8242
|
+
.expectValue("dateAndTime", "Jan 17, 2022, 4:54:48\u202FAM")
|
|
8252
8243
|
.expectValue("date", "Jan 17, 2022")
|
|
8253
|
-
.expectValue("time", "4:54:48
|
|
8244
|
+
.expectValue("time", "4:54:48\u202FAM")
|
|
8254
8245
|
.expectValue("timezone", "Americas, New York")
|
|
8255
|
-
.expectValue("default", "Jan 17, 2022, 4:54:48
|
|
8246
|
+
.expectValue("default", "Jan 17, 2022, 4:54:48\u202FAM Americas, New York")
|
|
8256
8247
|
.expectMessage(oDateWarning, "/DateTimeWithTimezoneSet('1')/")
|
|
8257
8248
|
.expectValueState("dateAndTime", "Warning", "Foo")
|
|
8258
8249
|
.expectValueState("date", "Warning", "Foo")
|
|
@@ -10332,8 +10323,8 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10332
10323
|
threshold="0"\
|
|
10333
10324
|
visibleRowCount="1">\
|
|
10334
10325
|
<Text id="maintenanceOrder" text="{MaintenanceOrder}" />\
|
|
10335
|
-
</t:TreeTable>'
|
|
10336
|
-
|
|
10326
|
+
</t:TreeTable>';
|
|
10327
|
+
let oTable;
|
|
10337
10328
|
|
|
10338
10329
|
this.expectHeadRequest()
|
|
10339
10330
|
.expectRequest({
|
|
@@ -10354,12 +10345,15 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10354
10345
|
MaintenanceOrder : "Foo"
|
|
10355
10346
|
}]
|
|
10356
10347
|
})
|
|
10357
|
-
.expectValue("person", "Alice")
|
|
10358
|
-
.ignoreNullChanges("maintenanceOrder") //FIXME: unexpected change occurring in testsuite
|
|
10359
|
-
.expectValue("maintenanceOrder", ["Foo"]);
|
|
10348
|
+
.expectValue("person", "Alice");
|
|
10360
10349
|
|
|
10361
|
-
return this.createView(assert, sView, oModel).then(
|
|
10362
|
-
|
|
10350
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
10351
|
+
oTable = this.oView.byId("table");
|
|
10352
|
+
|
|
10353
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
10354
|
+
assert.deepEqual(getTableContent(oTable), [["Foo"]]);
|
|
10355
|
+
|
|
10356
|
+
this.expectRequest({
|
|
10363
10357
|
batchNo : 3,
|
|
10364
10358
|
data : {
|
|
10365
10359
|
__metadata : {uri : "C_RSHMaintSchedSmltdOrdAndOp('1')"},
|
|
@@ -10379,16 +10373,17 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10379
10373
|
__metadata : {uri : "C_RSHMaintSchedSmltdOrdAndOp('1')"},
|
|
10380
10374
|
MaintenanceOrder : "Bar"
|
|
10381
10375
|
}]
|
|
10382
|
-
})
|
|
10383
|
-
.expectValue("maintenanceOrder", ["Bar"]);
|
|
10376
|
+
});
|
|
10384
10377
|
|
|
10385
10378
|
// code under test
|
|
10386
10379
|
oModel.setProperty("/C_RSHMaintSchedSmltdOrdAndOp('1')/MaintenanceOrder", "Bar");
|
|
10387
10380
|
oModel.submitChanges();
|
|
10388
10381
|
|
|
10389
|
-
return
|
|
10390
|
-
}).then(
|
|
10391
|
-
|
|
10382
|
+
return this.waitForChanges(assert);
|
|
10383
|
+
}).then(() => {
|
|
10384
|
+
assert.deepEqual(getTableContent(oTable), [["Bar"]]);
|
|
10385
|
+
|
|
10386
|
+
this.expectRequest({
|
|
10392
10387
|
batchNo : 4,
|
|
10393
10388
|
data : {
|
|
10394
10389
|
Person : "Bob"
|
|
@@ -10408,7 +10403,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10408
10403
|
// code under test: scenario 2
|
|
10409
10404
|
oModel.update("/I_UserContactCard('foo')", {"Person" : "Bob"});
|
|
10410
10405
|
|
|
10411
|
-
return
|
|
10406
|
+
return this.waitForChanges(assert);
|
|
10412
10407
|
});
|
|
10413
10408
|
});
|
|
10414
10409
|
|
|
@@ -10805,8 +10800,10 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10805
10800
|
// Scenario: TreeTable#collapseAll for a table using ODataTreeBindingAdapter resets the number
|
|
10806
10801
|
// of levels expanded automatically in subsequent read requests to 0.
|
|
10807
10802
|
// BCP: 66039 / 2021
|
|
10803
|
+
// Scenario: ODataTreeBinding#expandNodeToLevel expands all children up to the given level.
|
|
10804
|
+
// JIRA: CPOUI5MODELS-1437
|
|
10808
10805
|
QUnit.test("ODataTreeBindingAdapter: collapseToLevel prevents auto expand of child nodes with"
|
|
10809
|
-
+ " higher level", function (assert) {
|
|
10806
|
+
+ " higher level and expandNodeToLevel works as expected", function (assert) {
|
|
10810
10807
|
var oModel = createSpecialCasesModel(),
|
|
10811
10808
|
oTable,
|
|
10812
10809
|
sView = '\
|
|
@@ -10827,8 +10824,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10827
10824
|
threshold="0"\
|
|
10828
10825
|
visibleRowCount="2">\
|
|
10829
10826
|
<Text id="maintenanceOrder" text="{MaintenanceOrder}" />\
|
|
10830
|
-
</t:TreeTable>'
|
|
10831
|
-
that = this;
|
|
10827
|
+
</t:TreeTable>';
|
|
10832
10828
|
|
|
10833
10829
|
this.expectHeadRequest()
|
|
10834
10830
|
.expectRequest("C_RSHMaintSchedSmltdOrdAndOp?$filter=OrderOperationRowLevel eq 0"
|
|
@@ -10869,22 +10865,23 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10869
10865
|
OrderOperationRowID : "id-0.1",
|
|
10870
10866
|
OrderOperationRowLevel : 1
|
|
10871
10867
|
}]
|
|
10872
|
-
})
|
|
10873
|
-
.expectValue("maintenanceOrder", ["0", "1"])
|
|
10874
|
-
.expectValue("maintenanceOrder", "0.0", 1);
|
|
10868
|
+
});
|
|
10875
10869
|
|
|
10876
|
-
return this.createView(assert, sView, oModel).then(
|
|
10877
|
-
oTable =
|
|
10870
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
10871
|
+
oTable = this.oView.byId("table");
|
|
10878
10872
|
|
|
10879
|
-
|
|
10873
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
10874
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["0.0"]]);
|
|
10880
10875
|
|
|
10881
10876
|
// code under test
|
|
10882
10877
|
oTable.collapseAll();
|
|
10883
10878
|
|
|
10884
|
-
return
|
|
10885
|
-
}).then(
|
|
10879
|
+
return this.waitForChanges(assert);
|
|
10880
|
+
}).then(() => {
|
|
10881
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"]]);
|
|
10882
|
+
|
|
10886
10883
|
//TODO expect $top=2 instead of $top=4, check TreeBindingAdapter#_getContextsOrNodes?
|
|
10887
|
-
|
|
10884
|
+
this.expectRequest("C_RSHMaintSchedSmltdOrdAndOp"
|
|
10888
10885
|
+ "?$filter=OrderOperationRowLevel eq 0&$skip=2&$top=4",
|
|
10889
10886
|
{
|
|
10890
10887
|
results : [{
|
|
@@ -10900,17 +10897,192 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
10900
10897
|
OrderOperationRowID : "id-3",
|
|
10901
10898
|
OrderOperationRowLevel : 0
|
|
10902
10899
|
}]
|
|
10903
|
-
})
|
|
10904
|
-
.expectValue("maintenanceOrder", "", 2)
|
|
10905
|
-
.expectValue("maintenanceOrder", "", 3)
|
|
10906
|
-
.expectValue("maintenanceOrder", "2", 2)
|
|
10907
|
-
.expectValue("maintenanceOrder", "3", 3);
|
|
10900
|
+
});
|
|
10908
10901
|
|
|
10909
10902
|
// code under test
|
|
10910
10903
|
// scroll down shows additional level 0 nodes, but must NOT load or show their children
|
|
10911
10904
|
oTable.setFirstVisibleRow(2);
|
|
10912
10905
|
|
|
10913
|
-
return
|
|
10906
|
+
return this.waitForChanges(assert);
|
|
10907
|
+
}).then(() => {
|
|
10908
|
+
assert.deepEqual(getTableContent(oTable), [["2"], ["3"]]);
|
|
10909
|
+
|
|
10910
|
+
this.expectRequest(
|
|
10911
|
+
"C_RSHMaintSchedSmltdOrdAndOp?$filter=OrderOperationRowID eq 'id-2' and OrderOperationRowLevel le 2",
|
|
10912
|
+
{
|
|
10913
|
+
results : [{
|
|
10914
|
+
__metadata : {uri : "C_RSHMaintSchedSmltdOrdAndOp('id-2')"},
|
|
10915
|
+
MaintenanceOrder : "2",
|
|
10916
|
+
OrderOperationIsExpanded : "expanded",
|
|
10917
|
+
OrderOperationRowID : "id-2",
|
|
10918
|
+
OrderOperationRowLevel : 0
|
|
10919
|
+
}, {
|
|
10920
|
+
__metadata : {uri : "C_RSHMaintSchedSmltdOrdAndOp('id-2.0')"},
|
|
10921
|
+
MaintenanceOrder : "2.0",
|
|
10922
|
+
OrderOperationIsExpanded : "leaf",
|
|
10923
|
+
OrderOperationParentRowID : "id-2",
|
|
10924
|
+
OrderOperationRowID : "id-2.0",
|
|
10925
|
+
OrderOperationRowLevel : 1
|
|
10926
|
+
}]
|
|
10927
|
+
});
|
|
10928
|
+
|
|
10929
|
+
return Promise.all([
|
|
10930
|
+
// code under test
|
|
10931
|
+
oTable.getBinding("rows").expandNodeToLevel(2, 2),
|
|
10932
|
+
this.waitForChanges(assert)
|
|
10933
|
+
]);
|
|
10934
|
+
}).then(() => {
|
|
10935
|
+
assert.deepEqual(getTableContent(oTable), [["2"], ["2.0"]]);
|
|
10936
|
+
});
|
|
10937
|
+
});
|
|
10938
|
+
|
|
10939
|
+
//*********************************************************************************************
|
|
10940
|
+
// Scenario: All read requests of the tree binding except $count requests, consider "transitionMessagesOnly"
|
|
10941
|
+
// parameter.
|
|
10942
|
+
// JIRA: CPOUI5MODELS-1437
|
|
10943
|
+
QUnit.test("ODataTreeBinding: transtionMessagesOnly", function (assert) {
|
|
10944
|
+
const oModel = createSpecialCasesModel();
|
|
10945
|
+
let oTable;
|
|
10946
|
+
const sView = '\
|
|
10947
|
+
<t:TreeTable id="table"\
|
|
10948
|
+
rows="{\
|
|
10949
|
+
parameters: {\
|
|
10950
|
+
countMode : \'Request\',\
|
|
10951
|
+
numberOfExpandedLevels: 1,\
|
|
10952
|
+
transitionMessagesOnly: true,\
|
|
10953
|
+
treeAnnotationProperties: {\
|
|
10954
|
+
hierarchyDrillStateFor: \'OrderOperationIsExpanded\',\
|
|
10955
|
+
hierarchyLevelFor: \'OrderOperationRowLevel\',\
|
|
10956
|
+
hierarchyNodeFor: \'OrderOperationRowID\',\
|
|
10957
|
+
hierarchyParentNodeFor: \'OrderOperationParentRowID\'\
|
|
10958
|
+
}\
|
|
10959
|
+
},\
|
|
10960
|
+
path: \'/C_RSHMaintSchedSmltdOrdAndOp\'\
|
|
10961
|
+
}"\
|
|
10962
|
+
threshold="0"\
|
|
10963
|
+
visibleRowCount="2">\
|
|
10964
|
+
<Text id="maintenanceOrder" text="{MaintenanceOrder}" />\
|
|
10965
|
+
</t:TreeTable>';
|
|
10966
|
+
|
|
10967
|
+
this.expectHeadRequest()
|
|
10968
|
+
// triggered by ODataTreeBinding#_getCountForNodeId
|
|
10969
|
+
.expectRequest("C_RSHMaintSchedSmltdOrdAndOp/$count?$filter=OrderOperationRowLevel eq 0", "273")
|
|
10970
|
+
.expectRequest({ // triggered by ODataTreeBinding#_loadSubNodes
|
|
10971
|
+
headers: {"sap-messages": "transientOnly"},
|
|
10972
|
+
requestUri: "C_RSHMaintSchedSmltdOrdAndOp?$filter=OrderOperationRowLevel eq 0&$skip=0&$top=2"
|
|
10973
|
+
}, {
|
|
10974
|
+
results: [{
|
|
10975
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-0')"},
|
|
10976
|
+
MaintenanceOrder: "0",
|
|
10977
|
+
OrderOperationIsExpanded: "collapsed",
|
|
10978
|
+
OrderOperationRowID: "id-0",
|
|
10979
|
+
OrderOperationRowLevel: 0
|
|
10980
|
+
}, {
|
|
10981
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-1')"},
|
|
10982
|
+
MaintenanceOrder: "1",
|
|
10983
|
+
OrderOperationIsExpanded: "leaf",
|
|
10984
|
+
OrderOperationRowID: "id-1",
|
|
10985
|
+
OrderOperationRowLevel: 0
|
|
10986
|
+
}]
|
|
10987
|
+
})
|
|
10988
|
+
// triggered by ODataTreeBinding#_getCountForNodeId
|
|
10989
|
+
.expectRequest("C_RSHMaintSchedSmltdOrdAndOp/$count?$filter=OrderOperationParentRowID eq 'id-0'", "5")
|
|
10990
|
+
.expectRequest({ // triggered by ODataTreeBinding#_loadSubNodes
|
|
10991
|
+
headers: {"sap-messages": "transientOnly"},
|
|
10992
|
+
requestUri: "C_RSHMaintSchedSmltdOrdAndOp?$filter=OrderOperationParentRowID eq 'id-0'"
|
|
10993
|
+
+ "&$skip=0&$top=2"
|
|
10994
|
+
}, {
|
|
10995
|
+
results: [{
|
|
10996
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-0.0')"},
|
|
10997
|
+
MaintenanceOrder: "0.0",
|
|
10998
|
+
OrderOperationIsExpanded: "leaf",
|
|
10999
|
+
OrderOperationParentRowID: "id-0",
|
|
11000
|
+
OrderOperationRowID: "id-0.0",
|
|
11001
|
+
OrderOperationRowLevel: 1
|
|
11002
|
+
}, {
|
|
11003
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-0.1')"},
|
|
11004
|
+
MaintenanceOrder: "0.1",
|
|
11005
|
+
OrderOperationIsExpanded: "leaf",
|
|
11006
|
+
OrderOperationParentRowID: "id-0",
|
|
11007
|
+
OrderOperationRowID: "id-0.1",
|
|
11008
|
+
OrderOperationRowLevel: 1
|
|
11009
|
+
}]
|
|
11010
|
+
});
|
|
11011
|
+
|
|
11012
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
11013
|
+
oTable = this.oView.byId("table");
|
|
11014
|
+
|
|
11015
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
11016
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["0.0"]]);
|
|
11017
|
+
|
|
11018
|
+
// code under test
|
|
11019
|
+
oTable.collapseAll();
|
|
11020
|
+
|
|
11021
|
+
return this.waitForChanges(assert, "collapse all nodes");
|
|
11022
|
+
}).then(() => {
|
|
11023
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"]]);
|
|
11024
|
+
|
|
11025
|
+
this.expectRequest({ // triggered by ODataTreeBinding#_loadSubNodes
|
|
11026
|
+
headers: {"sap-messages": "transientOnly"},
|
|
11027
|
+
requestUri: "C_RSHMaintSchedSmltdOrdAndOp?$filter=OrderOperationRowLevel eq 0&$skip=2&$top=4"
|
|
11028
|
+
}, {
|
|
11029
|
+
results: [{
|
|
11030
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-2')"},
|
|
11031
|
+
MaintenanceOrder: "2",
|
|
11032
|
+
OrderOperationIsExpanded: "collapsed",
|
|
11033
|
+
OrderOperationRowID: "id-2",
|
|
11034
|
+
OrderOperationRowLevel: 0
|
|
11035
|
+
}, {
|
|
11036
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-3')"},
|
|
11037
|
+
MaintenanceOrder: "3",
|
|
11038
|
+
OrderOperationIsExpanded: "leaf",
|
|
11039
|
+
OrderOperationRowID: "id-3",
|
|
11040
|
+
OrderOperationRowLevel: 0
|
|
11041
|
+
}]
|
|
11042
|
+
});
|
|
11043
|
+
|
|
11044
|
+
// code under test
|
|
11045
|
+
oTable.setFirstVisibleRow(2);
|
|
11046
|
+
|
|
11047
|
+
return this.waitForChanges(assert, "scroll down");
|
|
11048
|
+
}).then(() => {
|
|
11049
|
+
assert.deepEqual(getTableContent(oTable), [["2"], ["3"]]);
|
|
11050
|
+
|
|
11051
|
+
this.expectRequest({ // triggered by ODataTreeBinding#_loadSubTree
|
|
11052
|
+
headers: {"sap-messages": "transientOnly"},
|
|
11053
|
+
requestUri: "C_RSHMaintSchedSmltdOrdAndOp?"
|
|
11054
|
+
+ "$filter=OrderOperationRowID eq 'id-2' and OrderOperationRowLevel le 2"
|
|
11055
|
+
}, {
|
|
11056
|
+
results: [{
|
|
11057
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-2')"},
|
|
11058
|
+
MaintenanceOrder: "2",
|
|
11059
|
+
OrderOperationIsExpanded: "expanded",
|
|
11060
|
+
OrderOperationRowID: "id-2",
|
|
11061
|
+
OrderOperationRowLevel: 0
|
|
11062
|
+
}, {
|
|
11063
|
+
__metadata: {uri: "C_RSHMaintSchedSmltdOrdAndOp('id-2.0')"},
|
|
11064
|
+
MaintenanceOrder: "2.0",
|
|
11065
|
+
OrderOperationIsExpanded: "leaf",
|
|
11066
|
+
OrderOperationParentRowID: "id-2",
|
|
11067
|
+
OrderOperationRowID: "id-2.0",
|
|
11068
|
+
OrderOperationRowLevel: 1
|
|
11069
|
+
}]
|
|
11070
|
+
});
|
|
11071
|
+
|
|
11072
|
+
return Promise.all([
|
|
11073
|
+
// code under test
|
|
11074
|
+
oTable.getBinding("rows").expandNodeToLevel(2, 2),
|
|
11075
|
+
this.waitForChanges(assert, "expand node to level 2")
|
|
11076
|
+
]);
|
|
11077
|
+
}).then(() => {
|
|
11078
|
+
assert.deepEqual(getTableContent(oTable), [["2"], ["2.0"]]);
|
|
11079
|
+
|
|
11080
|
+
// code under test
|
|
11081
|
+
oTable.setFirstVisibleRow(0);
|
|
11082
|
+
|
|
11083
|
+
return this.waitForChanges(assert, "scroll up again");
|
|
11084
|
+
}).then(() => {
|
|
11085
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"]]);
|
|
10914
11086
|
});
|
|
10915
11087
|
});
|
|
10916
11088
|
|
|
@@ -17986,8 +18158,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
17986
18158
|
}"\
|
|
17987
18159
|
visibleRowCount="3">\
|
|
17988
18160
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
17989
|
-
</t:TreeTable>'
|
|
17990
|
-
that = this;
|
|
18161
|
+
</t:TreeTable>';
|
|
17991
18162
|
|
|
17992
18163
|
this.expectHeadRequest()
|
|
17993
18164
|
.expectRequest({
|
|
@@ -17997,34 +18168,36 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
17997
18168
|
}, {
|
|
17998
18169
|
__count : "1",
|
|
17999
18170
|
results : [oNode100]
|
|
18000
|
-
})
|
|
18001
|
-
.expectValue("itemName", ["foo", "", ""]);
|
|
18171
|
+
});
|
|
18002
18172
|
|
|
18003
|
-
return this.createView(assert, sView, oModel).then(
|
|
18004
|
-
oTable =
|
|
18173
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
18174
|
+
oTable = this.oView.byId("table");
|
|
18005
18175
|
|
|
18006
|
-
|
|
18176
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
18177
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18178
|
+
|
|
18179
|
+
this.expectRequest({
|
|
18007
18180
|
batchNo : 2,
|
|
18008
18181
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18009
18182
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18010
18183
|
}, {
|
|
18011
18184
|
__count : "2",
|
|
18012
18185
|
results : [oNode200, oNode300]
|
|
18013
|
-
})
|
|
18014
|
-
.expectValue("itemName", ["bar", "baz"], 1);
|
|
18186
|
+
});
|
|
18015
18187
|
|
|
18016
18188
|
oTable.expand(0);
|
|
18017
18189
|
|
|
18018
|
-
return
|
|
18019
|
-
}).then(
|
|
18190
|
+
return this.waitForChanges(assert);
|
|
18191
|
+
}).then(() => {
|
|
18020
18192
|
oBinding = oTable.getBinding("rows");
|
|
18021
18193
|
|
|
18022
|
-
|
|
18194
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"]]);
|
|
18195
|
+
|
|
18196
|
+
this.expectRequest({
|
|
18023
18197
|
batchNo : 3,
|
|
18024
18198
|
method : "DELETE",
|
|
18025
18199
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"
|
|
18026
18200
|
}, NO_CONTENT)
|
|
18027
|
-
.expectValue("itemName", "", 2)
|
|
18028
18201
|
.expectRequest({
|
|
18029
18202
|
batchNo : 4,
|
|
18030
18203
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=1&$inlinecount=allpages"
|
|
@@ -18046,10 +18219,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18046
18219
|
oBinding.removeContext(oTable.getContextByIndex(2));
|
|
18047
18220
|
oModel.submitChanges();
|
|
18048
18221
|
|
|
18049
|
-
return
|
|
18050
|
-
}).then(
|
|
18051
|
-
|
|
18052
|
-
|
|
18222
|
+
return this.waitForChanges(assert);
|
|
18223
|
+
}).then(() => {
|
|
18224
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18225
|
+
|
|
18226
|
+
this.expectRequest({
|
|
18053
18227
|
batchNo : 5,
|
|
18054
18228
|
data : {
|
|
18055
18229
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"},
|
|
@@ -18064,7 +18238,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18064
18238
|
oModel.setProperty("ErhaOrderItemName", "bar: renamed", oTable.getContextByIndex(1));
|
|
18065
18239
|
oModel.submitChanges();
|
|
18066
18240
|
|
|
18067
|
-
return
|
|
18241
|
+
return this.waitForChanges(assert);
|
|
18242
|
+
}).then(() => {
|
|
18243
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar: renamed"], [""]]);
|
|
18068
18244
|
});
|
|
18069
18245
|
});
|
|
18070
18246
|
});
|
|
@@ -18136,8 +18312,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18136
18312
|
}"\
|
|
18137
18313
|
visibleRowCount="3">\
|
|
18138
18314
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
18139
|
-
</t:TreeTable>'
|
|
18140
|
-
that = this;
|
|
18315
|
+
</t:TreeTable>';
|
|
18141
18316
|
|
|
18142
18317
|
this.expectHeadRequest()
|
|
18143
18318
|
.expectRequest({
|
|
@@ -18147,34 +18322,36 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18147
18322
|
}, {
|
|
18148
18323
|
__count : "1",
|
|
18149
18324
|
results : [oNode100]
|
|
18150
|
-
})
|
|
18151
|
-
.expectValue("itemName", ["foo", "", ""]);
|
|
18325
|
+
});
|
|
18152
18326
|
|
|
18153
|
-
return this.createView(assert, sView, oModel).then(
|
|
18154
|
-
oTable =
|
|
18327
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
18328
|
+
oTable = this.oView.byId("table");
|
|
18155
18329
|
|
|
18156
|
-
|
|
18330
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
18331
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18332
|
+
|
|
18333
|
+
this.expectRequest({
|
|
18157
18334
|
batchNo : 2,
|
|
18158
18335
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18159
18336
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18160
18337
|
}, {
|
|
18161
18338
|
__count : "2",
|
|
18162
18339
|
results : [oNode200, oNode300]
|
|
18163
|
-
})
|
|
18164
|
-
.expectValue("itemName", ["bar", "baz"], 1);
|
|
18340
|
+
});
|
|
18165
18341
|
|
|
18166
18342
|
oTable.expand(0);
|
|
18167
18343
|
|
|
18168
|
-
return
|
|
18169
|
-
}).then(
|
|
18344
|
+
return this.waitForChanges(assert);
|
|
18345
|
+
}).then(() => {
|
|
18170
18346
|
oBinding = oTable.getBinding("rows");
|
|
18171
18347
|
|
|
18172
|
-
|
|
18348
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"]]);
|
|
18349
|
+
|
|
18350
|
+
this.expectRequest({
|
|
18173
18351
|
batchNo : 3,
|
|
18174
18352
|
method : "DELETE",
|
|
18175
18353
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"
|
|
18176
18354
|
}, NO_CONTENT)
|
|
18177
|
-
.expectValue("itemName", "", 2)
|
|
18178
18355
|
.expectRequest({
|
|
18179
18356
|
batchNo : 4,
|
|
18180
18357
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=1&$inlinecount=allpages"
|
|
@@ -18196,10 +18373,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18196
18373
|
oBinding.removeContext(oTable.getContextByIndex(2));
|
|
18197
18374
|
oBinding.submitChanges();
|
|
18198
18375
|
|
|
18199
|
-
return
|
|
18200
|
-
}).then(
|
|
18201
|
-
|
|
18202
|
-
|
|
18376
|
+
return this.waitForChanges(assert);
|
|
18377
|
+
}).then(() => {
|
|
18378
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18379
|
+
|
|
18380
|
+
this.expectRequest({
|
|
18203
18381
|
batchNo : 5,
|
|
18204
18382
|
data : {
|
|
18205
18383
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"},
|
|
@@ -18208,9 +18386,8 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18208
18386
|
key : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')",
|
|
18209
18387
|
method : "MERGE",
|
|
18210
18388
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"
|
|
18211
|
-
}, NO_CONTENT)
|
|
18212
|
-
|
|
18213
|
-
that.expectRequest({
|
|
18389
|
+
}, NO_CONTENT)
|
|
18390
|
+
.expectRequest({
|
|
18214
18391
|
batchNo : 6,
|
|
18215
18392
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=1&$inlinecount=allpages"
|
|
18216
18393
|
+ "&$filter=HierarchyDistanceFromRoot le 0"
|
|
@@ -18231,7 +18408,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18231
18408
|
oModel.setProperty("ErhaOrderItemName", "bar: renamed", oTable.getContextByIndex(1));
|
|
18232
18409
|
oBinding.submitChanges();
|
|
18233
18410
|
|
|
18234
|
-
return
|
|
18411
|
+
return this.waitForChanges(assert);
|
|
18412
|
+
}).then(() => {
|
|
18413
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar: renamed"], [""]]);
|
|
18235
18414
|
});
|
|
18236
18415
|
});
|
|
18237
18416
|
});
|
|
@@ -18298,8 +18477,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18298
18477
|
}"\
|
|
18299
18478
|
visibleRowCount="3">\
|
|
18300
18479
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
18301
|
-
</t:TreeTable>'
|
|
18302
|
-
that = this;
|
|
18480
|
+
</t:TreeTable>';
|
|
18303
18481
|
|
|
18304
18482
|
this.expectHeadRequest()
|
|
18305
18483
|
.expectRequest({
|
|
@@ -18309,34 +18487,36 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18309
18487
|
}, {
|
|
18310
18488
|
__count : "1",
|
|
18311
18489
|
results : [oNode100]
|
|
18312
|
-
})
|
|
18313
|
-
.expectValue("itemName", ["foo", "", ""]);
|
|
18490
|
+
});
|
|
18314
18491
|
|
|
18315
|
-
return this.createView(assert, sView, oModel).then(
|
|
18316
|
-
oTable =
|
|
18492
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
18493
|
+
oTable = this.oView.byId("table");
|
|
18317
18494
|
|
|
18318
|
-
|
|
18495
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
18496
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18497
|
+
|
|
18498
|
+
this.expectRequest({
|
|
18319
18499
|
batchNo : 2,
|
|
18320
18500
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18321
18501
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18322
18502
|
}, {
|
|
18323
18503
|
__count : "2",
|
|
18324
18504
|
results : [oNode200, oNode300]
|
|
18325
|
-
})
|
|
18326
|
-
.expectValue("itemName", ["bar", "baz"], 1);
|
|
18505
|
+
});
|
|
18327
18506
|
|
|
18328
18507
|
oTable.expand(0);
|
|
18329
18508
|
|
|
18330
|
-
return
|
|
18331
|
-
}).then(
|
|
18509
|
+
return this.waitForChanges(assert);
|
|
18510
|
+
}).then(() => {
|
|
18332
18511
|
oBinding = oTable.getBinding("rows");
|
|
18333
18512
|
|
|
18334
|
-
|
|
18513
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"]]);
|
|
18514
|
+
|
|
18515
|
+
this.expectRequest({
|
|
18335
18516
|
batchNo : 3,
|
|
18336
18517
|
method : "DELETE",
|
|
18337
18518
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"
|
|
18338
18519
|
}, NO_CONTENT)
|
|
18339
|
-
.expectValue("itemName", "", 2)
|
|
18340
18520
|
.expectRequest({
|
|
18341
18521
|
batchNo : 4,
|
|
18342
18522
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
@@ -18344,34 +18524,34 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18344
18524
|
}, {
|
|
18345
18525
|
__count : "1",
|
|
18346
18526
|
results : [oNode100]
|
|
18347
|
-
})
|
|
18348
|
-
.expectValue("itemName", "", 1); // binding gets refreshed, no restore tree state
|
|
18527
|
+
});
|
|
18349
18528
|
|
|
18350
18529
|
// code under test: hierarchy change
|
|
18351
18530
|
oBinding.removeContext(oTable.getContextByIndex(2));
|
|
18352
18531
|
oModel.submitChanges();
|
|
18353
18532
|
|
|
18354
|
-
return
|
|
18355
|
-
}).then(
|
|
18356
|
-
|
|
18533
|
+
return this.waitForChanges(assert);
|
|
18534
|
+
}).then(() => {
|
|
18535
|
+
// binding gets refreshed, no restore tree state
|
|
18536
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18357
18537
|
|
|
18358
|
-
|
|
18538
|
+
this.expectRequest({
|
|
18359
18539
|
batchNo : 5,
|
|
18360
18540
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18361
18541
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18362
18542
|
}, {
|
|
18363
18543
|
__count : "1",
|
|
18364
18544
|
results : [oNode200]
|
|
18365
|
-
})
|
|
18366
|
-
.expectValue("itemName", "bar", 1);
|
|
18545
|
+
});
|
|
18367
18546
|
|
|
18368
18547
|
// manually expand the node again
|
|
18369
18548
|
oTable.expand(0);
|
|
18370
18549
|
|
|
18371
|
-
return
|
|
18372
|
-
}).then(
|
|
18373
|
-
|
|
18374
|
-
|
|
18550
|
+
return this.waitForChanges(assert);
|
|
18551
|
+
}).then(() => {
|
|
18552
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18553
|
+
|
|
18554
|
+
this.expectRequest({
|
|
18375
18555
|
batchNo : 6,
|
|
18376
18556
|
data : {
|
|
18377
18557
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"},
|
|
@@ -18386,7 +18566,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18386
18566
|
oModel.setProperty("ErhaOrderItemName", "bar: renamed", oTable.getContextByIndex(1));
|
|
18387
18567
|
oModel.submitChanges();
|
|
18388
18568
|
|
|
18389
|
-
return
|
|
18569
|
+
return this.waitForChanges(assert);
|
|
18570
|
+
}).then(() => {
|
|
18571
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar: renamed"], [""]]);
|
|
18390
18572
|
});
|
|
18391
18573
|
});
|
|
18392
18574
|
|
|
@@ -18453,8 +18635,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18453
18635
|
}"\
|
|
18454
18636
|
visibleRowCount="3">\
|
|
18455
18637
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
18456
|
-
</t:TreeTable>'
|
|
18457
|
-
that = this;
|
|
18638
|
+
</t:TreeTable>';
|
|
18458
18639
|
|
|
18459
18640
|
this.expectHeadRequest()
|
|
18460
18641
|
.expectRequest({
|
|
@@ -18464,34 +18645,36 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18464
18645
|
}, {
|
|
18465
18646
|
__count : "1",
|
|
18466
18647
|
results : [oNode100]
|
|
18467
|
-
})
|
|
18468
|
-
.expectValue("itemName", ["foo", "", ""]);
|
|
18648
|
+
});
|
|
18469
18649
|
|
|
18470
|
-
return this.createView(assert, sView, oModel).then(
|
|
18471
|
-
oTable =
|
|
18650
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
18651
|
+
oTable = this.oView.byId("table");
|
|
18472
18652
|
|
|
18473
|
-
|
|
18653
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
18654
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18655
|
+
|
|
18656
|
+
this.expectRequest({
|
|
18474
18657
|
batchNo : 2,
|
|
18475
18658
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18476
18659
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18477
18660
|
}, {
|
|
18478
18661
|
__count : "2",
|
|
18479
18662
|
results : [oNode200, oNode300]
|
|
18480
|
-
})
|
|
18481
|
-
.expectValue("itemName", ["bar", "baz"], 1);
|
|
18663
|
+
});
|
|
18482
18664
|
|
|
18483
18665
|
oTable.expand(0);
|
|
18484
18666
|
|
|
18485
|
-
return
|
|
18486
|
-
}).then(
|
|
18667
|
+
return this.waitForChanges(assert);
|
|
18668
|
+
}).then(() => {
|
|
18487
18669
|
oBinding = oTable.getBinding("rows");
|
|
18488
18670
|
|
|
18489
|
-
|
|
18671
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"]]);
|
|
18672
|
+
|
|
18673
|
+
this.expectRequest({
|
|
18490
18674
|
batchNo : 3,
|
|
18491
18675
|
method : "DELETE",
|
|
18492
18676
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"
|
|
18493
18677
|
}, NO_CONTENT)
|
|
18494
|
-
.expectValue("itemName", "", 2)
|
|
18495
18678
|
.expectRequest({
|
|
18496
18679
|
batchNo : 4,
|
|
18497
18680
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
@@ -18499,34 +18682,34 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18499
18682
|
}, {
|
|
18500
18683
|
__count : "1",
|
|
18501
18684
|
results : [oNode100]
|
|
18502
|
-
})
|
|
18503
|
-
.expectValue("itemName", "", 1); // binding gets refreshed, no restore tree state
|
|
18685
|
+
});
|
|
18504
18686
|
|
|
18505
18687
|
// code under test: hierarchy change
|
|
18506
18688
|
oBinding.removeContext(oTable.getContextByIndex(2));
|
|
18507
18689
|
oBinding.submitChanges();
|
|
18508
18690
|
|
|
18509
|
-
return
|
|
18510
|
-
}).then(
|
|
18511
|
-
|
|
18691
|
+
return this.waitForChanges(assert);
|
|
18692
|
+
}).then(() => {
|
|
18693
|
+
// binding gets refreshed, no restore tree state
|
|
18694
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18512
18695
|
|
|
18513
|
-
|
|
18696
|
+
this.expectRequest({
|
|
18514
18697
|
batchNo : 5,
|
|
18515
18698
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18516
18699
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18517
18700
|
}, {
|
|
18518
18701
|
__count : "1",
|
|
18519
18702
|
results : [oNode200]
|
|
18520
|
-
})
|
|
18521
|
-
.expectValue("itemName", "bar", 1);
|
|
18703
|
+
});
|
|
18522
18704
|
|
|
18523
18705
|
// manually expand the node again
|
|
18524
18706
|
oTable.expand(0);
|
|
18525
18707
|
|
|
18526
|
-
return
|
|
18527
|
-
}).then(
|
|
18528
|
-
|
|
18529
|
-
|
|
18708
|
+
return this.waitForChanges(assert);
|
|
18709
|
+
}).then(() => {
|
|
18710
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18711
|
+
|
|
18712
|
+
this.expectRequest({
|
|
18530
18713
|
batchNo : 6,
|
|
18531
18714
|
data : {
|
|
18532
18715
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"},
|
|
@@ -18535,24 +18718,24 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18535
18718
|
key : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')",
|
|
18536
18719
|
method : "MERGE",
|
|
18537
18720
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"
|
|
18538
|
-
}, NO_CONTENT)
|
|
18539
|
-
|
|
18540
|
-
|
|
18541
|
-
|
|
18542
|
-
|
|
18543
|
-
|
|
18544
|
-
|
|
18545
|
-
|
|
18546
|
-
|
|
18547
|
-
})
|
|
18548
|
-
// binding gets refreshed, no restore tree state
|
|
18549
|
-
.expectValue("itemName", "", 1);
|
|
18721
|
+
}, NO_CONTENT)
|
|
18722
|
+
.expectRequest({
|
|
18723
|
+
batchNo : 7,
|
|
18724
|
+
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18725
|
+
+ "&$filter=HierarchyDistanceFromRoot le 0"
|
|
18726
|
+
}, {
|
|
18727
|
+
__count : "1",
|
|
18728
|
+
results : [oNode100]
|
|
18729
|
+
});
|
|
18550
18730
|
|
|
18551
18731
|
// code under test: property change
|
|
18552
18732
|
oModel.setProperty("ErhaOrderItemName", "bar: renamed", oTable.getContextByIndex(1));
|
|
18553
18733
|
oBinding.submitChanges();
|
|
18554
18734
|
|
|
18555
|
-
return
|
|
18735
|
+
return this.waitForChanges(assert);
|
|
18736
|
+
}).then(() => {
|
|
18737
|
+
// binding gets refreshed, no restore tree state
|
|
18738
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18556
18739
|
});
|
|
18557
18740
|
});
|
|
18558
18741
|
|
|
@@ -18615,8 +18798,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18615
18798
|
}"\
|
|
18616
18799
|
visibleRowCount="3">\
|
|
18617
18800
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
18618
|
-
</t:TreeTable>'
|
|
18619
|
-
that = this;
|
|
18801
|
+
</t:TreeTable>';
|
|
18620
18802
|
|
|
18621
18803
|
this.expectHeadRequest()
|
|
18622
18804
|
.expectRequest({
|
|
@@ -18626,48 +18808,50 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18626
18808
|
}, {
|
|
18627
18809
|
__count : "1",
|
|
18628
18810
|
results : [oNode100]
|
|
18629
|
-
})
|
|
18630
|
-
.expectValue("itemName", ["foo", "", ""]);
|
|
18811
|
+
});
|
|
18631
18812
|
|
|
18632
|
-
return this.createView(assert, sView, oModel).then(
|
|
18633
|
-
oTable =
|
|
18813
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
18814
|
+
oTable = this.oView.byId("table");
|
|
18634
18815
|
|
|
18635
|
-
|
|
18816
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
18817
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18818
|
+
|
|
18819
|
+
this.expectRequest({
|
|
18636
18820
|
batchNo : 2,
|
|
18637
18821
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18638
18822
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18639
18823
|
}, {
|
|
18640
18824
|
__count : "1",
|
|
18641
18825
|
results : [oNode200]
|
|
18642
|
-
})
|
|
18643
|
-
.expectValue("itemName", "bar", 1);
|
|
18826
|
+
});
|
|
18644
18827
|
|
|
18645
18828
|
oTable.expand(0);
|
|
18646
18829
|
|
|
18647
|
-
return
|
|
18648
|
-
}).then(
|
|
18649
|
-
oTable
|
|
18830
|
+
return this.waitForChanges(assert);
|
|
18831
|
+
}).then(() => {
|
|
18832
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18650
18833
|
|
|
18651
|
-
|
|
18834
|
+
this.expectRequest({
|
|
18652
18835
|
batchNo : 3,
|
|
18653
18836
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18654
18837
|
+ "&$filter=HierarchyParentNode eq '200'"
|
|
18655
18838
|
}, {
|
|
18656
18839
|
__count : "1",
|
|
18657
18840
|
results : [oNode300]
|
|
18658
|
-
})
|
|
18659
|
-
.expectValue("itemName", "baz", 2);
|
|
18841
|
+
});
|
|
18660
18842
|
|
|
18661
18843
|
oTable.expand(1);
|
|
18662
18844
|
|
|
18663
|
-
return
|
|
18664
|
-
}).then(
|
|
18845
|
+
return this.waitForChanges(assert);
|
|
18846
|
+
}).then(() => {
|
|
18665
18847
|
var oMoveContext = oTable.getContextByIndex(2),
|
|
18666
18848
|
oParentContext = oTable.getContextByIndex(0);
|
|
18667
18849
|
|
|
18668
18850
|
oBinding = oTable.getBinding("rows");
|
|
18669
18851
|
|
|
18670
|
-
|
|
18852
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"]]);
|
|
18853
|
+
|
|
18854
|
+
this.expectRequest({
|
|
18671
18855
|
batchNo : 4,
|
|
18672
18856
|
data : {
|
|
18673
18857
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"},
|
|
@@ -18677,7 +18861,6 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18677
18861
|
method : "MERGE",
|
|
18678
18862
|
requestUri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='300')"
|
|
18679
18863
|
}, NO_CONTENT)
|
|
18680
|
-
.expectValue("itemName", ["baz", "bar"], 1)
|
|
18681
18864
|
.expectRequest({
|
|
18682
18865
|
batchNo : 4,
|
|
18683
18866
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
@@ -18685,35 +18868,35 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18685
18868
|
}, {
|
|
18686
18869
|
__count : "1",
|
|
18687
18870
|
results : [oNode100]
|
|
18688
|
-
})
|
|
18689
|
-
.expectValue("itemName", ["", ""], 1); // binding gets refreshed
|
|
18871
|
+
}); // binding gets refreshed
|
|
18690
18872
|
|
|
18691
18873
|
// code under test: hierarchy change
|
|
18692
18874
|
oBinding.removeContext(oMoveContext);
|
|
18693
18875
|
oBinding.addContexts(oParentContext, [oMoveContext]);
|
|
18694
18876
|
oModel.submitChanges();
|
|
18695
18877
|
|
|
18696
|
-
return
|
|
18697
|
-
}).then(
|
|
18698
|
-
|
|
18878
|
+
return this.waitForChanges(assert);
|
|
18879
|
+
}).then(() => {
|
|
18880
|
+
// binding gets refreshed
|
|
18881
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18699
18882
|
|
|
18700
|
-
|
|
18883
|
+
this.expectRequest({
|
|
18701
18884
|
batchNo : 5,
|
|
18702
18885
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages"
|
|
18703
18886
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18704
18887
|
}, {
|
|
18705
18888
|
__count : "1",
|
|
18706
18889
|
results : [oNode200]
|
|
18707
|
-
})
|
|
18708
|
-
.expectValue("itemName", "bar", 1);
|
|
18890
|
+
});
|
|
18709
18891
|
|
|
18710
18892
|
// manually expand the node again
|
|
18711
18893
|
oTable.expand(0);
|
|
18712
18894
|
|
|
18713
|
-
return
|
|
18714
|
-
}).then(
|
|
18715
|
-
|
|
18716
|
-
|
|
18895
|
+
return this.waitForChanges(assert);
|
|
18896
|
+
}).then(() => {
|
|
18897
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""]]);
|
|
18898
|
+
|
|
18899
|
+
this.expectRequest({
|
|
18717
18900
|
batchNo : 6,
|
|
18718
18901
|
data : {
|
|
18719
18902
|
__metadata : {uri : "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='200')"},
|
|
@@ -18730,15 +18913,16 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18730
18913
|
}, {
|
|
18731
18914
|
__count : "1",
|
|
18732
18915
|
results : [oNode100]
|
|
18733
|
-
})
|
|
18734
|
-
// binding gets refreshed, no restore tree state
|
|
18735
|
-
.expectValue("itemName", "", 1);
|
|
18916
|
+
});
|
|
18736
18917
|
|
|
18737
18918
|
// code under test: property change
|
|
18738
18919
|
oModel.setProperty("ErhaOrderItemName", "bar: renamed", oTable.getContextByIndex(1));
|
|
18739
18920
|
oModel.submitChanges();
|
|
18740
18921
|
|
|
18741
|
-
return
|
|
18922
|
+
return this.waitForChanges(assert);
|
|
18923
|
+
}).then(() => {
|
|
18924
|
+
// binding gets refreshed, no restore tree state
|
|
18925
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""]]);
|
|
18742
18926
|
});
|
|
18743
18927
|
});
|
|
18744
18928
|
|
|
@@ -18879,8 +19063,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18879
19063
|
}"\
|
|
18880
19064
|
visibleRowCount="4">\
|
|
18881
19065
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
18882
|
-
</t:TreeTable>'
|
|
18883
|
-
that = this;
|
|
19066
|
+
</t:TreeTable>';
|
|
18884
19067
|
|
|
18885
19068
|
this.expectHeadRequest()
|
|
18886
19069
|
.expectRequest({
|
|
@@ -18890,34 +19073,34 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18890
19073
|
}, {
|
|
18891
19074
|
__count : "1",
|
|
18892
19075
|
results : [oNode100]
|
|
18893
|
-
})
|
|
18894
|
-
.expectValue("itemName", ["foo", "", "", ""]);
|
|
19076
|
+
});
|
|
18895
19077
|
|
|
18896
|
-
return this.createView(assert, sView, oModel).then(
|
|
18897
|
-
oTable =
|
|
19078
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
19079
|
+
oTable = this.oView.byId("table");
|
|
18898
19080
|
oBinding = oTable.getBinding("rows");
|
|
18899
19081
|
|
|
18900
|
-
|
|
19082
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
19083
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""], [""], [""]]);
|
|
19084
|
+
|
|
19085
|
+
this.expectRequest({
|
|
18901
19086
|
batchNo : 2,
|
|
18902
19087
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
18903
19088
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
18904
19089
|
}, {
|
|
18905
19090
|
__count : "2",
|
|
18906
19091
|
results : [oNode200, oNode300]
|
|
18907
|
-
})
|
|
18908
|
-
.expectValue("itemName", ["bar", "baz"], 1);
|
|
19092
|
+
});
|
|
18909
19093
|
|
|
18910
19094
|
oTable.expand(0);
|
|
18911
19095
|
|
|
18912
|
-
return
|
|
18913
|
-
}).then(
|
|
19096
|
+
return this.waitForChanges(assert);
|
|
19097
|
+
}).then(() => {
|
|
18914
19098
|
var oCreatedContext, oExpectedEntry;
|
|
18915
19099
|
|
|
19100
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"], [""]]);
|
|
18916
19101
|
assert.strictEqual(oModel.hasPendingChanges(), false);
|
|
18917
19102
|
assert.deepEqual(oModel.getPendingChanges(), {});
|
|
18918
19103
|
|
|
18919
|
-
that.expectValue("itemName", ["qux", "bar", "baz"], 1);
|
|
18920
|
-
|
|
18921
19104
|
// code under test: add node
|
|
18922
19105
|
oCreatedContext = oBinding.createEntry({properties : {ErhaOrderItemName : "qux"}});
|
|
18923
19106
|
oBinding.addContexts(oTable.getContextByIndex(0), [oCreatedContext]);
|
|
@@ -18932,9 +19115,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18932
19115
|
assert.deepEqual(oPendingChanges[sKey], oExpectedEntry);
|
|
18933
19116
|
}
|
|
18934
19117
|
|
|
18935
|
-
return
|
|
18936
|
-
}).then(
|
|
18937
|
-
|
|
19118
|
+
return this.waitForChanges(assert);
|
|
19119
|
+
}).then(() => {
|
|
19120
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["qux"], ["bar"], ["baz"]]);
|
|
18938
19121
|
|
|
18939
19122
|
// code under test: reset added node
|
|
18940
19123
|
oModel.resetChanges();
|
|
@@ -18942,11 +19125,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18942
19125
|
assert.strictEqual(oModel.hasPendingChanges(), false);
|
|
18943
19126
|
assert.deepEqual(oModel.getPendingChanges(), {});
|
|
18944
19127
|
|
|
18945
|
-
return
|
|
18946
|
-
}).then(
|
|
19128
|
+
return this.waitForChanges(assert);
|
|
19129
|
+
}).then(() => {
|
|
18947
19130
|
var oMovedContext = oTable.getContextByIndex(2);
|
|
18948
19131
|
|
|
18949
|
-
|
|
19132
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"], [""]]);
|
|
18950
19133
|
|
|
18951
19134
|
// code under test: move node
|
|
18952
19135
|
oBinding.removeContext(oMovedContext);
|
|
@@ -18960,9 +19143,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18960
19143
|
assert.deepEqual(oPendingChanges[sKey], {HierarchyParentNode : "200"});
|
|
18961
19144
|
}
|
|
18962
19145
|
|
|
18963
|
-
return
|
|
18964
|
-
}).then(
|
|
18965
|
-
|
|
19146
|
+
return this.waitForChanges(assert);
|
|
19147
|
+
}).then(() => {
|
|
19148
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""], [""]]);
|
|
18966
19149
|
|
|
18967
19150
|
// code under test: reset moved node
|
|
18968
19151
|
oModel.resetChanges();
|
|
@@ -18970,11 +19153,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18970
19153
|
assert.strictEqual(oModel.hasPendingChanges(), false);
|
|
18971
19154
|
assert.deepEqual(oModel.getPendingChanges(), {});
|
|
18972
19155
|
|
|
18973
|
-
return
|
|
18974
|
-
}).then(
|
|
19156
|
+
return this.waitForChanges(assert);
|
|
19157
|
+
}).then(() => {
|
|
18975
19158
|
var oRemovedContext = oTable.getContextByIndex(2);
|
|
18976
19159
|
|
|
18977
|
-
|
|
19160
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"], [""]]);
|
|
18978
19161
|
|
|
18979
19162
|
// code under test: remove node
|
|
18980
19163
|
oBinding.removeContext(oRemovedContext);
|
|
@@ -18987,9 +19170,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18987
19170
|
assert.deepEqual(oPendingChanges[sKey], {});
|
|
18988
19171
|
}
|
|
18989
19172
|
|
|
18990
|
-
return
|
|
18991
|
-
}).then(
|
|
18992
|
-
|
|
19173
|
+
return this.waitForChanges(assert);
|
|
19174
|
+
}).then(() => {
|
|
19175
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], [""], [""]]);
|
|
18993
19176
|
|
|
18994
19177
|
// code under test: reset removed node
|
|
18995
19178
|
oModel.resetChanges();
|
|
@@ -18997,9 +19180,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
18997
19180
|
assert.strictEqual(oModel.hasPendingChanges(), false);
|
|
18998
19181
|
assert.deepEqual(oModel.getPendingChanges(), {});
|
|
18999
19182
|
|
|
19000
|
-
return
|
|
19001
|
-
}).then(
|
|
19002
|
-
|
|
19183
|
+
return this.waitForChanges(assert);
|
|
19184
|
+
}).then(() => {
|
|
19185
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"], [""]]);
|
|
19003
19186
|
|
|
19004
19187
|
// code under test: cancelled creation (add)
|
|
19005
19188
|
oCancelledContext = oBinding.createEntry({properties : {ErhaOrderItemName : "qux2"}});
|
|
@@ -19007,9 +19190,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19007
19190
|
|
|
19008
19191
|
// #hasPendingChanges and #getPendingChanges tested in "added case"
|
|
19009
19192
|
|
|
19010
|
-
return
|
|
19011
|
-
}).then(
|
|
19012
|
-
|
|
19193
|
+
return this.waitForChanges(assert);
|
|
19194
|
+
}).then(() => {
|
|
19195
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["qux2"], ["bar"], ["baz"]]);
|
|
19013
19196
|
|
|
19014
19197
|
// code under test: cancelled creation (remove)
|
|
19015
19198
|
oBinding.removeContext(oCancelledContext);
|
|
@@ -19020,7 +19203,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19020
19203
|
// code under test: no request as created entry has been removed again
|
|
19021
19204
|
oModel.submitChanges();
|
|
19022
19205
|
|
|
19023
|
-
return
|
|
19206
|
+
return this.waitForChanges(assert);
|
|
19207
|
+
}).then(() => {
|
|
19208
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"], ["baz"], [""]]);
|
|
19024
19209
|
});
|
|
19025
19210
|
});
|
|
19026
19211
|
|
|
@@ -19043,8 +19228,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19043
19228
|
}"\
|
|
19044
19229
|
visibleRowCount="3">\
|
|
19045
19230
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
19046
|
-
</t:TreeTable>'
|
|
19047
|
-
that = this;
|
|
19231
|
+
</t:TreeTable>';
|
|
19048
19232
|
|
|
19049
19233
|
this.expectHeadRequest()
|
|
19050
19234
|
.expectRequest({
|
|
@@ -19102,30 +19286,30 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19102
19286
|
HierarchyPreorderRank : 3,
|
|
19103
19287
|
HierarchySiblingRank : 2
|
|
19104
19288
|
}]
|
|
19105
|
-
})
|
|
19106
|
-
.expectValue("itemName", ["099", "100", "110"]);
|
|
19289
|
+
});
|
|
19107
19290
|
|
|
19108
|
-
return this.createView(assert, sView, oModel).then(
|
|
19109
|
-
oTable =
|
|
19291
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
19292
|
+
oTable = this.oView.byId("table");
|
|
19110
19293
|
oBinding = oTable.getBinding("rows");
|
|
19111
19294
|
|
|
19295
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
19296
|
+
assert.deepEqual(getTableContent(oTable), [["099"], ["100"], ["110"]]);
|
|
19112
19297
|
assert.strictEqual(oBinding.isExpanded(1), true, "row 2 expanded");
|
|
19113
19298
|
assert.strictEqual(oBinding.isExpanded(3), false, "row 4 collapsed");
|
|
19114
19299
|
assert.strictEqual(oBinding.getLength(), 4, "initial binding length is 3");
|
|
19115
19300
|
|
|
19116
|
-
return
|
|
19117
|
-
}).then(
|
|
19118
|
-
that.expectValue("itemName", "200", 2);
|
|
19119
|
-
|
|
19301
|
+
return this.waitForChanges(assert);
|
|
19302
|
+
}).then(() => {
|
|
19120
19303
|
// code under test
|
|
19121
19304
|
oBinding.collapse(1);
|
|
19122
19305
|
|
|
19123
19306
|
assert.strictEqual(oBinding.getLength(), 3,
|
|
19124
19307
|
"first collapse reduces binding length to 3");
|
|
19125
19308
|
|
|
19126
|
-
return
|
|
19127
|
-
}).then(
|
|
19128
|
-
|
|
19309
|
+
return this.waitForChanges(assert);
|
|
19310
|
+
}).then(() => {
|
|
19311
|
+
assert.deepEqual(getTableContent(oTable), [["099"], ["100"], ["200"]]);
|
|
19312
|
+
this.expectRequest({
|
|
19129
19313
|
batchNo : 2,
|
|
19130
19314
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=103&$inlinecount=allpages&"
|
|
19131
19315
|
+ "$filter=HierarchyParentNode eq '200'"
|
|
@@ -19149,8 +19333,9 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19149
19333
|
// code under test
|
|
19150
19334
|
oBinding.expand(2);
|
|
19151
19335
|
|
|
19152
|
-
return
|
|
19153
|
-
}).then(
|
|
19336
|
+
return this.waitForChanges(assert);
|
|
19337
|
+
}).then(() => {
|
|
19338
|
+
assert.deepEqual(getTableContent(oTable), [["099"], ["100"], ["200"]]);
|
|
19154
19339
|
assert.strictEqual(oBinding.isExpanded(2), true, "row 2 expanded");
|
|
19155
19340
|
assert.strictEqual(oBinding.getLength(), 4,
|
|
19156
19341
|
"expand of row 2 increases binding length to 4");
|
|
@@ -19177,8 +19362,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19177
19362
|
}"\
|
|
19178
19363
|
visibleRowCount="2">\
|
|
19179
19364
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
19180
|
-
</t:TreeTable>'
|
|
19181
|
-
that = this;
|
|
19365
|
+
</t:TreeTable>';
|
|
19182
19366
|
|
|
19183
19367
|
this.expectHeadRequest()
|
|
19184
19368
|
.expectRequest({
|
|
@@ -19200,13 +19384,15 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19200
19384
|
HierarchyPreorderRank : 0,
|
|
19201
19385
|
HierarchySiblingRank : 0
|
|
19202
19386
|
}]
|
|
19203
|
-
})
|
|
19204
|
-
.expectValue("itemName", ["foo", ""]);
|
|
19387
|
+
});
|
|
19205
19388
|
|
|
19206
|
-
return this.createView(assert, sView, oModel).then(
|
|
19207
|
-
oTable =
|
|
19389
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
19390
|
+
oTable = this.oView.byId("table");
|
|
19208
19391
|
oBinding = oTable.getBinding("rows");
|
|
19209
19392
|
|
|
19393
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
19394
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], [""]]);
|
|
19395
|
+
|
|
19210
19396
|
// code under test: add node
|
|
19211
19397
|
oCreatedContext = oBinding.createEntry({
|
|
19212
19398
|
properties : {ErhaOrderItemName : "bar", HierarchyNode : "~key~"}});
|
|
@@ -19214,18 +19400,18 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19214
19400
|
|
|
19215
19401
|
assert.strictEqual(oBinding.isExpanded(0), false);
|
|
19216
19402
|
|
|
19217
|
-
return
|
|
19218
|
-
}).then(
|
|
19219
|
-
that.expectValue("itemName", ["bar"], 1);
|
|
19220
|
-
|
|
19403
|
+
return this.waitForChanges(assert);
|
|
19404
|
+
}).then(() => {
|
|
19221
19405
|
// code under test
|
|
19222
19406
|
oTable.expand(0);
|
|
19223
19407
|
|
|
19224
19408
|
assert.strictEqual(oBinding.isExpanded(0), true);
|
|
19225
19409
|
|
|
19226
|
-
return
|
|
19227
|
-
}).then(
|
|
19228
|
-
|
|
19410
|
+
return this.waitForChanges(assert);
|
|
19411
|
+
}).then(() => {
|
|
19412
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"]]);
|
|
19413
|
+
|
|
19414
|
+
this.expectRequest({ // POST for entity creation
|
|
19229
19415
|
batchNo : 2,
|
|
19230
19416
|
created : true,
|
|
19231
19417
|
data : {
|
|
@@ -19317,13 +19503,198 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
19317
19503
|
|
|
19318
19504
|
return Promise.all([
|
|
19319
19505
|
oCreatedContext.created(),
|
|
19320
|
-
|
|
19506
|
+
this.waitForChanges(assert)
|
|
19321
19507
|
]);
|
|
19322
19508
|
}).then(function () {
|
|
19509
|
+
assert.deepEqual(getTableContent(oTable), [["foo"], ["bar"]]);
|
|
19323
19510
|
assert.strictEqual(oBinding.isExpanded(0), true, "expanded state is restored");
|
|
19324
19511
|
});
|
|
19325
19512
|
});
|
|
19326
19513
|
|
|
19514
|
+
//*********************************************************************************************
|
|
19515
|
+
// Scenario: All read requests of the ODataTreeBindingFlat, consider "transitionMessagesOnly" parameter.
|
|
19516
|
+
// JIRA: CPOUI5MODELS-1437
|
|
19517
|
+
QUnit.test("ODataTreeBindingFlat: transitionMessagesOnly", function (assert) {
|
|
19518
|
+
const oModel = createHierarchyMaintenanceModel();
|
|
19519
|
+
let oTable;
|
|
19520
|
+
const sView = '\
|
|
19521
|
+
<t:TreeTable id="table"\
|
|
19522
|
+
rows="{\
|
|
19523
|
+
parameters: {countMode: \'Inline\', numberOfExpandedLevels: 1, transitionMessagesOnly: true},\
|
|
19524
|
+
path: \'/ErhaOrder(\\\'1\\\')/to_Item\'\
|
|
19525
|
+
}"\
|
|
19526
|
+
visibleRowCount="4">\
|
|
19527
|
+
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
19528
|
+
</t:TreeTable>';
|
|
19529
|
+
|
|
19530
|
+
this.expectHeadRequest()
|
|
19531
|
+
.expectRequest({ // triggered by ODataTreeBindingFlat#_requestServerIndexNodes
|
|
19532
|
+
batchNo: 1,
|
|
19533
|
+
headers: {"sap-messages": "transientOnly"},
|
|
19534
|
+
requestUri: "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
19535
|
+
+ "&$filter=HierarchyDistanceFromRoot le 1"
|
|
19536
|
+
}, {
|
|
19537
|
+
__count: "4",
|
|
19538
|
+
results: [{
|
|
19539
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='0')"},
|
|
19540
|
+
ErhaOrder: "1",
|
|
19541
|
+
ErhaOrderItem: "0",
|
|
19542
|
+
ErhaOrderItemName: "0",
|
|
19543
|
+
HierarchyParentNode: "",
|
|
19544
|
+
HierarchyDescendantCount: 0,
|
|
19545
|
+
HierarchyDistanceFromRoot: 0,
|
|
19546
|
+
HierarchyDrillState: "leaf",
|
|
19547
|
+
HierarchyNode: "0",
|
|
19548
|
+
HierarchyPreorderRank: 0,
|
|
19549
|
+
HierarchySiblingRank: 0
|
|
19550
|
+
}, {
|
|
19551
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1')"},
|
|
19552
|
+
ErhaOrder: "1",
|
|
19553
|
+
ErhaOrderItem: "1",
|
|
19554
|
+
ErhaOrderItemName: "1",
|
|
19555
|
+
HierarchyParentNode: "",
|
|
19556
|
+
HierarchyDescendantCount: 2,
|
|
19557
|
+
HierarchyDistanceFromRoot: 0,
|
|
19558
|
+
HierarchyDrillState: "expanded",
|
|
19559
|
+
HierarchyNode: "1",
|
|
19560
|
+
HierarchyPreorderRank: 1,
|
|
19561
|
+
HierarchySiblingRank: 1
|
|
19562
|
+
}, {
|
|
19563
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.0')"},
|
|
19564
|
+
ErhaOrder: "1",
|
|
19565
|
+
ErhaOrderItem: "1.0",
|
|
19566
|
+
ErhaOrderItemName: "1.0",
|
|
19567
|
+
HierarchyParentNode: "1",
|
|
19568
|
+
HierarchyDescendantCount: 0,
|
|
19569
|
+
HierarchyDistanceFromRoot: 1,
|
|
19570
|
+
HierarchyDrillState: "collapsed",
|
|
19571
|
+
HierarchyNode: "1.0",
|
|
19572
|
+
HierarchyPreorderRank: 2,
|
|
19573
|
+
HierarchySiblingRank: 0
|
|
19574
|
+
}, {
|
|
19575
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.1')"},
|
|
19576
|
+
ErhaOrder: "1",
|
|
19577
|
+
ErhaOrderItem: "1.1",
|
|
19578
|
+
ErhaOrderItemName: "1.1",
|
|
19579
|
+
HierarchyParentNode: "1",
|
|
19580
|
+
HierarchyDescendantCount: 0,
|
|
19581
|
+
HierarchyDistanceFromRoot: 1,
|
|
19582
|
+
HierarchyDrillState: "leaf",
|
|
19583
|
+
HierarchyNode: "1.1",
|
|
19584
|
+
HierarchyPreorderRank: 3,
|
|
19585
|
+
HierarchySiblingRank: 1
|
|
19586
|
+
}]
|
|
19587
|
+
});
|
|
19588
|
+
|
|
19589
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
19590
|
+
oTable = this.oView.byId("table");
|
|
19591
|
+
|
|
19592
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
19593
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"], ["1.0"], ["1.1"]]);
|
|
19594
|
+
|
|
19595
|
+
this.expectRequest({ // triggered by ODataTreeBindingFlat#_requestChildren
|
|
19596
|
+
batchNo: 2,
|
|
19597
|
+
headers: {"sap-messages": "transientOnly"},
|
|
19598
|
+
requestUri: "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
19599
|
+
+ "&$filter=HierarchyParentNode eq '1.0'"
|
|
19600
|
+
}, {
|
|
19601
|
+
__count: "1",
|
|
19602
|
+
results: [{
|
|
19603
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.0.0')"},
|
|
19604
|
+
ErhaOrder: "1",
|
|
19605
|
+
ErhaOrderItem: "1.0.0",
|
|
19606
|
+
ErhaOrderItemName: "1.0.0",
|
|
19607
|
+
HierarchyParentNode: "1.0",
|
|
19608
|
+
HierarchyDescendantCount: 0,
|
|
19609
|
+
HierarchyDistanceFromRoot: 2,
|
|
19610
|
+
HierarchyDrillState: "leaf",
|
|
19611
|
+
HierarchyNode: "1.0.0",
|
|
19612
|
+
HierarchyPreorderRank: 0,
|
|
19613
|
+
HierarchySiblingRank: 0
|
|
19614
|
+
}]
|
|
19615
|
+
});
|
|
19616
|
+
|
|
19617
|
+
// code under test
|
|
19618
|
+
oTable.expand(2);
|
|
19619
|
+
|
|
19620
|
+
return this.waitForChanges(assert, "expand node '1.0'");
|
|
19621
|
+
}).then(() => {
|
|
19622
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"], ["1.0"], ["1.0.0"]]);
|
|
19623
|
+
|
|
19624
|
+
// code under test
|
|
19625
|
+
oTable.collapse(1);
|
|
19626
|
+
|
|
19627
|
+
return this.waitForChanges(assert, "collapse node '1'");
|
|
19628
|
+
}).then(() => {
|
|
19629
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"], [""], [""]]);
|
|
19630
|
+
|
|
19631
|
+
this.expectRequest({ // triggered by ODataTreeBindingFlat#_requestSubTree
|
|
19632
|
+
batchNo: 3,
|
|
19633
|
+
headers: {"sap-messages": "transientOnly"},
|
|
19634
|
+
requestUri: "ErhaOrder('1')/to_Item?$filter=HierarchyNode eq '1' and HierarchyDistanceFromRoot le 2"
|
|
19635
|
+
}, {
|
|
19636
|
+
__count: "3",
|
|
19637
|
+
results: [{
|
|
19638
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1')"},
|
|
19639
|
+
ErhaOrder: "1",
|
|
19640
|
+
ErhaOrderItem: "1",
|
|
19641
|
+
ErhaOrderItemName: "1",
|
|
19642
|
+
HierarchyParentNode: "",
|
|
19643
|
+
HierarchyDescendantCount: 3,
|
|
19644
|
+
HierarchyDistanceFromRoot: 0,
|
|
19645
|
+
HierarchyDrillState: "expanded",
|
|
19646
|
+
HierarchyNode: "1",
|
|
19647
|
+
HierarchyPreorderRank: 1,
|
|
19648
|
+
HierarchySiblingRank: 1
|
|
19649
|
+
}, {
|
|
19650
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.0')"},
|
|
19651
|
+
ErhaOrder: "1",
|
|
19652
|
+
ErhaOrderItem: "1.0",
|
|
19653
|
+
ErhaOrderItemName: "1.0",
|
|
19654
|
+
HierarchyParentNode: "1",
|
|
19655
|
+
HierarchyDescendantCount: 1,
|
|
19656
|
+
HierarchyDistanceFromRoot: 1,
|
|
19657
|
+
HierarchyDrillState: "expanded",
|
|
19658
|
+
HierarchyNode: "1.0",
|
|
19659
|
+
HierarchyPreorderRank: 2,
|
|
19660
|
+
HierarchySiblingRank: 0
|
|
19661
|
+
}, {
|
|
19662
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.0.0')"},
|
|
19663
|
+
ErhaOrder: "1",
|
|
19664
|
+
ErhaOrderItem: "1.0.0",
|
|
19665
|
+
ErhaOrderItemName: "1.0.0",
|
|
19666
|
+
HierarchyParentNode: "1.0",
|
|
19667
|
+
HierarchyDescendantCount: 0,
|
|
19668
|
+
HierarchyDistanceFromRoot: 2,
|
|
19669
|
+
HierarchyDrillState: "leaf",
|
|
19670
|
+
HierarchyNode: "1.0.0",
|
|
19671
|
+
HierarchyPreorderRank: 0,
|
|
19672
|
+
HierarchySiblingRank: 0
|
|
19673
|
+
}, {
|
|
19674
|
+
__metadata: {uri: "ErhaOrderItem(ErhaOrder='1',ErhaOrderItem='1.1')"},
|
|
19675
|
+
ErhaOrder: "1",
|
|
19676
|
+
ErhaOrderItem: "1.1",
|
|
19677
|
+
ErhaOrderItemName: "1.1",
|
|
19678
|
+
HierarchyParentNode: "1",
|
|
19679
|
+
HierarchyDescendantCount: 0,
|
|
19680
|
+
HierarchyDistanceFromRoot: 1,
|
|
19681
|
+
HierarchyDrillState: "leaf",
|
|
19682
|
+
HierarchyNode: "1.1",
|
|
19683
|
+
HierarchyPreorderRank: 3,
|
|
19684
|
+
HierarchySiblingRank: 1
|
|
19685
|
+
}]
|
|
19686
|
+
});
|
|
19687
|
+
|
|
19688
|
+
return Promise.all([
|
|
19689
|
+
// code under test
|
|
19690
|
+
oTable.getBinding("rows").expandNodeToLevel(1, 2),
|
|
19691
|
+
this.waitForChanges(assert, "expand node '1' to level 2")
|
|
19692
|
+
]);
|
|
19693
|
+
}).then(() => {
|
|
19694
|
+
assert.deepEqual(getTableContent(oTable), [["0"], ["1"], ["1.0"], ["1.0.0"]]);
|
|
19695
|
+
});
|
|
19696
|
+
});
|
|
19697
|
+
|
|
19327
19698
|
//*********************************************************************************************
|
|
19328
19699
|
// Scenario: A table has an inactive created entity. After rebinding the table and activating
|
|
19329
19700
|
// this inactive entity, the createActivate-event of the ODataListBinding is properly handled.
|
|
@@ -20079,7 +20450,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20079
20450
|
]
|
|
20080
20451
|
})
|
|
20081
20452
|
.expectValue("SalesOrderID", ["1", "2"])
|
|
20082
|
-
.expectValue("CreatedAt", ["Jan 25, 2023, 12:00:00
|
|
20453
|
+
.expectValue("CreatedAt", ["Jan 25, 2023, 12:00:00\u202FAM", "Jan 29, 2023, 11:00:00\u202FPM"]);
|
|
20083
20454
|
|
|
20084
20455
|
return this.createView(assert, sView, mModels).then(function () {
|
|
20085
20456
|
that.oView.byId("DateRangeSelection").setValue("Jan 30, 2023 - Jan 31, 2023");
|
|
@@ -20087,7 +20458,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20087
20458
|
return that.waitForChanges(assert);
|
|
20088
20459
|
}).then(function () {
|
|
20089
20460
|
that.expectValue("SalesOrderID", ["3"])
|
|
20090
|
-
.expectValue("CreatedAt", ["Jan 31, 2023, 11:00:00
|
|
20461
|
+
.expectValue("CreatedAt", ["Jan 31, 2023, 11:00:00\u202FPM"]);
|
|
20091
20462
|
|
|
20092
20463
|
// code under test
|
|
20093
20464
|
that.oView.byId("Table").getBinding("items").filter(new Filter({
|
|
@@ -20453,8 +20824,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20453
20824
|
}"\
|
|
20454
20825
|
visibleRowCount="4">\
|
|
20455
20826
|
<Text id="itemName" text="{ErhaOrderItemName}" />\
|
|
20456
|
-
</t:TreeTable>'
|
|
20457
|
-
that = this;
|
|
20827
|
+
</t:TreeTable>';
|
|
20458
20828
|
|
|
20459
20829
|
this.expectHeadRequest()
|
|
20460
20830
|
.expectRequest({
|
|
@@ -20465,13 +20835,15 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20465
20835
|
}, {
|
|
20466
20836
|
__count : "1",
|
|
20467
20837
|
results : [oNode050]
|
|
20468
|
-
})
|
|
20469
|
-
.expectValue("itemName", ["node050", "", "", ""]);
|
|
20838
|
+
});
|
|
20470
20839
|
|
|
20471
|
-
return this.createView(assert, sView, oModel).then(
|
|
20472
|
-
oTable =
|
|
20840
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
20841
|
+
oTable = this.oView.byId("table");
|
|
20473
20842
|
|
|
20474
|
-
|
|
20843
|
+
// don't use expectValue to avoid timing issues causing flaky tests
|
|
20844
|
+
assert.deepEqual(getTableContent(oTable), [["node050"], [""], [""], [""]]);
|
|
20845
|
+
|
|
20846
|
+
this.expectRequest({
|
|
20475
20847
|
batchNo : 2,
|
|
20476
20848
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
20477
20849
|
+ "&$filter=HierarchyDistanceFromRoot le 0"
|
|
@@ -20479,8 +20851,7 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20479
20851
|
}, {
|
|
20480
20852
|
__count : "1",
|
|
20481
20853
|
results : [oNode100]
|
|
20482
|
-
})
|
|
20483
|
-
.expectValue("itemName", ["node100"], 0);
|
|
20854
|
+
});
|
|
20484
20855
|
|
|
20485
20856
|
// code under test
|
|
20486
20857
|
oTable.getBinding("rows").filter([
|
|
@@ -20488,9 +20859,11 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20488
20859
|
new Filter("CreatedByUser", FilterOperator.EQ, "user3")
|
|
20489
20860
|
], FilterType.Application);
|
|
20490
20861
|
|
|
20491
|
-
return
|
|
20492
|
-
}).then(
|
|
20493
|
-
|
|
20862
|
+
return this.waitForChanges(assert);
|
|
20863
|
+
}).then(() => {
|
|
20864
|
+
assert.deepEqual(getTableContent(oTable), [["node100"], [""], [""], [""]]);
|
|
20865
|
+
|
|
20866
|
+
this.expectRequest({
|
|
20494
20867
|
batchNo : 3,
|
|
20495
20868
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
20496
20869
|
+ "&$filter=HierarchyParentNode eq '100'"
|
|
@@ -20498,27 +20871,29 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20498
20871
|
}, {
|
|
20499
20872
|
__count : "2",
|
|
20500
20873
|
results : [oNode200, oNode300]
|
|
20501
|
-
})
|
|
20502
|
-
.expectValue("itemName", ["node200", "node300"], 1);
|
|
20874
|
+
});
|
|
20503
20875
|
|
|
20504
20876
|
oTable.expand(0);
|
|
20505
20877
|
|
|
20506
|
-
return
|
|
20507
|
-
}).then(
|
|
20508
|
-
|
|
20878
|
+
return this.waitForChanges(assert);
|
|
20879
|
+
}).then(() => {
|
|
20880
|
+
assert.deepEqual(getTableContent(oTable), [["node100"], ["node200"], ["node300"], [""]]);
|
|
20881
|
+
|
|
20882
|
+
this.expectRequest({
|
|
20509
20883
|
batchNo : 4,
|
|
20510
20884
|
requestUri : "ErhaOrder('1')/to_Item?$skip=0&$top=104&$inlinecount=allpages"
|
|
20511
20885
|
+ "&$filter=HierarchyDistanceFromRoot le 0"
|
|
20512
20886
|
}, {
|
|
20513
20887
|
__count : "2",
|
|
20514
20888
|
results : [oNode050, oNode100NoFilter]
|
|
20515
|
-
})
|
|
20516
|
-
.expectValue("itemName", ["node050", "node100", ""]);
|
|
20889
|
+
});
|
|
20517
20890
|
|
|
20518
20891
|
// code under test
|
|
20519
20892
|
oTable.getBinding("rows").filter([], FilterType.Application);
|
|
20520
20893
|
|
|
20521
|
-
return
|
|
20894
|
+
return this.waitForChanges(assert);
|
|
20895
|
+
}).then(() => {
|
|
20896
|
+
assert.deepEqual(getTableContent(oTable), [["node050"], ["node100"], [""], [""]]);
|
|
20522
20897
|
});
|
|
20523
20898
|
});
|
|
20524
20899
|
|
|
@@ -20814,11 +21189,14 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20814
21189
|
checkServiceCache(["token0", "token1"]);
|
|
20815
21190
|
}).finally(clearCaches);
|
|
20816
21191
|
});
|
|
21192
|
+
|
|
20817
21193
|
//*********************************************************************************************
|
|
20818
21194
|
// Scenario: For a table where transient entries have messages, the filter returned by requestFilterForMessages does
|
|
20819
|
-
// not refer to these entries. For the BCP incident, check the case no item loaded from the backend has a
|
|
20820
|
-
// the filter is
|
|
21195
|
+
// not refer to these entries. For the BCP incident, check the case that no item loaded from the backend has a
|
|
21196
|
+
// message: the filter is Filter.NONE then.
|
|
20821
21197
|
// BCP: 2370088390
|
|
21198
|
+
// When the list is filtered only the transient entry is shown and no entries are requested.
|
|
21199
|
+
// JIRA: CPOUI5MODELS-1421
|
|
20822
21200
|
QUnit.test("Filter table where only transient items have messages", function (assert) {
|
|
20823
21201
|
let oCreatedContext, oRowsBinding;
|
|
20824
21202
|
const oModel = createSalesOrdersModel({preliminaryContext : true});
|
|
@@ -20878,7 +21256,289 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
|
|
|
20878
21256
|
this.waitForChanges(assert)
|
|
20879
21257
|
]);
|
|
20880
21258
|
}).then((aResults) => {
|
|
20881
|
-
assert.strictEqual(aResults[0],
|
|
21259
|
+
assert.strictEqual(aResults[0], Filter.NONE, "Filter.NONE message filter, only transient item has message");
|
|
21260
|
+
|
|
21261
|
+
this.expectValue("itemPosition", "", 1)
|
|
21262
|
+
.expectValue("note", "", 1);
|
|
21263
|
+
|
|
21264
|
+
oRowsBinding.filter(aResults[0], FilterType.Application);
|
|
21265
|
+
|
|
21266
|
+
return this.waitForChanges(assert);
|
|
21267
|
+
});
|
|
21268
|
+
});
|
|
21269
|
+
|
|
21270
|
+
//*********************************************************************************************
|
|
21271
|
+
// Scenario: For a table where only transient entries have messages, the filter returned by requestFilterForMessages
|
|
21272
|
+
// is Filter.NONE. When the list is filtered, only the transient entries are shown and no $filter and no $count
|
|
21273
|
+
// request occurs. It is still possible to create new inactive entries. Check that count and length of the binding
|
|
21274
|
+
// is always correct.
|
|
21275
|
+
// JIRA:CPOUI5MODELS-1421
|
|
21276
|
+
["Default", "Client"].forEach((sOperationMode) => {
|
|
21277
|
+
const sTitle = "Filter table where only transient items have messages: operation mode=" + sOperationMode;
|
|
21278
|
+
QUnit.test(sTitle, function (assert) {
|
|
21279
|
+
let oMessage, oRowsBinding, oTable;
|
|
21280
|
+
let aExpectedMessages = [];
|
|
21281
|
+
const oModel = createSalesOrdersModel({
|
|
21282
|
+
defaultBindingMode : BindingMode.TwoWay,
|
|
21283
|
+
defaultCountMode : CountMode.Request,
|
|
21284
|
+
defaultOperationMode : sOperationMode,
|
|
21285
|
+
preliminaryContext : true
|
|
21286
|
+
});
|
|
21287
|
+
const sView = '\
|
|
21288
|
+
<t:Table id="table" rows="{/SalesOrderSet(\'1\')/ToLineItems}" visibleRowCount="3">\
|
|
21289
|
+
<Input id="itemPosition" value="{ItemPosition}" />\
|
|
21290
|
+
<Input id="note" value="{Note}" />\
|
|
21291
|
+
</t:Table>';
|
|
21292
|
+
const that = this;
|
|
21293
|
+
|
|
21294
|
+
/* Prevents activation of passed inactive context, adds a message to the message model for
|
|
21295
|
+
this context, creates another inactive context at the end if ItemPosition is empty.*/
|
|
21296
|
+
function onCreateActivate(oEvent) {
|
|
21297
|
+
const oCreatedContext = oEvent.getParameter("context");
|
|
21298
|
+
if (!oCreatedContext.getObject("").ItemPosition) {
|
|
21299
|
+
oMessage = {
|
|
21300
|
+
message : "Item position is required",
|
|
21301
|
+
type : "Error",
|
|
21302
|
+
target : oCreatedContext.getPath() + "/ItemPosition",
|
|
21303
|
+
fullTarget : oCreatedContext.getDeepPath() + "/ItemPosition",
|
|
21304
|
+
processor : oModel
|
|
21305
|
+
};
|
|
21306
|
+
aExpectedMessages.push(oMessage);
|
|
21307
|
+
that.expectMessages(aExpectedMessages);
|
|
21308
|
+
Messaging.addMessages(new Message(oMessage));
|
|
21309
|
+
oEvent.preventDefault();
|
|
21310
|
+
} else {
|
|
21311
|
+
const aCurrentMessages = Messaging.getMessageModel().getObject("/");
|
|
21312
|
+
aCurrentMessages.some((oMessage) => {
|
|
21313
|
+
if (oMessage.getTargets()[0] === oCreatedContext.getPath() + "/ItemPosition") {
|
|
21314
|
+
Messaging.removeMessages(oMessage);
|
|
21315
|
+
aExpectedMessages = aExpectedMessages.slice(0, 1);
|
|
21316
|
+
return true;
|
|
21317
|
+
}
|
|
21318
|
+
return false;
|
|
21319
|
+
});
|
|
21320
|
+
that.expectMessages(aExpectedMessages);
|
|
21321
|
+
|
|
21322
|
+
return; // do not create another inactive row
|
|
21323
|
+
}
|
|
21324
|
+
|
|
21325
|
+
// code under test - create works also if binding length is not final but Filter.NONE is set
|
|
21326
|
+
oRowsBinding.create({}, /*bAtEnd*/ true, {inactive: true});
|
|
21327
|
+
}
|
|
21328
|
+
|
|
21329
|
+
this.expectHeadRequest()
|
|
21330
|
+
.expectRequest("SalesOrderSet('1')/ToLineItems/$count", "1")
|
|
21331
|
+
.expectRequest({
|
|
21332
|
+
requestUri : "SalesOrderSet('1')/ToLineItems"
|
|
21333
|
+
+ (sOperationMode === "Default" ? "?$skip=0&$top=103" : "")
|
|
21334
|
+
}, {
|
|
21335
|
+
results : [{
|
|
21336
|
+
__metadata : {
|
|
21337
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='10')"
|
|
21338
|
+
},
|
|
21339
|
+
Note : "Bar",
|
|
21340
|
+
ItemPosition : "10",
|
|
21341
|
+
SalesOrderID : "1"
|
|
21342
|
+
}]
|
|
21343
|
+
})
|
|
21344
|
+
.expectValue("itemPosition", ["10", "", ""])
|
|
21345
|
+
.expectValue("note", ["Bar", "", ""]);
|
|
21346
|
+
|
|
21347
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
21348
|
+
oTable = this.oView.byId("table");
|
|
21349
|
+
oRowsBinding = oTable.getBinding("rows");
|
|
21350
|
+
oRowsBinding.attachCreateActivate(onCreateActivate);
|
|
21351
|
+
oRowsBinding.create({}, /*bAtEnd*/ true, {inactive: true});
|
|
21352
|
+
|
|
21353
|
+
assert.strictEqual(oRowsBinding.getCount(), 1, "1 active entry - count 1");
|
|
21354
|
+
assert.strictEqual(oRowsBinding.getLength(), 2, "length is 2");
|
|
21355
|
+
|
|
21356
|
+
return this.waitForChanges(assert);
|
|
21357
|
+
}).then(() => {
|
|
21358
|
+
this.expectValue("note", "Foo", 1)
|
|
21359
|
+
.expectValueState(oTable.getRows()[0].getCells()[0], "None", "")
|
|
21360
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "Error", "Item position is required")
|
|
21361
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21362
|
+
|
|
21363
|
+
oTable.getRows()[1].getCells()[1].setValue("Foo");
|
|
21364
|
+
|
|
21365
|
+
return this.waitForChanges(assert);
|
|
21366
|
+
}).then(() => {
|
|
21367
|
+
assert.strictEqual(oRowsBinding.getCount(), 1, "1 active entry - count 1");
|
|
21368
|
+
assert.strictEqual(oRowsBinding.getLength(), 3, "length is 3");
|
|
21369
|
+
|
|
21370
|
+
return Promise.all([
|
|
21371
|
+
oRowsBinding.requestFilterForMessages(),
|
|
21372
|
+
this.waitForChanges(assert)
|
|
21373
|
+
]);
|
|
21374
|
+
}).then((aResults) => {
|
|
21375
|
+
assert.strictEqual(aResults[0], Filter.NONE, "only transient items have messages");
|
|
21376
|
+
|
|
21377
|
+
this.expectValue("itemPosition", "", 0)
|
|
21378
|
+
.expectValue("note", "Foo", 0)
|
|
21379
|
+
.expectValue("note", "", 1)
|
|
21380
|
+
.expectValueState(oTable.getRows()[0].getCells()[0], "Error", "Item position is required")
|
|
21381
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "None", "")
|
|
21382
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21383
|
+
|
|
21384
|
+
// code under test - no requests
|
|
21385
|
+
oRowsBinding.filter(aResults[0], FilterType.Application);
|
|
21386
|
+
|
|
21387
|
+
assert.strictEqual(oRowsBinding.getCount(), 0, "no active entry - count 0");
|
|
21388
|
+
assert.strictEqual(oRowsBinding.getLength(), 2, "length is 2");
|
|
21389
|
+
|
|
21390
|
+
return this.waitForChanges(assert);
|
|
21391
|
+
}).then(() => {
|
|
21392
|
+
this.expectValue("note", "Bar", 1)
|
|
21393
|
+
.expectValueState(oTable.getRows()[0].getCells()[0], "Error", "Item position is required")
|
|
21394
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "Error", "Item position is required")
|
|
21395
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21396
|
+
|
|
21397
|
+
oTable.getRows()[1].getCells()[1].setValue("Bar");
|
|
21398
|
+
|
|
21399
|
+
return this.waitForChanges(assert);
|
|
21400
|
+
}).then(() => {
|
|
21401
|
+
this.expectValue("itemPosition", "30", 1)
|
|
21402
|
+
.expectValueState(oTable.getRows()[0].getCells()[0], "Error", "Item position is required")
|
|
21403
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "None", "")
|
|
21404
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21405
|
+
|
|
21406
|
+
oTable.getRows()[1].getCells()[0].setValue("30");
|
|
21407
|
+
|
|
21408
|
+
return this.waitForChanges(assert);
|
|
21409
|
+
}).then(() => {
|
|
21410
|
+
assert.strictEqual(oRowsBinding.getCount(), 1, "one active entry - count 1");
|
|
21411
|
+
assert.strictEqual(oRowsBinding.getLength(), 3, "length is 3");
|
|
21412
|
+
if (sOperationMode === "Default" ) {
|
|
21413
|
+
this.expectRequest("SalesOrderSet('1')/ToLineItems/$count", "1")
|
|
21414
|
+
.expectRequest({
|
|
21415
|
+
requestUri : "SalesOrderSet('1')/ToLineItems?$skip=0&$top=103"
|
|
21416
|
+
}, {
|
|
21417
|
+
results : [{
|
|
21418
|
+
__metadata : {
|
|
21419
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='10')"
|
|
21420
|
+
},
|
|
21421
|
+
Note : "Bar",
|
|
21422
|
+
ItemPosition : "10",
|
|
21423
|
+
SalesOrderID : "1"
|
|
21424
|
+
}]
|
|
21425
|
+
});
|
|
21426
|
+
}
|
|
21427
|
+
this.expectValue("itemPosition", ["10", "", "30"])
|
|
21428
|
+
.expectValue("note", ["Bar", "Foo", "Bar"]);
|
|
21429
|
+
|
|
21430
|
+
// code under test
|
|
21431
|
+
oRowsBinding.filter([], FilterType.Application);
|
|
21432
|
+
|
|
21433
|
+
return this.waitForChanges(assert);
|
|
21434
|
+
}).then(() => {
|
|
21435
|
+
assert.strictEqual(oRowsBinding.getCount(), 2, "1 active entry - count 1");
|
|
21436
|
+
assert.strictEqual(oRowsBinding.getLength(), 4, "length is 4");
|
|
21437
|
+
|
|
21438
|
+
return Promise.all([
|
|
21439
|
+
// code under test (filter out all messages)
|
|
21440
|
+
oRowsBinding.requestFilterForMessages(() => false),
|
|
21441
|
+
this.waitForChanges(assert)
|
|
21442
|
+
]);
|
|
21443
|
+
}).then((aResults) => {
|
|
21444
|
+
assert.strictEqual(aResults[0], null);
|
|
21445
|
+
});
|
|
21446
|
+
});
|
|
21447
|
+
});
|
|
21448
|
+
|
|
21449
|
+
//*********************************************************************************************
|
|
21450
|
+
// Scenario: The data state of a control in a table needs to be reevaluated if the row context changes but the
|
|
21451
|
+
// value of the property binding does not change.
|
|
21452
|
+
// JIRA: CPOUI5MODELS-1421
|
|
21453
|
+
QUnit.test("Filter table with messages, every line has the correct data state", function (assert) {
|
|
21454
|
+
let oRowsBinding, oTable;
|
|
21455
|
+
const oModel = createSalesOrdersModel({preliminaryContext : true});
|
|
21456
|
+
const oResponseMessage = this.createResponseMessage("(SalesOrderID='1',ItemPosition='20')/Note",
|
|
21457
|
+
"~errorMessage");
|
|
21458
|
+
const sView = '\
|
|
21459
|
+
<t:Table id="table" rows="{/SalesOrderSet(\'1\')/ToLineItems}" visibleRowCount="3">\
|
|
21460
|
+
<Input id="note" value="{Note}" />\
|
|
21461
|
+
</t:Table>';
|
|
21462
|
+
|
|
21463
|
+
this.expectHeadRequest()
|
|
21464
|
+
.expectRequest({
|
|
21465
|
+
requestUri : "SalesOrderSet('1')/ToLineItems?$skip=0&$top=103"
|
|
21466
|
+
}, {
|
|
21467
|
+
results : [{
|
|
21468
|
+
__metadata : {
|
|
21469
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='10')"
|
|
21470
|
+
},
|
|
21471
|
+
Note : "Bar",
|
|
21472
|
+
ItemPosition : "10",
|
|
21473
|
+
SalesOrderID : "1"
|
|
21474
|
+
}, {
|
|
21475
|
+
__metadata : {
|
|
21476
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='20')"
|
|
21477
|
+
},
|
|
21478
|
+
Note : "Baz",
|
|
21479
|
+
ItemPosition : "20",
|
|
21480
|
+
SalesOrderID : "1"
|
|
21481
|
+
}, {
|
|
21482
|
+
__metadata : {
|
|
21483
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='30')"
|
|
21484
|
+
},
|
|
21485
|
+
Note : "Baz", // same value as for 20
|
|
21486
|
+
ItemPosition : "30",
|
|
21487
|
+
SalesOrderID : "1"
|
|
21488
|
+
}]
|
|
21489
|
+
}, {
|
|
21490
|
+
"sap-message" : getMessageHeader(oResponseMessage)
|
|
21491
|
+
})
|
|
21492
|
+
.expectValue("note", ["Bar", "Baz", "Baz"])
|
|
21493
|
+
.expectMessage(oResponseMessage, "/SalesOrderLineItemSet", "/SalesOrderSet('1')/ToLineItems");
|
|
21494
|
+
|
|
21495
|
+
return this.createView(assert, sView, oModel).then(() => {
|
|
21496
|
+
oTable = this.oView.byId("table");
|
|
21497
|
+
oRowsBinding = oTable.getBinding("rows");
|
|
21498
|
+
|
|
21499
|
+
this.expectValueState(oTable.getRows()[0].getCells()[0], "None", "")
|
|
21500
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "Error", "~errorMessage")
|
|
21501
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21502
|
+
|
|
21503
|
+
return this.waitForChanges(assert);
|
|
21504
|
+
}).then(() => {
|
|
21505
|
+
this.expectRequest({
|
|
21506
|
+
requestUri : "SalesOrderSet('1')/ToLineItems?$skip=0&$top=103&$filter=ItemPosition gt '10'"
|
|
21507
|
+
}, {
|
|
21508
|
+
results : [{
|
|
21509
|
+
__metadata : {
|
|
21510
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='20')"
|
|
21511
|
+
},
|
|
21512
|
+
Note : "Baz",
|
|
21513
|
+
ItemPosition : "20",
|
|
21514
|
+
SalesOrderID : "1"
|
|
21515
|
+
}, {
|
|
21516
|
+
__metadata : {
|
|
21517
|
+
uri : "SalesOrderLineItemSet(SalesOrderID='1',ItemPosition='30')"
|
|
21518
|
+
},
|
|
21519
|
+
Note : "Baz", // same value as for 20
|
|
21520
|
+
ItemPosition : "30",
|
|
21521
|
+
SalesOrderID : "1"
|
|
21522
|
+
}]
|
|
21523
|
+
}, {
|
|
21524
|
+
"sap-message" : getMessageHeader(oResponseMessage)
|
|
21525
|
+
})
|
|
21526
|
+
.expectValue("note", "Baz", 0)
|
|
21527
|
+
.expectValue("note", "", 2)
|
|
21528
|
+
.expectMessage(oResponseMessage, "/SalesOrderLineItemSet", "/SalesOrderSet('1')/ToLineItems", true)
|
|
21529
|
+
.expectValueState(oTable.getRows()[0].getCells()[0], "Error", "~errorMessage")
|
|
21530
|
+
.expectValueState(oTable.getRows()[1].getCells()[0], "None", "")
|
|
21531
|
+
.expectValueState(oTable.getRows()[2].getCells()[0], "None", "");
|
|
21532
|
+
|
|
21533
|
+
// filter out item 10
|
|
21534
|
+
oRowsBinding.filter(new Filter({
|
|
21535
|
+
path : "ItemPosition",
|
|
21536
|
+
operator : FilterOperator.GT,
|
|
21537
|
+
value1 : "10"
|
|
21538
|
+
})
|
|
21539
|
+
);
|
|
21540
|
+
|
|
21541
|
+
return this.waitForChanges(assert);
|
|
20882
21542
|
});
|
|
20883
21543
|
});
|
|
20884
21544
|
});
|