@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.
- package/package.json +6 -3
- package/src/sap/fe/test/.library +1 -1
- package/src/sap/fe/test/BaseActions.js +3 -2
- package/src/sap/fe/test/BaseArrangements.js +68 -20
- package/src/sap/fe/test/BaseAssertions.js +3 -2
- package/src/sap/fe/test/ConfirmDialog.js +3 -2
- package/src/sap/fe/test/FCLView.js +3 -2
- package/src/sap/fe/test/FeMocks.js +66 -0
- package/src/sap/fe/test/FeMocks.ts +77 -0
- package/src/sap/fe/test/Flexibility.js +3 -2
- package/src/sap/fe/test/FlexibleColumnLayout.js +151 -143
- package/src/sap/fe/test/JestTemplatingHelper.js +96 -35
- package/src/sap/fe/test/JestTemplatingHelper.ts +115 -66
- package/src/sap/fe/test/JourneyRunner.js +3 -2
- package/src/sap/fe/test/ListReport.js +74 -70
- package/src/sap/fe/test/LocationUtil.js +3 -2
- package/src/sap/fe/test/ObjectPage.js +88 -125
- package/src/sap/fe/test/Shell.js +3 -2
- package/src/sap/fe/test/Stubs.js +3 -2
- package/src/sap/fe/test/TemplatePage.js +46 -29
- package/src/sap/fe/test/TemplatingTestUtils.js +3 -2
- package/src/sap/fe/test/UI5MockHelper.js +163 -217
- package/src/sap/fe/test/UI5MockHelper.ts +45 -10
- package/src/sap/fe/test/Utils.js +3 -2
- package/src/sap/fe/test/api/APIHelper.js +29 -17
- package/src/sap/fe/test/api/BaseAPI.js +4 -2
- package/src/sap/fe/test/api/ChartActions.js +3 -2
- package/src/sap/fe/test/api/ChartAssertions.js +3 -2
- package/src/sap/fe/test/api/DialogAPI.js +17 -4
- package/src/sap/fe/test/api/DialogActions.js +6 -3
- package/src/sap/fe/test/api/DialogAssertions.js +3 -2
- package/src/sap/fe/test/api/DialogCreateActions.js +4 -3
- package/src/sap/fe/test/api/DialogCreateAssertions.js +4 -3
- package/src/sap/fe/test/api/DialogMessageActions.js +82 -52
- package/src/sap/fe/test/api/DialogMessageAssertions.js +4 -3
- package/src/sap/fe/test/api/DialogType.js +3 -2
- package/src/sap/fe/test/api/DialogValueHelpActions.js +4 -3
- package/src/sap/fe/test/api/DialogValueHelpAssertions.js +4 -3
- package/src/sap/fe/test/api/EditState.js +3 -2
- package/src/sap/fe/test/api/FilterBarAPI.js +12 -3
- package/src/sap/fe/test/api/FilterBarActions.js +3 -2
- package/src/sap/fe/test/api/FilterBarAssertions.js +3 -2
- package/src/sap/fe/test/api/FooterAPI.js +3 -2
- package/src/sap/fe/test/api/FooterActionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterActionsOP.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsBase.js +3 -2
- package/src/sap/fe/test/api/FooterAssertionsOP.js +3 -2
- package/src/sap/fe/test/api/FormAPI.js +3 -2
- package/src/sap/fe/test/api/FormActions.js +3 -2
- package/src/sap/fe/test/api/FormAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAPI.js +3 -2
- package/src/sap/fe/test/api/HeaderActions.js +232 -228
- package/src/sap/fe/test/api/HeaderActionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertions.js +3 -2
- package/src/sap/fe/test/api/HeaderAssertionsLR.js +3 -2
- package/src/sap/fe/test/api/HeaderLR.js +3 -2
- package/src/sap/fe/test/api/KPICardAPI.js +3 -2
- package/src/sap/fe/test/api/KPICardActions.js +3 -2
- package/src/sap/fe/test/api/KPICardAssertions.js +3 -2
- package/src/sap/fe/test/api/TableAPI.js +3 -2
- package/src/sap/fe/test/api/TableActions.js +60 -90
- package/src/sap/fe/test/api/TableAssertions.js +6 -6
- package/src/sap/fe/test/builder/DialogBuilder.js +3 -2
- package/src/sap/fe/test/builder/FEBuilder.js +3 -2
- package/src/sap/fe/test/builder/KPIBuilder.js +3 -2
- package/src/sap/fe/test/builder/MacroFieldBuilder.js +6 -2
- package/src/sap/fe/test/builder/MdcFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterBarBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcFilterFieldBuilder.js +3 -2
- package/src/sap/fe/test/builder/MdcTableBuilder.js +166 -182
- package/src/sap/fe/test/builder/OverflowToolbarBuilder.js +3 -2
- package/src/sap/fe/test/builder/VMBuilder.js +3 -2
- package/src/sap/fe/test/internal/FEArrangements.js +3 -2
- package/src/sap/fe/test/internal/FEJourneyRunner.js +9 -5
- package/src/sap/fe/test/library.js +26 -34
- package/src/sap/fe/test/library.ts +28 -0
- package/src/sap/fe/test/massEdit.js +3 -2
- 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.
|
|
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
|
-
"
|
|
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
|
}
|
package/src/sap/fe/test/.library
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* ! SAPUI5
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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";
|
|
@@ -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
|
-
|
|
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";
|