@sapui5/sap.fe.test 1.98.0 → 1.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/package.json +6 -3
  2. package/src/sap/fe/test/.library +1 -1
  3. package/src/sap/fe/test/BaseActions.js +3 -2
  4. package/src/sap/fe/test/BaseArrangements.js +68 -20
  5. package/src/sap/fe/test/BaseAssertions.js +3 -2
  6. package/src/sap/fe/test/ConfirmDialog.js +3 -2
  7. package/src/sap/fe/test/FCLView.js +3 -2
  8. package/src/sap/fe/test/FeMocks.js +66 -0
  9. package/src/sap/fe/test/FeMocks.ts +77 -0
  10. package/src/sap/fe/test/Flexibility.js +3 -2
  11. package/src/sap/fe/test/FlexibleColumnLayout.js +151 -143
  12. package/src/sap/fe/test/JestTemplatingHelper.js +96 -35
  13. package/src/sap/fe/test/JestTemplatingHelper.ts +115 -66
  14. package/src/sap/fe/test/JourneyRunner.js +3 -2
  15. package/src/sap/fe/test/ListReport.js +74 -70
  16. package/src/sap/fe/test/LocationUtil.js +3 -2
  17. package/src/sap/fe/test/ObjectPage.js +88 -125
  18. package/src/sap/fe/test/Shell.js +3 -2
  19. package/src/sap/fe/test/Stubs.js +3 -2
  20. package/src/sap/fe/test/TemplatePage.js +46 -29
  21. package/src/sap/fe/test/TemplatingTestUtils.js +3 -2
  22. package/src/sap/fe/test/UI5MockHelper.js +163 -217
  23. package/src/sap/fe/test/UI5MockHelper.ts +45 -10
  24. package/src/sap/fe/test/Utils.js +3 -2
  25. package/src/sap/fe/test/api/APIHelper.js +29 -17
  26. package/src/sap/fe/test/api/BaseAPI.js +4 -2
  27. package/src/sap/fe/test/api/ChartActions.js +3 -2
  28. package/src/sap/fe/test/api/ChartAssertions.js +3 -2
  29. package/src/sap/fe/test/api/DialogAPI.js +17 -4
  30. package/src/sap/fe/test/api/DialogActions.js +6 -3
  31. package/src/sap/fe/test/api/DialogAssertions.js +3 -2
  32. package/src/sap/fe/test/api/DialogCreateActions.js +4 -3
  33. package/src/sap/fe/test/api/DialogCreateAssertions.js +4 -3
  34. package/src/sap/fe/test/api/DialogMessageActions.js +82 -52
  35. package/src/sap/fe/test/api/DialogMessageAssertions.js +4 -3
  36. package/src/sap/fe/test/api/DialogType.js +3 -2
  37. package/src/sap/fe/test/api/DialogValueHelpActions.js +4 -3
  38. package/src/sap/fe/test/api/DialogValueHelpAssertions.js +4 -3
  39. package/src/sap/fe/test/api/EditState.js +3 -2
  40. package/src/sap/fe/test/api/FilterBarAPI.js +12 -3
  41. package/src/sap/fe/test/api/FilterBarActions.js +3 -2
  42. package/src/sap/fe/test/api/FilterBarAssertions.js +3 -2
  43. package/src/sap/fe/test/api/FooterAPI.js +3 -2
  44. package/src/sap/fe/test/api/FooterActionsBase.js +3 -2
  45. package/src/sap/fe/test/api/FooterActionsOP.js +3 -2
  46. package/src/sap/fe/test/api/FooterAssertionsBase.js +3 -2
  47. package/src/sap/fe/test/api/FooterAssertionsOP.js +3 -2
  48. package/src/sap/fe/test/api/FormAPI.js +3 -2
  49. package/src/sap/fe/test/api/FormActions.js +3 -2
  50. package/src/sap/fe/test/api/FormAssertions.js +3 -2
  51. package/src/sap/fe/test/api/HeaderAPI.js +3 -2
  52. package/src/sap/fe/test/api/HeaderActions.js +232 -228
  53. package/src/sap/fe/test/api/HeaderActionsLR.js +3 -2
  54. package/src/sap/fe/test/api/HeaderAssertions.js +3 -2
  55. package/src/sap/fe/test/api/HeaderAssertionsLR.js +3 -2
  56. package/src/sap/fe/test/api/HeaderLR.js +3 -2
  57. package/src/sap/fe/test/api/KPICardAPI.js +3 -2
  58. package/src/sap/fe/test/api/KPICardActions.js +3 -2
  59. package/src/sap/fe/test/api/KPICardAssertions.js +3 -2
  60. package/src/sap/fe/test/api/TableAPI.js +3 -2
  61. package/src/sap/fe/test/api/TableActions.js +60 -90
  62. package/src/sap/fe/test/api/TableAssertions.js +6 -6
  63. package/src/sap/fe/test/builder/DialogBuilder.js +3 -2
  64. package/src/sap/fe/test/builder/FEBuilder.js +3 -2
  65. package/src/sap/fe/test/builder/KPIBuilder.js +3 -2
  66. package/src/sap/fe/test/builder/MacroFieldBuilder.js +6 -2
  67. package/src/sap/fe/test/builder/MdcFieldBuilder.js +3 -2
  68. package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +3 -2
  69. package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +3 -2
  70. package/src/sap/fe/test/builder/MdcTableBuilder.js +166 -182
  71. package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +3 -2
  72. package/src/sap/fe/test/builder/VMBuilder.js +3 -2
  73. package/src/sap/fe/test/internal/FEArrangements.js +3 -2
  74. package/src/sap/fe/test/internal/FEJourneyRunner.js +9 -5
  75. package/src/sap/fe/test/library.js +26 -34
  76. package/src/sap/fe/test/library.ts +28 -0
  77. package/src/sap/fe/test/massEdit.js +3 -2
  78. package/ui5.yaml +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.test",
