@openui5/sap.ui.core 1.117.1 → 1.117.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +1 -1
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +4 -4
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +1 -1
- package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +1 -1
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +59 -42
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +1 -1
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +7 -2
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +1 -1
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IndicationColorSupport.js +1 -1
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +1 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +1 -1
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +15 -20
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +1 -1
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +3 -3
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +1 -1
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +1 -1
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/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 +15 -6
- package/src/sap/ui/debug/PropertyList.js +1 -1
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/DataState.js +1 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +1 -1
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +71 -47
- package/src/sap/ui/model/odata/v2/ODataModel.js +2 -3
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/Context.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +5 -4
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +1 -1
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/performance/BeaconRequest.js +8 -10
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
- package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
- package/test/sap/ui/core/qunit/UIArea.qunit.js +25 -1
- package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
- package/test/sap/ui/core/qunit/component/Component.qunit.js +12 -0
- package/test/sap/ui/core/qunit/odata/data/ODataModelFakeService.js +1 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +390 -16
- package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +143 -1
- package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +2 -2
- package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
- package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
- package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
- package/test/sap/ui/core/relnotes/changes-1.117.json +87 -0
- package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
|
@@ -1742,6 +1742,9 @@ sap.ui.define([
|
|
|
1742
1742
|
});
|
|
1743
1743
|
|
|
1744
1744
|
|
|
1745
|
+
/**
|
|
1746
|
+
* @deprecated As of 1.117
|
|
1747
|
+
*/
|
|
1745
1748
|
QUnit.module("Window Event Handler", {
|
|
1746
1749
|
beforeEach: function() {
|
|
1747
1750
|
|
|
@@ -1754,6 +1757,9 @@ sap.ui.define([
|
|
|
1754
1757
|
}
|
|
1755
1758
|
});
|
|
1756
1759
|
|
|
1760
|
+
/**
|
|
1761
|
+
* @deprecated As of 1.117
|
|
1762
|
+
*/
|
|
1757
1763
|
QUnit.test("onWindowError", function(assert) {
|
|
1758
1764
|
var MyOnWindowErrorComponent = Component.extend("test.onWindowError.Component");
|
|
1759
1765
|
|
|
@@ -1787,6 +1793,9 @@ sap.ui.define([
|
|
|
1787
1793
|
assert.equal(this.removeEventListenerSpy.getCall(0).thisValue, window, "removeEventListener has been called on the window object");
|
|
1788
1794
|
});
|
|
1789
1795
|
|
|
1796
|
+
/**
|
|
1797
|
+
* @deprecated As of 1.117
|
|
1798
|
+
*/
|
|
1790
1799
|
QUnit.test("onWindowBeforeUnload", function(assert) {
|
|
1791
1800
|
var MyOnWindowBeforeUnloadComponent = Component.extend("test.onWindowBeforeUnload.Component");
|
|
1792
1801
|
|
|
@@ -1813,6 +1822,9 @@ sap.ui.define([
|
|
|
1813
1822
|
assert.equal(this.removeEventListenerSpy.getCall(0).thisValue, window, "removeEventListener has been called on the window object");
|
|
1814
1823
|
});
|
|
1815
1824
|
|
|
1825
|
+
/**
|
|
1826
|
+
* @deprecated As of 1.117
|
|
1827
|
+
*/
|
|
1816
1828
|
QUnit.test("onWindowUnload", function(assert) {
|
|
1817
1829
|
var MyOnWindowUnloadComponent = Component.extend("test.onWindowUnload.Component");
|
|
1818
1830
|
|
|
@@ -149,7 +149,7 @@ sap.ui.define([], function() {
|
|
|
149
149
|
"Products(4)?$expand=Category":
|
|
150
150
|
[200, oXMLHeaders, sProducts4ExpCategoryXML],
|
|
151
151
|
"Invoices/$count":
|
|
152
|
-
[200, oCountHeaders, "
|
|
152
|
+
[200, oCountHeaders, "8"],
|
|
153
153
|
"Invoices?$skip=0&$top=100":
|
|
154
154
|
[200, oJSONHeaders, sInvoicesJSON],
|
|
155
155
|
"Invoices":
|
|
@@ -171,7 +171,6 @@ sap.ui.define([
|
|
|
171
171
|
ODataListBinding.prototype.loadData.call(oBinding);
|
|
172
172
|
|
|
173
173
|
fnSuccess = oReadCall.args[0][1].success;
|
|
174
|
-
oBindingMock.expects("useClientMode").withExactArgs().returns(false);
|
|
175
174
|
oBindingMock.expects("_removePersistedCreatedContexts").withExactArgs()
|
|
176
175
|
.exactly(bRemovePersistedCreatedAfterRefresh ? 1 : 0);
|
|
177
176
|
this.mock(oModel).expects("callAfterUpdate").withExactArgs(sinon.match.func);
|
|
@@ -188,6 +187,386 @@ sap.ui.define([
|
|
|
188
187
|
});
|
|
189
188
|
});
|
|
190
189
|
|
|
190
|
+
//*********************************************************************************************
|
|
191
|
+
QUnit.test("loadData: Client mode with server side paging - single read", function (assert) {
|
|
192
|
+
var oCallAfterUpdateCall, oData, oEntry, oReadCall, aRequestHandleKeys,
|
|
193
|
+
oModel = {
|
|
194
|
+
iSizeLimit: 100,
|
|
195
|
+
_getKey: function () {},
|
|
196
|
+
callAfterUpdate: function () {},
|
|
197
|
+
read: function () {}
|
|
198
|
+
},
|
|
199
|
+
oModelMock = this.mock(oModel),
|
|
200
|
+
oBinding = {
|
|
201
|
+
bCanonicalRequest: "~CanonicalRequest",
|
|
202
|
+
oContext: "~Context",
|
|
203
|
+
sCustomParams: "~Custom",
|
|
204
|
+
bLengthFinal: false,
|
|
205
|
+
oModel : oModel,
|
|
206
|
+
sPath: "/~Path",
|
|
207
|
+
sRefreshGroupId : "~RefreshGroup",
|
|
208
|
+
mRequestHandles: {},
|
|
209
|
+
sSortParams: "~Sorter",
|
|
210
|
+
bTransitionMessagesOnly: true,
|
|
211
|
+
_addFilterQueryOption: function () {},
|
|
212
|
+
applyFilter: function () {},
|
|
213
|
+
applySort: function () {},
|
|
214
|
+
fireDataReceived: function () {},
|
|
215
|
+
fireDataRequested: function () {},
|
|
216
|
+
isRelative: function () {},
|
|
217
|
+
updateExpandedList: function () {},
|
|
218
|
+
useClientMode: function () {}
|
|
219
|
+
},
|
|
220
|
+
oBindingMock = this.mock(oBinding);
|
|
221
|
+
|
|
222
|
+
oBindingMock.expects("useClientMode").withExactArgs().returns(true);
|
|
223
|
+
oBindingMock.expects("_addFilterQueryOption")
|
|
224
|
+
.withExactArgs(["~Sorter"], /*!useClientMode()*/false)
|
|
225
|
+
.callsFake(function (aParams) {
|
|
226
|
+
aParams.push("~Filter"); // simulate _addFilterQueryOption implementation
|
|
227
|
+
});
|
|
228
|
+
oBindingMock.expects("isRelative").withExactArgs().returns(false);
|
|
229
|
+
oBindingMock.expects("fireDataRequested").withExactArgs();
|
|
230
|
+
|
|
231
|
+
oReadCall = oModelMock.expects("read").withExactArgs("/~Path", {
|
|
232
|
+
canonicalRequest: "~CanonicalRequest",
|
|
233
|
+
context: "~Context",
|
|
234
|
+
error: sinon.match.func,
|
|
235
|
+
groupId: "~RefreshGroup",
|
|
236
|
+
headers: {"sap-messages" : "transientOnly"},
|
|
237
|
+
success: sinon.match.func,
|
|
238
|
+
updateAggregatedMessages: undefined,
|
|
239
|
+
urlParameters: ["~Sorter", "~Filter", "~Custom"]
|
|
240
|
+
}).returns("~Read1");
|
|
241
|
+
|
|
242
|
+
// code under test
|
|
243
|
+
ODataListBinding.prototype.loadData.call(oBinding);
|
|
244
|
+
|
|
245
|
+
assert.strictEqual(oBinding.bPendingRequest, true);
|
|
246
|
+
assert.strictEqual(oBinding.bSkipDataEvents, false);
|
|
247
|
+
aRequestHandleKeys = Object.keys(oBinding.mRequestHandles);
|
|
248
|
+
assert.strictEqual(aRequestHandleKeys.length, 1);
|
|
249
|
+
assert.strictEqual(oBinding.mRequestHandles[aRequestHandleKeys[0]], "~Read1");
|
|
250
|
+
|
|
251
|
+
oBindingMock.expects("updateExpandedList").withExactArgs(["~Key"]);
|
|
252
|
+
oBindingMock.expects("applyFilter").withExactArgs();
|
|
253
|
+
oBindingMock.expects("applySort").withExactArgs();
|
|
254
|
+
oEntry = {};
|
|
255
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry)).returns("~Key");
|
|
256
|
+
oCallAfterUpdateCall = oModelMock.expects("callAfterUpdate").withExactArgs(sinon.match.func);
|
|
257
|
+
oData = {results: [oEntry]};
|
|
258
|
+
|
|
259
|
+
// code under test - all data read
|
|
260
|
+
oReadCall.args[0][1].success(oData);
|
|
261
|
+
|
|
262
|
+
assert.strictEqual(oBinding.iLength, 1);
|
|
263
|
+
assert.strictEqual(oBinding.bLengthFinal, true);
|
|
264
|
+
assert.deepEqual(oBinding.aKeys, ["~Key"]);
|
|
265
|
+
assert.deepEqual(oBinding.aAllKeys, ["~Key"]);
|
|
266
|
+
assert.deepEqual(oBinding.mRequestHandles, {});
|
|
267
|
+
assert.strictEqual(oBinding.bPendingRequest, false);
|
|
268
|
+
assert.strictEqual(oBinding.bNeedsUpdate, true);
|
|
269
|
+
assert.strictEqual(oBinding.bIgnoreSuspend, true);
|
|
270
|
+
|
|
271
|
+
oBindingMock.expects("fireDataReceived").withExactArgs({data: sinon.match.same(oData)});
|
|
272
|
+
|
|
273
|
+
// code under test
|
|
274
|
+
oCallAfterUpdateCall.args[0][0]();
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
//*********************************************************************************************
|
|
278
|
+
QUnit.test("loadData: Client mode with server side paging - first read returns enough data", function (assert) {
|
|
279
|
+
var oCallAfterUpdateCall, oData, oReadCall, aRequestHandleKeys,
|
|
280
|
+
aEntries = ["~0", "~1", "~2", "~3", "~4"],
|
|
281
|
+
oModel = {
|
|
282
|
+
iSizeLimit: 3,
|
|
283
|
+
_getKey: function () {},
|
|
284
|
+
callAfterUpdate: function () {},
|
|
285
|
+
read: function () {}
|
|
286
|
+
},
|
|
287
|
+
oModelMock = this.mock(oModel),
|
|
288
|
+
oBinding = {
|
|
289
|
+
bCanonicalRequest: "~CanonicalRequest",
|
|
290
|
+
oContext: "~Context",
|
|
291
|
+
sCustomParams: "~Custom",
|
|
292
|
+
bLengthFinal: false,
|
|
293
|
+
oModel : oModel,
|
|
294
|
+
sPath: "/~Path",
|
|
295
|
+
sRefreshGroupId : "~RefreshGroup",
|
|
296
|
+
mRequestHandles: {},
|
|
297
|
+
sSortParams: "~Sorter",
|
|
298
|
+
bTransitionMessagesOnly: true,
|
|
299
|
+
_addFilterQueryOption: function () {},
|
|
300
|
+
applyFilter: function () {},
|
|
301
|
+
applySort: function () {},
|
|
302
|
+
fireDataReceived: function () {},
|
|
303
|
+
fireDataRequested: function () {},
|
|
304
|
+
isRelative: function () {},
|
|
305
|
+
updateExpandedList: function () {},
|
|
306
|
+
useClientMode: function () {}
|
|
307
|
+
},
|
|
308
|
+
oBindingMock = this.mock(oBinding);
|
|
309
|
+
|
|
310
|
+
oBindingMock.expects("useClientMode").withExactArgs().returns(true);
|
|
311
|
+
oBindingMock.expects("_addFilterQueryOption")
|
|
312
|
+
.withExactArgs(["~Sorter"], /*!useClientMode()*/false)
|
|
313
|
+
.callsFake(function (aParams) {
|
|
314
|
+
aParams.push("~Filter"); // simulate _addFilterQueryOption implementation
|
|
315
|
+
});
|
|
316
|
+
oBindingMock.expects("isRelative").withExactArgs().returns(false);
|
|
317
|
+
oBindingMock.expects("fireDataRequested").withExactArgs();
|
|
318
|
+
|
|
319
|
+
oReadCall = oModelMock.expects("read").withExactArgs("/~Path", {
|
|
320
|
+
canonicalRequest: "~CanonicalRequest",
|
|
321
|
+
context: "~Context",
|
|
322
|
+
error: sinon.match.func,
|
|
323
|
+
groupId: "~RefreshGroup",
|
|
324
|
+
headers: {"sap-messages" : "transientOnly"},
|
|
325
|
+
success: sinon.match.func,
|
|
326
|
+
updateAggregatedMessages: undefined,
|
|
327
|
+
urlParameters: ["~Sorter", "~Filter", "~Custom"]
|
|
328
|
+
}).returns("~Read1");
|
|
329
|
+
|
|
330
|
+
// code under test
|
|
331
|
+
ODataListBinding.prototype.loadData.call(oBinding);
|
|
332
|
+
|
|
333
|
+
assert.strictEqual(oBinding.bPendingRequest, true);
|
|
334
|
+
assert.strictEqual(oBinding.bSkipDataEvents, false);
|
|
335
|
+
aRequestHandleKeys = Object.keys(oBinding.mRequestHandles);
|
|
336
|
+
assert.strictEqual(aRequestHandleKeys.length, 1);
|
|
337
|
+
assert.strictEqual(oBinding.mRequestHandles[aRequestHandleKeys[0]], "~Read1");
|
|
338
|
+
|
|
339
|
+
oBindingMock.expects("updateExpandedList").withExactArgs(["~Key0", "~Key1", "~Key2", "~Key3", "~Key4"]);
|
|
340
|
+
oBindingMock.expects("applyFilter").withExactArgs();
|
|
341
|
+
oBindingMock.expects("applySort").withExactArgs();
|
|
342
|
+
oModelMock.expects("_getKey").withExactArgs("~0").returns("~Key0");
|
|
343
|
+
oModelMock.expects("_getKey").withExactArgs("~1").returns("~Key1");
|
|
344
|
+
oModelMock.expects("_getKey").withExactArgs("~2").returns("~Key2");
|
|
345
|
+
oModelMock.expects("_getKey").withExactArgs("~3").returns("~Key3");
|
|
346
|
+
oModelMock.expects("_getKey").withExactArgs("~4").returns("~Key4");
|
|
347
|
+
oCallAfterUpdateCall = oModelMock.expects("callAfterUpdate").withExactArgs(sinon.match.func);
|
|
348
|
+
oData = {
|
|
349
|
+
__next: "~NextLink", // more data on server
|
|
350
|
+
results: aEntries // but model size limit reached
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
// code under test
|
|
354
|
+
oReadCall.args[0][1].success(oData);
|
|
355
|
+
|
|
356
|
+
assert.strictEqual(oBinding.iLength, 5);
|
|
357
|
+
assert.strictEqual(oBinding.bLengthFinal, true);
|
|
358
|
+
assert.deepEqual(oBinding.aKeys, ["~Key0", "~Key1", "~Key2", "~Key3", "~Key4"]);
|
|
359
|
+
assert.deepEqual(oBinding.aAllKeys, ["~Key0", "~Key1", "~Key2", "~Key3", "~Key4"]);
|
|
360
|
+
assert.deepEqual(oBinding.mRequestHandles, {});
|
|
361
|
+
assert.strictEqual(oBinding.bPendingRequest, false);
|
|
362
|
+
assert.strictEqual(oBinding.bNeedsUpdate, true);
|
|
363
|
+
assert.strictEqual(oBinding.bIgnoreSuspend, true);
|
|
364
|
+
|
|
365
|
+
oBindingMock.expects("fireDataReceived").withExactArgs({data: sinon.match.same(oData)});
|
|
366
|
+
|
|
367
|
+
// code under test
|
|
368
|
+
oCallAfterUpdateCall.args[0][0]();
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
//*********************************************************************************************
|
|
372
|
+
[CountMode.InlineRepeat, CountMode.Inline, CountMode.None, CountMode.Request].forEach(function (sCountMode) {
|
|
373
|
+
var sTitle = "loadData: Client mode, server side paging, more reads, count mode: " + sCountMode;
|
|
374
|
+
|
|
375
|
+
QUnit.test(sTitle, function (assert) {
|
|
376
|
+
var oCallAfterUpdateCall, oData, oEntry0, oEntry1, oEntry2, oEntry3, oEntry4, oEntry5,
|
|
377
|
+
sHandleKey, oReadCall, oReadCall2, oReadCall3, aRequestHandleKeys, fnSuccess,
|
|
378
|
+
oModel = {
|
|
379
|
+
iSizeLimit: 30,
|
|
380
|
+
_getKey: function () {},
|
|
381
|
+
callAfterUpdate: function () {},
|
|
382
|
+
read: function () {}
|
|
383
|
+
},
|
|
384
|
+
oModelMock = this.mock(oModel),
|
|
385
|
+
oBinding = {
|
|
386
|
+
bCanonicalRequest: "~CanonicalRequest",
|
|
387
|
+
oContext: "~Context",
|
|
388
|
+
sCountMode: sCountMode,
|
|
389
|
+
sCustomParams: "~Custom",
|
|
390
|
+
bLengthFinal: false,
|
|
391
|
+
oModel : oModel,
|
|
392
|
+
sPath: "/~Path",
|
|
393
|
+
sRefreshGroupId : "~RefreshGroup",
|
|
394
|
+
mRequestHandles: {},
|
|
395
|
+
sSortParams: "~Sorter",
|
|
396
|
+
bTransitionMessagesOnly: true,
|
|
397
|
+
_addFilterQueryOption: function () {},
|
|
398
|
+
applyFilter: function () {},
|
|
399
|
+
applySort: function () {},
|
|
400
|
+
fireDataReceived: function () {},
|
|
401
|
+
fireDataRequested: function () {},
|
|
402
|
+
isRelative: function () {},
|
|
403
|
+
updateExpandedList: function () {},
|
|
404
|
+
useClientMode: function () {}
|
|
405
|
+
},
|
|
406
|
+
oBindingMock = this.mock(oBinding);
|
|
407
|
+
|
|
408
|
+
oBindingMock.expects("useClientMode").withExactArgs().returns(true);
|
|
409
|
+
oBindingMock.expects("_addFilterQueryOption")
|
|
410
|
+
.withExactArgs(["~Sorter"], /*!useClientMode()*/false)
|
|
411
|
+
.callsFake(function (aParams) {
|
|
412
|
+
aParams.push("~Filter"); // simulate _addFilterQueryOption implementation
|
|
413
|
+
});
|
|
414
|
+
oBindingMock.expects("isRelative").withExactArgs().returns(false);
|
|
415
|
+
oBindingMock.expects("fireDataRequested").withExactArgs();
|
|
416
|
+
oReadCall = oModelMock.expects("read").withExactArgs("/~Path", {
|
|
417
|
+
canonicalRequest: "~CanonicalRequest",
|
|
418
|
+
context: "~Context",
|
|
419
|
+
error: sinon.match.func,
|
|
420
|
+
groupId: "~RefreshGroup",
|
|
421
|
+
headers: {"sap-messages" : "transientOnly"},
|
|
422
|
+
success: sinon.match.func,
|
|
423
|
+
updateAggregatedMessages: undefined,
|
|
424
|
+
urlParameters: sCountMode === CountMode.None || sCountMode === CountMode.Request
|
|
425
|
+
? ["~Sorter", "~Filter", "~Custom"]
|
|
426
|
+
: ["~Sorter", "~Filter", "~Custom", "$inlinecount=allpages"]
|
|
427
|
+
}).returns("~Read1");
|
|
428
|
+
|
|
429
|
+
// code under test - initial loading
|
|
430
|
+
ODataListBinding.prototype.loadData.call(oBinding);
|
|
431
|
+
|
|
432
|
+
assert.strictEqual(oBinding.bPendingRequest, true);
|
|
433
|
+
assert.strictEqual(oBinding.bSkipDataEvents, false);
|
|
434
|
+
aRequestHandleKeys = Object.keys(oBinding.mRequestHandles);
|
|
435
|
+
assert.strictEqual(aRequestHandleKeys.length, 1);
|
|
436
|
+
sHandleKey = aRequestHandleKeys[0];
|
|
437
|
+
assert.strictEqual(oBinding.mRequestHandles[sHandleKey], "~Read1");
|
|
438
|
+
|
|
439
|
+
fnSuccess = oReadCall.args[0][1].success;
|
|
440
|
+
oEntry0 = {};
|
|
441
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry0)).returns("~Key0");
|
|
442
|
+
oData = {
|
|
443
|
+
__next: "~NextLink",
|
|
444
|
+
results: [oEntry0]
|
|
445
|
+
};
|
|
446
|
+
if (sCountMode !== CountMode.None && sCountMode !== CountMode.Request) {
|
|
447
|
+
oData.__count = "123";
|
|
448
|
+
}
|
|
449
|
+
oBindingMock.expects("_addFilterQueryOption")
|
|
450
|
+
.withExactArgs(["$skip=1&$top=29", "~Sorter"], /*!useClientMode()*/false)
|
|
451
|
+
.callsFake(function (aParams) {
|
|
452
|
+
aParams.push("~Filter"); // simulate _addFilterQueryOption implementation
|
|
453
|
+
});
|
|
454
|
+
// read call for the missing entries up to model size limit
|
|
455
|
+
oReadCall2 = oModelMock.expects("read").withExactArgs("/~Path", {
|
|
456
|
+
canonicalRequest: "~CanonicalRequest",
|
|
457
|
+
context: "~Context",
|
|
458
|
+
error: sinon.match.func,
|
|
459
|
+
groupId: "~RefreshGroup",
|
|
460
|
+
headers: {"sap-messages" : "transientOnly"},
|
|
461
|
+
success: sinon.match.func,
|
|
462
|
+
updateAggregatedMessages: undefined,
|
|
463
|
+
urlParameters: sCountMode === CountMode.InlineRepeat
|
|
464
|
+
? ["$skip=1&$top=29", "~Sorter", "~Filter", "~Custom", "$inlinecount=allpages"]
|
|
465
|
+
: ["$skip=1&$top=29", "~Sorter", "~Filter", "~Custom"]
|
|
466
|
+
}).returns("~Read2");
|
|
467
|
+
|
|
468
|
+
// code under test - server side paging (here 3, in real maybe 5000); response contains a __next link
|
|
469
|
+
fnSuccess(oData);
|
|
470
|
+
|
|
471
|
+
assert.strictEqual(oBinding.mRequestHandles[sHandleKey], "~Read2");
|
|
472
|
+
assert.strictEqual(oBinding.iLength,
|
|
473
|
+
sCountMode === CountMode.None || sCountMode === CountMode.Request ? undefined : 123);
|
|
474
|
+
assert.strictEqual(oBinding.bLengthFinal, sCountMode !== CountMode.None && sCountMode !== CountMode.Request);
|
|
475
|
+
assert.deepEqual(oBinding.aKeys, ["~Key0"]);
|
|
476
|
+
assert.strictEqual(oBinding.aAllKeys, undefined);
|
|
477
|
+
// success and error handlers are the same
|
|
478
|
+
assert.strictEqual(oReadCall2.args[0][1].success, fnSuccess);
|
|
479
|
+
assert.strictEqual(oReadCall2.args[0][1].error, oReadCall.args[0][1].error);
|
|
480
|
+
|
|
481
|
+
oData = {
|
|
482
|
+
__next: "~NextLink2",
|
|
483
|
+
results: [oEntry1, oEntry2, oEntry3]
|
|
484
|
+
};
|
|
485
|
+
if (sCountMode === CountMode.InlineRepeat) {
|
|
486
|
+
oData.__count = "123";
|
|
487
|
+
}
|
|
488
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry1)).returns("~Key1");
|
|
489
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry2)).returns("~Key2");
|
|
490
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry3)).returns("~Key3");
|
|
491
|
+
oBindingMock.expects("_addFilterQueryOption")
|
|
492
|
+
.withExactArgs(["$skip=4&$top=26", "~Sorter"], /*!useClientMode()*/false)
|
|
493
|
+
.callsFake(function (aParams) {
|
|
494
|
+
aParams.push("~Filter"); // simulate _addFilterQueryOption implementation
|
|
495
|
+
});
|
|
496
|
+
// read call for the next junk of data
|
|
497
|
+
oReadCall3 = oModelMock.expects("read").withExactArgs("/~Path", {
|
|
498
|
+
canonicalRequest: "~CanonicalRequest",
|
|
499
|
+
context: "~Context",
|
|
500
|
+
error: sinon.match.func,
|
|
501
|
+
groupId: "~RefreshGroup",
|
|
502
|
+
headers: {"sap-messages" : "transientOnly"},
|
|
503
|
+
success: sinon.match.func,
|
|
504
|
+
updateAggregatedMessages: undefined,
|
|
505
|
+
urlParameters: sCountMode === CountMode.InlineRepeat
|
|
506
|
+
? ["$skip=4&$top=26", "~Sorter", "~Filter", "~Custom", "$inlinecount=allpages"]
|
|
507
|
+
: ["$skip=4&$top=26", "~Sorter", "~Filter", "~Custom"]
|
|
508
|
+
}).returns("~Read3");
|
|
509
|
+
|
|
510
|
+
// code under test - all data up to model size limit are read
|
|
511
|
+
fnSuccess(oData);
|
|
512
|
+
|
|
513
|
+
assert.strictEqual(oBinding.mRequestHandles[sHandleKey], "~Read3");
|
|
514
|
+
assert.strictEqual(oBinding.iLength,
|
|
515
|
+
sCountMode === CountMode.None || sCountMode === CountMode.Request ? undefined : 123);
|
|
516
|
+
assert.strictEqual(oBinding.bLengthFinal, sCountMode !== CountMode.None && sCountMode !== CountMode.Request);
|
|
517
|
+
assert.deepEqual(oBinding.aKeys, ["~Key0", "~Key1", "~Key2", "~Key3"]);
|
|
518
|
+
assert.strictEqual(oBinding.aAllKeys, undefined);
|
|
519
|
+
// success and error handlers are the same
|
|
520
|
+
assert.strictEqual(oReadCall3.args[0][1].success, fnSuccess);
|
|
521
|
+
assert.strictEqual(oReadCall3.args[0][1].error, oReadCall.args[0][1].error);
|
|
522
|
+
|
|
523
|
+
oData = { // less data than requested
|
|
524
|
+
results: [oEntry4, oEntry5]
|
|
525
|
+
};
|
|
526
|
+
if (sCountMode === CountMode.InlineRepeat) {
|
|
527
|
+
oData.__count = "123";
|
|
528
|
+
}
|
|
529
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry4)).returns("~Key4");
|
|
530
|
+
oModelMock.expects("_getKey").withExactArgs(sinon.match.same(oEntry5)).returns("~Key5");
|
|
531
|
+
oBindingMock.expects("updateExpandedList")
|
|
532
|
+
.withExactArgs(["~Key0", "~Key1", "~Key2", "~Key3", "~Key4", "~Key5"]);
|
|
533
|
+
oBindingMock.expects("applyFilter").withExactArgs();
|
|
534
|
+
oBindingMock.expects("applySort").withExactArgs();
|
|
535
|
+
oCallAfterUpdateCall = oModelMock.expects("callAfterUpdate").withExactArgs(sinon.match.func);
|
|
536
|
+
|
|
537
|
+
// code under test - short read stops reading
|
|
538
|
+
fnSuccess(oData);
|
|
539
|
+
|
|
540
|
+
assert.strictEqual(oBinding.iLength, 6);
|
|
541
|
+
assert.strictEqual(oBinding.bLengthFinal, true);
|
|
542
|
+
assert.deepEqual(oBinding.aKeys, ["~Key0", "~Key1", "~Key2", "~Key3", "~Key4", "~Key5"]);
|
|
543
|
+
assert.deepEqual(oBinding.aAllKeys, ["~Key0", "~Key1", "~Key2", "~Key3", "~Key4", "~Key5"]);
|
|
544
|
+
assert.notStrictEqual(oBinding.aAllKeys, oBinding.aKeys);
|
|
545
|
+
assert.deepEqual(oBinding.mRequestHandles, {});
|
|
546
|
+
assert.strictEqual(oBinding.bPendingRequest, false);
|
|
547
|
+
assert.strictEqual(oBinding.bNeedsUpdate, true);
|
|
548
|
+
assert.strictEqual(oBinding.bIgnoreSuspend, true);
|
|
549
|
+
|
|
550
|
+
oBindingMock.expects("fireDataReceived").withExactArgs(sinon.match(function (oParameter) {
|
|
551
|
+
var aResult = oParameter.data.results;
|
|
552
|
+
|
|
553
|
+
assert.strictEqual(aResult.length, 6);
|
|
554
|
+
assert.strictEqual(aResult[0], oEntry0);
|
|
555
|
+
assert.strictEqual(aResult[1], oEntry1);
|
|
556
|
+
assert.strictEqual(aResult[2], oEntry2);
|
|
557
|
+
assert.strictEqual(aResult[3], oEntry3);
|
|
558
|
+
assert.strictEqual(aResult[4], oEntry4);
|
|
559
|
+
assert.strictEqual(aResult[5], oEntry5);
|
|
560
|
+
assert.strictEqual(oParameter.data.__count, "6");
|
|
561
|
+
|
|
562
|
+
return true;
|
|
563
|
+
}));
|
|
564
|
+
|
|
565
|
+
// code under test
|
|
566
|
+
oCallAfterUpdateCall.args[0][0]();
|
|
567
|
+
});
|
|
568
|
+
});
|
|
569
|
+
|
|
191
570
|
//*********************************************************************************************
|
|
192
571
|
[
|
|
193
572
|
{operationMode : OperationMode.Auto, useFilterParams : false},
|
|
@@ -404,10 +783,8 @@ sap.ui.define([
|
|
|
404
783
|
|
|
405
784
|
assert.strictEqual(oBinding.sFilterParams, null);
|
|
406
785
|
assert.strictEqual(oBinding.sSortParams, null);
|
|
407
|
-
assert.strictEqual(oBinding.sRangeParams, null);
|
|
408
786
|
assert.strictEqual(oBinding.sCustomParams, "~custom");
|
|
409
787
|
assert.strictEqual(oBinding.mCustomParams, undefined);
|
|
410
|
-
assert.strictEqual(oBinding.iStartIndex, 0);
|
|
411
788
|
assert.strictEqual(oBinding.iLength, 0);
|
|
412
789
|
assert.strictEqual(oBinding.bPendingChange, false);
|
|
413
790
|
assert.strictEqual(oBinding.aAllKeys, null);
|
|
@@ -1576,7 +1953,6 @@ sap.ui.define([
|
|
|
1576
1953
|
["~V2Context0", "~V2Context1"]);
|
|
1577
1954
|
});
|
|
1578
1955
|
|
|
1579
|
-
|
|
1580
1956
|
//*********************************************************************************************
|
|
1581
1957
|
[{
|
|
1582
1958
|
bAtEnd : false,
|
|
@@ -2472,16 +2848,15 @@ sap.ui.define([
|
|
|
2472
2848
|
var oBinding = {
|
|
2473
2849
|
aKeys : [],
|
|
2474
2850
|
bLengthFinal : true,
|
|
2475
|
-
iLength :
|
|
2851
|
+
iLength : 42,
|
|
2476
2852
|
_getCreatedContexts : function () {},
|
|
2477
2853
|
isFirstCreateAtEnd : function () {}
|
|
2478
2854
|
};
|
|
2479
2855
|
|
|
2480
|
-
this.mock(oBinding).expects("_getCreatedContexts").withExactArgs();
|
|
2856
|
+
this.mock(oBinding).expects("_getCreatedContexts").withExactArgs().returns(["~oCreated1"]);
|
|
2481
2857
|
this.mock(oBinding).expects("isFirstCreateAtEnd").withExactArgs().returns(false);
|
|
2482
2858
|
this.mock(ODataUtils).expects("_getReadIntervals")
|
|
2483
|
-
.withExactArgs(sinon.match.same(oBinding.aKeys), "~startIndex", "~length",
|
|
2484
|
-
"~maximumPrefetchSize", "~length")
|
|
2859
|
+
.withExactArgs(sinon.match.same(oBinding.aKeys), "~startIndex", "~length", "~maximumPrefetchSize", 43)
|
|
2485
2860
|
.returns("~aIntervals");
|
|
2486
2861
|
this.mock(ODataUtils).expects("_mergeIntervals")
|
|
2487
2862
|
.withExactArgs("~aIntervals")
|
|
@@ -2496,27 +2871,27 @@ sap.ui.define([
|
|
|
2496
2871
|
|
|
2497
2872
|
//*********************************************************************************************
|
|
2498
2873
|
[
|
|
2499
|
-
{interval : {start : 222, end : 333}, result : {skip : 222 -
|
|
2874
|
+
{interval : {start : 222, end : 333}, result : {skip : 222 - 2, top : 111}},
|
|
2500
2875
|
{interval : undefined, result : undefined}
|
|
2501
2876
|
].forEach(function (oFixture, i) {
|
|
2502
2877
|
QUnit.test("_getSkipAndTop, creation at start, binding has data: #" + i, function (assert) {
|
|
2503
2878
|
var oBinding = {
|
|
2504
2879
|
aKeys : ["key0", "key1"],
|
|
2505
2880
|
bLengthFinal : true,
|
|
2506
|
-
iLength :
|
|
2881
|
+
iLength : 42,
|
|
2507
2882
|
_getCreatedContexts : function () {},
|
|
2508
2883
|
isFirstCreateAtEnd : function () {}
|
|
2509
2884
|
};
|
|
2510
2885
|
|
|
2511
2886
|
this.mock(oBinding).expects("_getCreatedContexts")
|
|
2512
2887
|
.withExactArgs()
|
|
2513
|
-
.returns(["created0"]);
|
|
2888
|
+
.returns(["created0", "created1"]);
|
|
2514
2889
|
this.mock(oBinding).expects("isFirstCreateAtEnd")
|
|
2515
2890
|
.withExactArgs()
|
|
2516
2891
|
.returns(false);
|
|
2517
2892
|
this.mock(ODataUtils).expects("_getReadIntervals")
|
|
2518
|
-
.withExactArgs(["created0", "key0", "key1"], "~startIndex", "~length",
|
|
2519
|
-
"~maximumPrefetchSize",
|
|
2893
|
+
.withExactArgs(["created0", "created1", "key0", "key1"], "~startIndex", "~length",
|
|
2894
|
+
"~maximumPrefetchSize", 44)
|
|
2520
2895
|
.returns("~aIntervals");
|
|
2521
2896
|
this.mock(ODataUtils).expects("_mergeIntervals")
|
|
2522
2897
|
.withExactArgs("~aIntervals")
|
|
@@ -2566,7 +2941,7 @@ sap.ui.define([
|
|
|
2566
2941
|
var oBinding = {
|
|
2567
2942
|
aKeys : [],
|
|
2568
2943
|
bLengthFinal : true,
|
|
2569
|
-
iLength :
|
|
2944
|
+
iLength : 42,
|
|
2570
2945
|
_getCreatedContexts : function () {},
|
|
2571
2946
|
isFirstCreateAtEnd : function () {}
|
|
2572
2947
|
};
|
|
@@ -2574,8 +2949,7 @@ sap.ui.define([
|
|
|
2574
2949
|
this.mock(oBinding).expects("_getCreatedContexts").withExactArgs().returns([]);
|
|
2575
2950
|
this.mock(oBinding).expects("isFirstCreateAtEnd").withExactArgs().returns(false);
|
|
2576
2951
|
this.mock(ODataUtils).expects("_getReadIntervals")
|
|
2577
|
-
.withExactArgs(sinon.match.same(oBinding.aKeys) , 0, 10, "~maximumPrefetchSize",
|
|
2578
|
-
"~length")
|
|
2952
|
+
.withExactArgs(sinon.match.same(oBinding.aKeys) , 0, 10, "~maximumPrefetchSize", 42)
|
|
2579
2953
|
.returns("~aIntervals");
|
|
2580
2954
|
this.mock(ODataUtils).expects("_mergeIntervals")
|
|
2581
2955
|
.withExactArgs("~aIntervals")
|