3
- "version": "1.98.0",
3
+ "version": "1.101.0",
4
4
  "description": "SAPUI5 Library sap.fe.test",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -9,6 +9,8 @@
9
9
  "build": "echo 'nothing to do'",
10
10
  "copy-dependency": "copyfiles -u 7 \"../../node_modules/@sap/ux-ui5-fe-mockserver-middleware/ui5-dist/test/**/*.js\" target/classes/META-INF/test-resources",
11
11
  "prepare-npm-sources": "babel target/npm-sources/src --out-dir target/npm-sources/src --extensions \".ts\" --config-file ../../.babelrc",
12
+ "prepare-ts-class-doc": "echo 'nothing to do'",
13
+ "prepare-ui5-build-sources": "copyfiles -u 7 \"../../node_modules/@sap/ux-ui5-fe-mockserver-middleware/ui5-dist/test/**/*.js\" target/ui5-build-tmp/test && mkdirp target/ui5-build-tmp/src && babel src --out-dir target/ui5-build-tmp/src --extensions \".ts\" --config-file ../../.babelrc",
12
14
  "test": "echo 'nothing to do'"
13
15
  },
14
16
  "keywords": [
@@ -19,7 +21,8 @@
19
21
  "@babel/cli": "^7.14.8",
20
22
  "@ui5/cli": "^2.14.0",
21
23
  "copyfiles": "2.2.0",
22
- "xpath": "0.0.27",
23
- "xml-formatter": "2.4.0"
24
+ "mkdirp": "^1.0.4",
25
+ "xml-formatter": "2.4.0",
26
+ "xpath": "0.0.27"
24
27
  }
25
28
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.98.0</version>
9
+ <version>1.101.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.test</documentation>
12
12
 
@@ -1,6 +1,7 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  sap.ui.define(["sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/fe/test/Utils"], function(
6
7
  Opa5,
@@ -1,10 +1,11 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  sap.ui.define(
6
7
  ["sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/ui/thirdparty/jquery", "sap/base/util/UriParameters", "./Utils", "./Stubs"],
7
- function(Opa5, OpaBuilder, jQuery, UriParameters, Utils, Stubs) {
8
+ function (Opa5, OpaBuilder, jQuery, UriParameters, Utils, Stubs) {
8
9
  "use strict";
9
10
 
10
11
  /**
@@ -21,7 +22,7 @@ sap.ui.define(
21
22
  * @public
22
23
  */
23
24
  var BaseArrangements = Opa5.extend("sap.fe.test.BaseArrangements", {
24
- constructor: function(mSettings) {
25
+ constructor: function (mSettings) {
25
26
  Opa5.apply(this);
26
27
  var oUriParams = new UriParameters(window.location.href),
27
28
  mDefaultLaunchParameters = {
@@ -50,10 +51,10 @@ sap.ui.define(
50
51
  * @name sap.fe.test.BaseArrangements#iStartMyApp
51
52
  * @public
52
53
  */
53
- iStartMyApp: function(sAppHash, mUrlParameters) {
54
+ iStartMyApp: function (sAppHash, mUrlParameters) {
54
55
  var sLaunchUrl = this._mSettings.launchUrl,
55
56
  mUrlParameters = Utils.mergeObjects(this._mSettings.launchParameters, mUrlParameters),
56
- sUrlParameters = Object.keys(mUrlParameters).reduce(function(sCurrent, sKey) {
57
+ sUrlParameters = Object.keys(mUrlParameters).reduce(function (sCurrent, sKey) {
57
58
  return sCurrent + "&" + sKey + "=" + mUrlParameters[sKey];
58
59
  }, ""),
59
60
  sStartupUrl = sLaunchUrl + (sUrlParameters ? "?" + sUrlParameters.substring(1) : "") + (sAppHash ? "#" + sAppHash : "");
@@ -65,7 +66,7 @@ sap.ui.define(
65
66
  // (they are overridden in OPA by the iFrameLauncher)
66
67
  // We also need to override the native confirm dialog, as it blocks the test
67
68
  return OpaBuilder.create(this)
68
- .success(function() {
69
+ .success(function () {
69
70
  var oWindow = Opa5.getWindow();
70
71
 
71
72
  Stubs.stubAll(oWindow);
@@ -86,9 +87,9 @@ sap.ui.define(
86
87
  * @name sap.fe.test.BaseArrangements#resetTestData
87
88
  * @protected
88
89
  */
89
- resetTestData: function() {
90
+ resetTestData: function () {
90
91
  function _deleteDatabase(sName) {
91
- return new Promise(function(resolve, reject) {
92
+ return new Promise(function (resolve, reject) {
92
93
  var oRequest = indexedDB.deleteDatabase(sName);
93
94
  oRequest.onsuccess = resolve;
94
95
  oRequest.onerror = reject;
@@ -101,9 +102,9 @@ sap.ui.define(
101
102
  if (indexedDB) {
102
103
  if (typeof indexedDB.databases === "function") {
103
104
  // browser supports enumerating existing databases - wipe all.
104
- return indexedDB.databases().then(function(aDatabases) {
105
+ return indexedDB.databases().then(function (aDatabases) {
105
106
  return Promise.all(
106
- aDatabases.map(function(oDatabase) {
107
+ aDatabases.map(function (oDatabase) {
107
108
  return _deleteDatabase(oDatabase.name);
108
109
  })
109
110
  );
@@ -127,23 +128,23 @@ sap.ui.define(
127
128
  * @name sap.fe.test.BaseArrangements#iResetTestData
128
129
  * @public
129
130
  */
130
- iResetTestData: function() {
131
+ iResetTestData: function () {
131
132
  var that = this,
132
133
  bSuccess = false;
133
134
 
134
135
  return OpaBuilder.create(this)
135
- .success(function() {
136
+ .success(function () {
136
137
  //clear local storage so no flex change / variant management zombies exist
137
138
  that.resetTestData()
138
- .finally(function() {
139
+ .finally(function () {
139
140
  bSuccess = true;
140
141
  })
141
- .catch(function(oError) {
142
+ .catch(function (oError) {
142
143
  throw oError;
143
144
  });
144
145
 
145
146
  return OpaBuilder.create(this)
146
- .check(function() {
147
+ .check(function () {
147
148
  return bSuccess;
148
149
  })
149
150
  .execute();
@@ -152,6 +153,53 @@ sap.ui.define(
152
153
  .execute();
153
154
  },
154
155
 
156
+ /**
157
+ * Resets the mock data.
158
+ *
159
+ * @param {object} [oAppInfo] The application id or a uri pointing to the service. One of the following properties needs to be provided within the parameter:
160
+ * <code><pre>
161
+ * {
162
+ * <ServiceUri>: <uri of the service like listed in the manifest (sap.app.dataSources.mainService.uri)>
163
+ * <AppId>: <application id like listed in the manifest (sap.app.id)>
164
+ * }
165
+ * </pre></code>
166
+ * NOTE: When passing the AppId, the application needs to be running already. Calling the function before the application is started can be done by passing the ServiceUri.
167
+ *
168
+ * @returns {object} The result of the {@link sap.ui.test.Opa5#waitFor} function, to be used for chained statements
169
+ *
170
+ * @function
171
+ * @name sap.fe.test.BaseArrangements#iResetMockData
172
+ * @public
173
+ */
174
+ iResetMockData: function (oAppInfo) {
175
+ var bSuccess = false;
176
+ return OpaBuilder.create(this)
177
+ .success(function () {
178
+ var sServiceUri = oAppInfo.AppId
179
+ ? Opa5.getWindow()[oAppInfo.AppId].Component.getMetadata().getManifest()["sap.app"]["dataSources"][
180
+ "mainService"
181
+ ]["uri"]
182
+ : oAppInfo.ServiceUri,
183
+ oReloadMockData = jQuery.post(sServiceUri + "\\$metadata/reload");
184
+
185
+ Promise.all([oReloadMockData])
186
+ .finally(function () {
187
+ bSuccess = true;
188
+ })
189
+ .catch(function (oError) {
190
+ throw oError;
191
+ });
192
+
193
+ return OpaBuilder.create(this)
194
+ .check(function () {
195
+ return bSuccess;
196
+ })
197
+ .execute();
198
+ })
199
+ .description(Utils.formatMessage("Resetting mock data"))
200
+ .execute();
201
+ },
202
+
155
203
  /**
156
204
  * Tears down the current application.
157
205
  *
@@ -161,9 +209,9 @@ sap.ui.define(
161
209
  * @name sap.fe.test.BaseArrangements#iTearDownMyApp
162
210
  * @public
163
211
  */
164
- iTearDownMyApp: function() {
212
+ iTearDownMyApp: function () {
165
213
  return OpaBuilder.create(this)
166
- .do(function() {
214
+ .do(function () {
167
215
  var oWindow = Opa5.getWindow();
168
216
  Stubs.restoreAll(oWindow);
169
217
  })
@@ -181,10 +229,10 @@ sap.ui.define(
181
229
  * @name sap.fe.test.BaseArrangements#iRestartMyApp
182
230
  * @public
183
231
  */
184
- iRestartMyApp: function() {
232
+ iRestartMyApp: function () {
185
233
  var that = this;
186
234
  return OpaBuilder.create(this)
187
- .success(function() {
235
+ .success(function () {
188
236
  var sCurrentHash = Opa5.getWindow().location.hash.substring(1);
189
237
  return that.iTearDownMyApp().and.iStartMyApp(sCurrentHash);
190
238
  })
@@ -1,6 +1,7 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  sap.ui.define(["sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/fe/test/Utils"], function(
6
7
  Opa5,
@@ -1,6 +1,7 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  sap.ui.define(["sap/ui/test/OpaBuilder", "sap/ui/test/Opa5", "sap/fe/test/Utils"], function(OpaBuilder, Opa5, Utils) {
6
7
  "use strict";
@@ -1,6 +1,7 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  /**
6
7
  * Actions and assertions to be used with a page hosted in an FCL
@@ -0,0 +1,66 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/InternalEditFlow", "sap/fe/core/PageController", "sap/ui/mdc/FilterBar"], function (generic, InternalEditFlow, PageController, FilterBar) {
6
+ "use strict";
7
+
8
+ var _exports = {};
9
+ var mock = generic.mock;
10
+
11
+ function mockListReportController() {
12
+ // manually add ListReportController.controller functions since I am unable to import the prototype
13
+ var listReport = {
14
+ _getFilterBarControl: jest.fn(),
15
+ _getControls: jest.fn(),
16
+ _isFilterBarHidden: jest.fn(),
17
+ _isMultiMode: jest.fn(),
18
+ _setCountsOutDated: jest.fn(),
19
+ _getCurrentControl: jest.fn(),
20
+ _getMultiModeControl: jest.fn(),
21
+ _hasMultiVisualizations: jest.fn(),
22
+ _shouldAutoTriggerSearch: jest.fn(),
23
+ _getTable: jest.fn(),
24
+ getExtensionAPI: jest.fn(),
25
+ _editFlow: mock(InternalEditFlow)
26
+ };
27
+ return Object.assign(mock(PageController), listReport);
28
+ }
29
+
30
+ _exports.mockListReportController = mockListReportController;
31
+
32
+ function mockObjectPageController() {
33
+ // manually add ListReportController.controller functions since I am unable to import the prototype
34
+ var objectPage = {
35
+ getStickyEditMode: jest.fn(),
36
+ getExtensionAPI: jest.fn(),
37
+ _editFlow: mock(InternalEditFlow)
38
+ };
39
+ return Object.assign(mock(PageController), objectPage);
40
+ }
41
+
42
+ _exports.mockObjectPageController = mockObjectPageController;
43
+
44
+ function mockContextForExtension(extension, controller, base) {
45
+ var view = controller.getView();
46
+
47
+ extension.getView = function () {
48
+ return view;
49
+ };
50
+
51
+ var mockedBase = mock(base || {});
52
+ return Object.assign(mockedBase, extension);
53
+ }
54
+
55
+ _exports.mockContextForExtension = mockContextForExtension;
56
+
57
+ function mockFilterBar() {
58
+ var filterBar = mock(FilterBar);
59
+ filterBar.mock.waitForInitialization = jest.fn();
60
+ return filterBar;
61
+ }
62
+
63
+ _exports.mockFilterBar = mockFilterBar;
64
+ return _exports;
65
+ }, false);
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZlTW9ja3MudHMiXSwibmFtZXMiOlsibW9ja0xpc3RSZXBvcnRDb250cm9sbGVyIiwibGlzdFJlcG9ydCIsIl9nZXRGaWx0ZXJCYXJDb250cm9sIiwiamVzdCIsImZuIiwiX2dldENvbnRyb2xzIiwiX2lzRmlsdGVyQmFySGlkZGVuIiwiX2lzTXVsdGlNb2RlIiwiX3NldENvdW50c091dERhdGVkIiwiX2dldEN1cnJlbnRDb250cm9sIiwiX2dldE11bHRpTW9kZUNvbnRyb2wiLCJfaGFzTXVsdGlWaXN1YWxpemF0aW9ucyIsIl9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaCIsIl9nZXRUYWJsZSIsImdldEV4dGVuc2lvbkFQSSIsIl9lZGl0RmxvdyIsIm1vY2siLCJJbnRlcm5hbEVkaXRGbG93IiwiT2JqZWN0IiwiYXNzaWduIiwiUGFnZUNvbnRyb2xsZXIiLCJtb2NrT2JqZWN0UGFnZUNvbnRyb2xsZXIiLCJvYmplY3RQYWdlIiwiZ2V0U3RpY2t5RWRpdE1vZGUiLCJtb2NrQ29udGV4dEZvckV4dGVuc2lvbiIsImV4dGVuc2lvbiIsImNvbnRyb2xsZXIiLCJiYXNlIiwidmlldyIsImdldFZpZXciLCJtb2NrZWRCYXNlIiwibW9ja0ZpbHRlckJhciIsImZpbHRlckJhciIsIkZpbHRlckJhciIsIndhaXRGb3JJbml0aWFsaXphdGlvbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7OztBQTBCTyxXQUFTQSx3QkFBVCxHQUE2SDtBQUNuSTtBQUNBLFFBQU1DLFVBQTJFLEdBQUc7QUFDbkZDLE1BQUFBLG9CQUFvQixFQUFFQyxJQUFJLENBQUNDLEVBQUwsRUFENkQ7QUFFbkZDLE1BQUFBLFlBQVksRUFBRUYsSUFBSSxDQUFDQyxFQUFMLEVBRnFFO0FBR25GRSxNQUFBQSxrQkFBa0IsRUFBRUgsSUFBSSxDQUFDQyxFQUFMLEVBSCtEO0FBSW5GRyxNQUFBQSxZQUFZLEVBQUVKLElBQUksQ0FBQ0MsRUFBTCxFQUpxRTtBQUtuRkksTUFBQUEsa0JBQWtCLEVBQUVMLElBQUksQ0FBQ0MsRUFBTCxFQUwrRDtBQU1uRkssTUFBQUEsa0JBQWtCLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxFQU4rRDtBQU9uRk0sTUFBQUEsb0JBQW9CLEVBQUVQLElBQUksQ0FBQ0MsRUFBTCxFQVA2RDtBQVFuRk8sTUFBQUEsdUJBQXVCLEVBQUVSLElBQUksQ0FBQ0MsRUFBTCxFQVIwRDtBQVNuRlEsTUFBQUEsd0JBQXdCLEVBQUVULElBQUksQ0FBQ0MsRUFBTCxFQVR5RDtBQVVuRlMsTUFBQUEsU0FBUyxFQUFFVixJQUFJLENBQUNDLEVBQUwsRUFWd0U7QUFXbkZVLE1BQUFBLGVBQWUsRUFBRVgsSUFBSSxDQUFDQyxFQUFMLEVBWGtFO0FBWW5GVyxNQUFBQSxTQUFTLEVBQUVDLElBQUksQ0FBQ0MsZ0JBQUQ7QUFab0UsS0FBcEY7QUFjQSxXQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0gsSUFBSSxDQUFDSSxjQUFELENBQWxCLEVBQTJDbkIsVUFBM0MsQ0FBUDtBQUdBOzs7O0FBRU0sV0FBU29CLHdCQUFULEdBQTZIO0FBQ25JO0FBQ0EsUUFBTUMsVUFBMkUsR0FBRztBQUNuRkMsTUFBQUEsaUJBQWlCLEVBQUVwQixJQUFJLENBQUNDLEVBQUwsRUFEZ0U7QUFFbkZVLE1BQUFBLGVBQWUsRUFBRVgsSUFBSSxDQUFDQyxFQUFMLEVBRmtFO0FBR25GVyxNQUFBQSxTQUFTLEVBQUVDLElBQUksQ0FBQ0MsZ0JBQUQ7QUFIb0UsS0FBcEY7QUFLQSxXQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0gsSUFBSSxDQUFDSSxjQUFELENBQWxCLEVBQTJDRSxVQUEzQyxDQUFQO0FBR0E7Ozs7QUFFTSxXQUFTRSx1QkFBVCxDQUNOQyxTQURNLEVBRU5DLFVBRk0sRUFHTkMsSUFITSxFQUlrQztBQUN4QyxRQUFNQyxJQUFJLEdBQUdGLFVBQVUsQ0FBQ0csT0FBWCxFQUFiOztBQUNDSixJQUFBQSxTQUFELENBQW1CSSxPQUFuQixHQUE2QjtBQUFBLGFBQU1ELElBQU47QUFBQSxLQUE3Qjs7QUFDQSxRQUFNRSxVQUFVLEdBQUdkLElBQUksQ0FBQ1csSUFBSSxJQUFJLEVBQVQsQ0FBdkI7QUFDQSxXQUFPVCxNQUFNLENBQUNDLE1BQVAsQ0FBY1csVUFBZCxFQUEwQkwsU0FBMUIsQ0FBUDtBQUNBOzs7O0FBRU0sV0FBU00sYUFBVCxHQUFnSDtBQUN0SCxRQUFNQyxTQUFTLEdBQUdoQixJQUFJLENBQUNpQixTQUFELENBQXRCO0FBQ0FELElBQUFBLFNBQVMsQ0FBQ2hCLElBQVYsQ0FBZWtCLHFCQUFmLEdBQXVDL0IsSUFBSSxDQUFDQyxFQUFMLEVBQXZDO0FBQ0EsV0FBTzRCLFNBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbW9jaywgTW9ja2VkSW5zdGFuY2UsIFVJNUluc3RhbmNlVHlwZSwgV2l0aE1vY2sgfSBmcm9tIFwiQHNhcC11eC9qZXN0LW1vY2stdWk1L2Rpc3QvZ2VuZXJpY1wiO1xuaW1wb3J0IEludGVybmFsRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsRWRpdEZsb3dcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IEZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcblxuaW50ZXJmYWNlIENvbW1vbkNvbnRyb2xsZXJUeXBlIHtcblx0Z2V0RXh0ZW5zaW9uQVBJOiBhbnk7XG5cdF9lZGl0RmxvdzogV2l0aE1vY2s8SW50ZXJuYWxFZGl0Rmxvdz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlcG9ydENvbnRyb2xsZXJUeXBlIHtcblx0X2dldEZpbHRlckJhckNvbnRyb2w6IGFueTtcblx0X2dldENvbnRyb2xzOiBhbnk7XG5cdF9pc0ZpbHRlckJhckhpZGRlbjogYW55O1xuXHRfaXNNdWx0aU1vZGU6IGFueTtcblx0X3NldENvdW50c091dERhdGVkOiBhbnk7XG5cdF9nZXRDdXJyZW50Q29udHJvbDogYW55O1xuXHRfZ2V0TXVsdGlNb2RlQ29udHJvbDogYW55O1xuXHRfaGFzTXVsdGlWaXN1YWxpemF0aW9uczogYW55O1xuXHRfc2hvdWxkQXV0b1RyaWdnZXJTZWFyY2g6IGFueTtcblx0X2dldFRhYmxlOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0UGFnZUNvbnRyb2xsZXJUeXBlIHtcblx0Z2V0U3RpY2t5RWRpdE1vZGU6IGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tMaXN0UmVwb3J0Q29udHJvbGxlcigpOiBXaXRoTW9jazxDb250cm9sbGVyICYgUGFnZUNvbnRyb2xsZXIgJiBMaXN0UmVwb3J0Q29udHJvbGxlclR5cGUgJiBDb21tb25Db250cm9sbGVyVHlwZT4ge1xuXHQvLyBtYW51YWxseSBhZGQgTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlciBmdW5jdGlvbnMgc2luY2UgSSBhbSB1bmFibGUgdG8gaW1wb3J0IHRoZSBwcm90b3R5cGVcblx0Y29uc3QgbGlzdFJlcG9ydDogTW9ja2VkSW5zdGFuY2U8TGlzdFJlcG9ydENvbnRyb2xsZXJUeXBlICYgQ29tbW9uQ29udHJvbGxlclR5cGU+ID0ge1xuXHRcdF9nZXRGaWx0ZXJCYXJDb250cm9sOiBqZXN0LmZuKCksXG5cdFx0X2dldENvbnRyb2xzOiBqZXN0LmZuKCksXG5cdFx0X2lzRmlsdGVyQmFySGlkZGVuOiBqZXN0LmZuKCksXG5cdFx0X2lzTXVsdGlNb2RlOiBqZXN0LmZuKCksXG5cdFx0X3NldENvdW50c091dERhdGVkOiBqZXN0LmZuKCksXG5cdFx0X2dldEN1cnJlbnRDb250cm9sOiBqZXN0LmZuKCksXG5cdFx0X2dldE11bHRpTW9kZUNvbnRyb2w6IGplc3QuZm4oKSxcblx0XHRfaGFzTXVsdGlWaXN1YWxpemF0aW9uczogamVzdC5mbigpLFxuXHRcdF9zaG91bGRBdXRvVHJpZ2dlclNlYXJjaDogamVzdC5mbigpLFxuXHRcdF9nZXRUYWJsZTogamVzdC5mbigpLFxuXHRcdGdldEV4dGVuc2lvbkFQSTogamVzdC5mbigpLFxuXHRcdF9lZGl0RmxvdzogbW9jayhJbnRlcm5hbEVkaXRGbG93KSBhcyBhbnlcblx0fTtcblx0cmV0dXJuIE9iamVjdC5hc3NpZ24obW9jayhQYWdlQ29udHJvbGxlcikgYXMgYW55LCBsaXN0UmVwb3J0KSBhcyBXaXRoTW9jazxcblx0XHRDb250cm9sbGVyICYgUGFnZUNvbnRyb2xsZXIgJiBMaXN0UmVwb3J0Q29udHJvbGxlclR5cGUgJiBDb21tb25Db250cm9sbGVyVHlwZVxuXHQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja09iamVjdFBhZ2VDb250cm9sbGVyKCk6IFdpdGhNb2NrPENvbnRyb2xsZXIgJiBQYWdlQ29udHJvbGxlciAmIE9iamVjdFBhZ2VDb250cm9sbGVyVHlwZSAmIENvbW1vbkNvbnRyb2xsZXJUeXBlPiB7XG5cdC8vIG1hbnVhbGx5IGFkZCBMaXN0UmVwb3J0Q29udHJvbGxlci5jb250cm9sbGVyIGZ1bmN0aW9ucyBzaW5jZSBJIGFtIHVuYWJsZSB0byBpbXBvcnQgdGhlIHByb3RvdHlwZVxuXHRjb25zdCBvYmplY3RQYWdlOiBNb2NrZWRJbnN0YW5jZTxPYmplY3RQYWdlQ29udHJvbGxlclR5cGUgJiBDb21tb25Db250cm9sbGVyVHlwZT4gPSB7XG5cdFx0Z2V0U3RpY2t5RWRpdE1vZGU6IGplc3QuZm4oKSxcblx0XHRnZXRFeHRlbnNpb25BUEk6IGplc3QuZm4oKSxcblx0XHRfZWRpdEZsb3c6IG1vY2soSW50ZXJuYWxFZGl0RmxvdykgYXMgV2l0aE1vY2s8SW50ZXJuYWxFZGl0Rmxvdz4gYXMgYW55XG5cdH07XG5cdHJldHVybiBPYmplY3QuYXNzaWduKG1vY2soUGFnZUNvbnRyb2xsZXIpIGFzIGFueSwgb2JqZWN0UGFnZSkgYXMgV2l0aE1vY2s8XG5cdFx0Q29udHJvbGxlciAmIFBhZ2VDb250cm9sbGVyICYgT2JqZWN0UGFnZUNvbnRyb2xsZXJUeXBlICYgQ29tbW9uQ29udHJvbGxlclR5cGVcblx0Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tDb250ZXh0Rm9yRXh0ZW5zaW9uPEVYVCBleHRlbmRzIG9iamVjdCwgQkFTRSBleHRlbmRzIG9iamVjdD4oXG5cdGV4dGVuc2lvbjogRVhULFxuXHRjb250cm9sbGVyOiBXaXRoTW9jazxDb250cm9sbGVyPixcblx0YmFzZT86IEJBU0Vcbik6IFdpdGhNb2NrPEVYVCAmIFVJNUluc3RhbmNlVHlwZTxCQVNFPj4ge1xuXHRjb25zdCB2aWV3ID0gY29udHJvbGxlci5nZXRWaWV3KCk7XG5cdChleHRlbnNpb24gYXMgYW55KS5nZXRWaWV3ID0gKCkgPT4gdmlldztcblx0Y29uc3QgbW9ja2VkQmFzZSA9IG1vY2soYmFzZSB8fCB7fSk7XG5cdHJldHVybiBPYmplY3QuYXNzaWduKG1vY2tlZEJhc2UsIGV4dGVuc2lvbikgYXMgV2l0aE1vY2s8RVhUICYgVUk1SW5zdGFuY2VUeXBlPEJBU0U+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tGaWx0ZXJCYXIoKTogV2l0aE1vY2s8RmlsdGVyQmFyICYgeyB3YWl0Rm9ySW5pdGlhbGl6YXRpb246IEZ1bmN0aW9uOyBfYlNlYXJjaFRyaWdnZXJlZDogQm9vbGVhbiB9PiB7XG5cdGNvbnN0IGZpbHRlckJhciA9IG1vY2soRmlsdGVyQmFyKSBhcyBXaXRoTW9jazxGaWx0ZXJCYXIgJiB7IHdhaXRGb3JJbml0aWFsaXphdGlvbjogRnVuY3Rpb247IF9iU2VhcmNoVHJpZ2dlcmVkOiBCb29sZWFuIH0+O1xuXHRmaWx0ZXJCYXIubW9jay53YWl0Rm9ySW5pdGlhbGl6YXRpb24gPSBqZXN0LmZuKCk7XG5cdHJldHVybiBmaWx0ZXJCYXI7XG59XG4iXX0=
@@ -0,0 +1,77 @@
1
+ import { mock, MockedInstance, UI5InstanceType, WithMock } from "@sap-ux/jest-mock-ui5/dist/generic";
2
+ import InternalEditFlow from "sap/fe/core/controllerextensions/InternalEditFlow";
3
+ import PageController from "sap/fe/core/PageController";
4
+ import Controller from "sap/ui/core/mvc/Controller";
5
+ import FilterBar from "sap/ui/mdc/FilterBar";
6
+
7
+ interface CommonControllerType {
8
+ getExtensionAPI: any;
9
+ _editFlow: WithMock<InternalEditFlow>;
10
+ }
11
+
12
+ export interface ListReportControllerType {
13
+ _getFilterBarControl: any;
14
+ _getControls: any;
15
+ _isFilterBarHidden: any;
16
+ _isMultiMode: any;
17
+ _setCountsOutDated: any;
18
+ _getCurrentControl: any;
19
+ _getMultiModeControl: any;
20
+ _hasMultiVisualizations: any;
21
+ _shouldAutoTriggerSearch: any;
22
+ _getTable: any;
23
+ }
24
+
25
+ export interface ObjectPageControllerType {
26
+ getStickyEditMode: any;
27
+ }
28
+
29
+ export function mockListReportController(): WithMock<Controller & PageController & ListReportControllerType & CommonControllerType> {
30
+ // manually add ListReportController.controller functions since I am unable to import the prototype
31
+ const listReport: MockedInstance<ListReportControllerType & CommonControllerType> = {
32
+ _getFilterBarControl: jest.fn(),
33
+ _getControls: jest.fn(),
34
+ _isFilterBarHidden: jest.fn(),
35
+ _isMultiMode: jest.fn(),
36
+ _setCountsOutDated: jest.fn(),
37
+ _getCurrentControl: jest.fn(),
38
+ _getMultiModeControl: jest.fn(),
39
+ _hasMultiVisualizations: jest.fn(),
40
+ _shouldAutoTriggerSearch: jest.fn(),
41
+ _getTable: jest.fn(),
42
+ getExtensionAPI: jest.fn(),
43
+ _editFlow: mock(InternalEditFlow) as any
44
+ };
45
+ return Object.assign(mock(PageController) as any, listReport) as WithMock<
46
+ Controller & PageController & ListReportControllerType & CommonControllerType
47
+ >;
48
+ }
49
+
50
+ export function mockObjectPageController(): WithMock<Controller & PageController & ObjectPageControllerType & CommonControllerType> {
51
+ // manually add ListReportController.controller functions since I am unable to import the prototype
52
+ const objectPage: MockedInstance<ObjectPageControllerType & CommonControllerType> = {
53
+ getStickyEditMode: jest.fn(),
54
+ getExtensionAPI: jest.fn(),
55
+ _editFlow: mock(InternalEditFlow) as WithMock<InternalEditFlow> as any
56
+ };
57
+ return Object.assign(mock(PageController) as any, objectPage) as WithMock<
58
+ Controller & PageController & ObjectPageControllerType & CommonControllerType
59
+ >;
60
+ }
61
+
62
+ export function mockContextForExtension<EXT extends object, BASE extends object>(
63
+ extension: EXT,
64
+ controller: WithMock<Controller>,
65
+ base?: BASE
66
+ ): WithMock<EXT & UI5InstanceType<BASE>> {
67
+ const view = controller.getView();
68
+ (extension as any).getView = () => view;
69
+ const mockedBase = mock(base || {});
70
+ return Object.assign(mockedBase, extension) as WithMock<EXT & UI5InstanceType<BASE>>;
71
+ }
72
+
73
+ export function mockFilterBar(): WithMock<FilterBar & { waitForInitialization: Function; _bSearchTriggered: Boolean }> {
74
+ const filterBar = mock(FilterBar) as WithMock<FilterBar & { waitForInitialization: Function; _bSearchTriggered: Boolean }>;
75
+ filterBar.mock.waitForInitialization = jest.fn();
76
+ return filterBar;
77
+ }
@@ -1,6 +1,7 @@
1
1
  /*
2
- * ! SAPUI5
3
- * (c) Copyright 2009-2022 SAP SE. All rights reserved.
2
+ * ! SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+
4
5
  */
5
6
  sap.ui.define(["sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/ui/qunit/QUnitUtils"], function(Opa5, OpaBuilder, QUnitUtils) {
6
7
  "use strict";