@sapui5/sap.fe.test 1.98.0 → 1.99.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 +5 -2
- package/src/sap/fe/test/.library +1 -1
- package/src/sap/fe/test/BaseActions.js +3 -2
- package/src/sap/fe/test/BaseArrangements.js +3 -2
- 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 +3 -2
- package/src/sap/fe/test/JestTemplatingHelper.js +78 -22
- package/src/sap/fe/test/JestTemplatingHelper.ts +66 -22
- package/src/sap/fe/test/JourneyRunner.js +3 -2
- package/src/sap/fe/test/ListReport.js +3 -2
- package/src/sap/fe/test/LocationUtil.js +3 -2
- package/src/sap/fe/test/ObjectPage.js +9 -6
- 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 +3 -2
- package/src/sap/fe/test/TemplatingTestUtils.js +3 -2
- package/src/sap/fe/test/UI5MockHelper.js +44 -21
- package/src/sap/fe/test/UI5MockHelper.ts +28 -8
- package/src/sap/fe/test/Utils.js +3 -2
- package/src/sap/fe/test/api/APIHelper.js +3 -2
- 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 +3 -2
- 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 +19 -3
- 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 +3 -2
- 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 +3 -2
- 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 +3 -21
- 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 +3 -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 +7 -2
- 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 +4 -3
- package/src/sap/fe/test/massEdit.js +3 -2
- package/ui5.yaml +0 -3
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
import { PhantomUtil } from "sap/fe/macros";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
2
|
+
import _MetadataRequestor from "sap/ui/model/odata/v4/lib/_MetadataRequestor";
|
|
3
|
+
import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
4
|
+
import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
|
|
5
|
+
import Log from "sap/base/Log";
|
|
6
6
|
import xpath from "xpath";
|
|
7
7
|
import * as fs from "fs";
|
|
8
8
|
import { compileSources, to } from "@sap/cds-compiler";
|
|
9
9
|
import { format } from "prettier";
|
|
10
|
-
import
|
|
10
|
+
import BindingParser from "sap/ui/base/BindingParser";
|
|
11
11
|
import { AnyAnnotation, ConverterOutput, EntitySet, Property } from "@sap-ux/annotation-converter";
|
|
12
12
|
import { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
14
|
+
import InvisibleText from "sap/ui/core/InvisibleText";
|
|
15
15
|
import { ListReportManifestSettings, ObjectPageManifestSettings } from "sap/fe/core/converters/ManifestSettings";
|
|
16
16
|
import { IssueCategory, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
|
|
17
17
|
import { IDiagnostics } from "sap/fe/core/converters/TemplateConverter";
|
|
18
|
-
import
|
|
18
|
+
import merge from "sap/base/util/merge";
|
|
19
19
|
import * as path from "path";
|
|
20
20
|
import ConverterContext from "sap/fe/core/converters/ConverterContext";
|
|
21
21
|
import SideEffectsFactory from "sap/fe/core/services/SideEffectsServiceFactory";
|
|
22
|
+
import TemplateModel from "sap/fe/core/TemplateModel";
|
|
22
23
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
23
24
|
const formatXml = require("xml-formatter");
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
import * as TemplateModel from "sap/fe/core/TemplateModel";
|
|
27
25
|
|
|
28
26
|
Log.setLevel(1 as any, "sap.ui.core.util.XMLPreprocessor");
|
|
29
27
|
jest.setTimeout(40000);
|
|
@@ -38,8 +36,10 @@ const nameSpaceMap = {
|
|
|
38
36
|
"core": "sap.ui.core",
|
|
39
37
|
"m": "sap.m",
|
|
40
38
|
"f": "sap.ui.layout.form",
|
|
39
|
+
"internalMacro": "sap.fe.macros.internal",
|
|
41
40
|
"mdc": "sap.ui.mdc",
|
|
42
41
|
"mdcField": "sap.ui.mdc.field",
|
|
42
|
+
"mdcTable": "sap.ui.mdc.table",
|
|
43
43
|
"u": "sap.ui.unified",
|
|
44
44
|
"macroMicroChart": "sap.fe.macros.microchart",
|
|
45
45
|
"microChart": "sap.suite.ui.microchart"
|
|
@@ -105,8 +105,7 @@ export const serializeXML = function(xmlDom: Node) {
|
|
|
105
105
|
*/
|
|
106
106
|
export const compileCDS = function(sCDSUrl: string) {
|
|
107
107
|
const cdsString = fs.readFileSync(sCDSUrl, "utf-8");
|
|
108
|
-
const
|
|
109
|
-
const edmxContent = to.edmx(csn, { service: "sap.fe.test.JestService" });
|
|
108
|
+
const edmxContent = cds2edmx(cdsString, "sap.fe.test.JestService");
|
|
110
109
|
const dir = path.resolve(sCDSUrl, "..", "gen");
|
|
111
110
|
const edmxUrl = path.resolve(dir, path.basename(sCDSUrl).replace(".cds", ".xml"));
|
|
112
111
|
|
|
@@ -118,6 +117,22 @@ export const compileCDS = function(sCDSUrl: string) {
|
|
|
118
117
|
return edmxUrl;
|
|
119
118
|
};
|
|
120
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Compile CDS to EDMX.
|
|
122
|
+
*
|
|
123
|
+
* @param cds The CDS model. It must define at least one service.
|
|
124
|
+
* @param service The fully-qualified name of the service to compile. Defaults to "sap.fe.test.JestService".
|
|
125
|
+
* @returns The compiled service model as EDMX.
|
|
126
|
+
*/
|
|
127
|
+
export function cds2edmx(cds: string, service: string = "sap.fe.test.JestService") {
|
|
128
|
+
const csn = compileSources({ "string.cds": cds }, {});
|
|
129
|
+
const edmx = to.edmx(csn, { service: service, odataForeignKeys: true, odataFormat: "structured", odataContainment: false });
|
|
130
|
+
if (!edmx) {
|
|
131
|
+
throw new Error(`Compilation failed. Hint: Make sure that the CDS model defines service ${service}.`);
|
|
132
|
+
}
|
|
133
|
+
return edmx;
|
|
134
|
+
}
|
|
135
|
+
|
|
121
136
|
export const getFakeSideEffectsService = async function(oMetaModel: ODataMetaModel): Promise<any> {
|
|
122
137
|
const oServiceContext = { scopeObject: {}, scopeType: "", settings: {} };
|
|
123
138
|
return new SideEffectsFactory().createInstance(oServiceContext).then(function(oServiceInstance: any) {
|
|
@@ -200,15 +215,41 @@ export const evaluateBinding = function(bindingString: string, ...args: any[]) {
|
|
|
200
215
|
return bindingElement.formatter.apply(undefined, args);
|
|
201
216
|
};
|
|
202
217
|
|
|
203
|
-
|
|
218
|
+
type ModelContent = {
|
|
219
|
+
[name: string]: any;
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Evaluate a binding against a model.
|
|
224
|
+
*
|
|
225
|
+
* @param bindingString The binding string.
|
|
226
|
+
* @param modelContent Content of the default model to use for evaluation.
|
|
227
|
+
* @param namedModelsContent Contents of additional, named models to use.
|
|
228
|
+
* @returns The evaluated binding.
|
|
229
|
+
*/
|
|
230
|
+
export function evaluateBindingWithModel(
|
|
231
|
+
bindingString: string | undefined,
|
|
232
|
+
modelContent: ModelContent,
|
|
233
|
+
namedModelsContent?: { [modelName: string]: ModelContent }
|
|
234
|
+
): string {
|
|
204
235
|
const bindingElement = BindingParser.complexParser(bindingString);
|
|
205
|
-
const jsonModel = new JSONModel(modelContent);
|
|
206
236
|
const text = new InvisibleText();
|
|
207
237
|
text.bindProperty("text", bindingElement);
|
|
208
|
-
|
|
209
|
-
|
|
238
|
+
|
|
239
|
+
const defaultModel = new JSONModel(modelContent);
|
|
240
|
+
text.setModel(defaultModel);
|
|
241
|
+
text.setBindingContext(defaultModel.createBindingContext("/"));
|
|
242
|
+
|
|
243
|
+
if (namedModelsContent) {
|
|
244
|
+
for (const [name, content] of Object.entries(namedModelsContent)) {
|
|
245
|
+
const model = new JSONModel(content);
|
|
246
|
+
text.setModel(model, name);
|
|
247
|
+
text.setBindingContext(model.createBindingContext("/"), name);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
210
251
|
return text.getText();
|
|
211
|
-
}
|
|
252
|
+
}
|
|
212
253
|
|
|
213
254
|
export const getTemplatingResult = async function(
|
|
214
255
|
xmlInput: string,
|
|
@@ -275,7 +316,7 @@ export const getTemplatedXML = async function(
|
|
|
275
316
|
*
|
|
276
317
|
* @param {string} name Fully qualified name of the fragment to be tested.
|
|
277
318
|
* @param {object} testData Test data consisting
|
|
278
|
-
* @returns
|
|
319
|
+
* @returns Templated fragment as string
|
|
279
320
|
*/
|
|
280
321
|
export async function processFragment(name: string, testData: { [model: string]: object }): Promise<string> {
|
|
281
322
|
const inputXml = `<root><core:Fragment fragmentName="${name}" type="XML" xmlns:core="sap.ui.core" /></root>`;
|
|
@@ -284,11 +325,11 @@ export async function processFragment(name: string, testData: { [model: string]:
|
|
|
284
325
|
|
|
285
326
|
// build model and bindings for given test data
|
|
286
327
|
const settings = {
|
|
287
|
-
models: {} as { [name: string]: JSONModel
|
|
328
|
+
models: {} as { [name: string]: JSONModel },
|
|
288
329
|
bindingContexts: {} as { [name: string]: object }
|
|
289
330
|
};
|
|
290
331
|
for (const model in testData) {
|
|
291
|
-
const jsonModel = new JSONModel
|
|
332
|
+
const jsonModel = new JSONModel();
|
|
292
333
|
jsonModel.setData(testData[model]);
|
|
293
334
|
settings.models[model] = jsonModel;
|
|
294
335
|
settings.bindingContexts[model] = settings.models[model].createBindingContext("/");
|
|
@@ -305,7 +346,10 @@ export async function processFragment(name: string, testData: { [model: string]:
|
|
|
305
346
|
}
|
|
306
347
|
}
|
|
307
348
|
|
|
308
|
-
|
|
349
|
+
// Keep the fragment result as child of root node when fragment generates multiple root controls
|
|
350
|
+
const xmlResult = resultDoc.children.length > 1 ? resultDoc.outerHTML : resultDoc.innerHTML;
|
|
351
|
+
|
|
352
|
+
return formatXml(xmlResult, {
|
|
309
353
|
filter: (node: any) => node.type !== "Comment"
|
|
310
354
|
});
|
|
311
355
|
}
|
|
@@ -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";
|
|
@@ -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(
|
|
6
7
|
[
|
|
@@ -39,8 +40,10 @@ sap.ui.define(
|
|
|
39
40
|
) {
|
|
40
41
|
"use strict";
|
|
41
42
|
|
|
42
|
-
function getTableId(sNavProperty) {
|
|
43
|
-
return
|
|
43
|
+
function getTableId(sNavProperty, sQualifier) {
|
|
44
|
+
return sQualifier
|
|
45
|
+
? "fe::table::" + sNavProperty.split("/").join("::") + "::LineItem::" + sQualifier
|
|
46
|
+
: "fe::table::" + sNavProperty.split("/").join("::") + "::LineItem";
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
function getChartId(sEntityType) {
|
|
@@ -182,7 +185,7 @@ sap.ui.define(
|
|
|
182
185
|
*/
|
|
183
186
|
onTable: function(vTableIdentifier) {
|
|
184
187
|
if (!Utils.isOfType(vTableIdentifier, String)) {
|
|
185
|
-
vTableIdentifier = { id: getTableId(vTableIdentifier.property) };
|
|
188
|
+
vTableIdentifier = { id: getTableId(vTableIdentifier.property, vTableIdentifier.qualifier) };
|
|
186
189
|
}
|
|
187
190
|
return this._onTable(vTableIdentifier);
|
|
188
191
|
},
|
|
@@ -465,7 +468,7 @@ sap.ui.define(
|
|
|
465
468
|
*/
|
|
466
469
|
onTable: function(vTableIdentifier) {
|
|
467
470
|
if (!Utils.isOfType(vTableIdentifier, String)) {
|
|
468
|
-
vTableIdentifier = { id: getTableId(vTableIdentifier.property) };
|
|
471
|
+
vTableIdentifier = { id: getTableId(vTableIdentifier.property, vTableIdentifier.qualifier) };
|
|
469
472
|
}
|
|
470
473
|
return this._onTable(vTableIdentifier);
|
|
471
474
|
},
|
package/src/sap/fe/test/Shell.js
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/OpaBuilder", "sap/ui/test/Opa5", "sap/fe/test/Utils"], function(OpaBuilder, Opa5, Utils) {
|
|
6
7
|
"use strict";
|
package/src/sap/fe/test/Stubs.js
CHANGED
|
@@ -47,8 +47,19 @@ sap.ui.define([], function () {
|
|
|
47
47
|
return _this.oValues[key];
|
|
48
48
|
}));
|
|
49
49
|
|
|
50
|
-
_defineProperty(this, "getObject", jest.fn(function (
|
|
51
|
-
|
|
50
|
+
_defineProperty(this, "getObject", jest.fn(function (path) {
|
|
51
|
+
var that = _this;
|
|
52
|
+
var result = path ? that.oValues[path] : that.oValues;
|
|
53
|
+
|
|
54
|
+
if (!result && path && path.indexOf("/") > -1) {
|
|
55
|
+
var parts = path.split("/");
|
|
56
|
+
result = parts.reduce(function (sum, part) {
|
|
57
|
+
sum = part ? sum[part] : sum;
|
|
58
|
+
return sum;
|
|
59
|
+
}, that.oValues);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return result;
|
|
52
63
|
}));
|
|
53
64
|
|
|
54
65
|
_defineProperty(this, "getPath", jest.fn(function () {
|
|
@@ -111,9 +122,19 @@ sap.ui.define([], function () {
|
|
|
111
122
|
var _super = _createSuper(MockControl);
|
|
112
123
|
|
|
113
124
|
function MockControl() {
|
|
125
|
+
var _this2;
|
|
126
|
+
|
|
114
127
|
_classCallCheck(this, MockControl);
|
|
115
128
|
|
|
116
|
-
|
|
129
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
130
|
+
args[_key] = arguments[_key];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
_this2 = _super.call.apply(_super, [this].concat(args));
|
|
134
|
+
|
|
135
|
+
_defineProperty(_assertThisInitialized(_this2), "getBindingContext", jest.fn());
|
|
136
|
+
|
|
137
|
+
return _this2;
|
|
117
138
|
}
|
|
118
139
|
|
|
119
140
|
_exports.MockControl = MockControl;
|
|
@@ -123,7 +144,7 @@ sap.ui.define([], function () {
|
|
|
123
144
|
_exports.MockControl = MockControl;
|
|
124
145
|
|
|
125
146
|
var MockEvent = function MockEvent() {
|
|
126
|
-
var
|
|
147
|
+
var _this3 = this;
|
|
127
148
|
|
|
128
149
|
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
129
150
|
var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new MockUI5Element();
|
|
@@ -131,11 +152,11 @@ sap.ui.define([], function () {
|
|
|
131
152
|
_classCallCheck(this, MockEvent);
|
|
132
153
|
|
|
133
154
|
_defineProperty(this, "getParameter", jest.fn(function (name) {
|
|
134
|
-
return
|
|
155
|
+
return _this3.params[name];
|
|
135
156
|
}));
|
|
136
157
|
|
|
137
158
|
_defineProperty(this, "getSource", jest.fn(function () {
|
|
138
|
-
return
|
|
159
|
+
return _this3.source;
|
|
139
160
|
}));
|
|
140
161
|
|
|
141
162
|
this.params = params;
|
|
@@ -150,7 +171,7 @@ sap.ui.define([], function () {
|
|
|
150
171
|
|
|
151
172
|
var MockListBinding = /*#__PURE__*/function () {
|
|
152
173
|
function MockListBinding(aContexts, mockModel) {
|
|
153
|
-
var
|
|
174
|
+
var _this4 = this;
|
|
154
175
|
|
|
155
176
|
_classCallCheck(this, MockListBinding);
|
|
156
177
|
|
|
@@ -161,21 +182,21 @@ sap.ui.define([], function () {
|
|
|
161
182
|
_defineProperty(this, "sort", jest.fn());
|
|
162
183
|
|
|
163
184
|
_defineProperty(this, "requestContexts", jest.fn(function () {
|
|
164
|
-
return Promise.resolve(
|
|
185
|
+
return Promise.resolve(_this4.aMockContexts);
|
|
165
186
|
}));
|
|
166
187
|
|
|
167
188
|
_defineProperty(this, "getCurrentContexts", jest.fn(function () {
|
|
168
|
-
return
|
|
189
|
+
return _this4.aMockContexts;
|
|
169
190
|
}));
|
|
170
191
|
|
|
171
192
|
_defineProperty(this, "getModel", jest.fn(function () {
|
|
172
|
-
return
|
|
193
|
+
return _this4.mockModel;
|
|
173
194
|
}));
|
|
174
195
|
|
|
175
196
|
this.mockModel = mockModel;
|
|
176
197
|
aContexts = aContexts || [];
|
|
177
198
|
this.aMockContexts = aContexts.map(function (context) {
|
|
178
|
-
return new MockContext(context,
|
|
199
|
+
return new MockContext(context, _this4);
|
|
179
200
|
});
|
|
180
201
|
}
|
|
181
202
|
|
|
@@ -201,18 +222,18 @@ sap.ui.define([], function () {
|
|
|
201
222
|
|
|
202
223
|
var MockContextBinding = /*#__PURE__*/function () {
|
|
203
224
|
function MockContextBinding(oContext, mockModel) {
|
|
204
|
-
var
|
|
225
|
+
var _this5 = this;
|
|
205
226
|
|
|
206
227
|
_classCallCheck(this, MockContextBinding);
|
|
207
228
|
|
|
208
229
|
_defineProperty(this, "getBoundContext", jest.fn(function () {
|
|
209
|
-
return
|
|
230
|
+
return _this5.oMockContext;
|
|
210
231
|
}));
|
|
211
232
|
|
|
212
233
|
_defineProperty(this, "attachEventOnce", jest.fn());
|
|
213
234
|
|
|
214
235
|
_defineProperty(this, "getModel", jest.fn(function () {
|
|
215
|
-
return
|
|
236
|
+
return _this5.mockModel;
|
|
216
237
|
}));
|
|
217
238
|
|
|
218
239
|
this.mockModel = mockModel;
|
|
@@ -249,7 +270,7 @@ sap.ui.define([], function () {
|
|
|
249
270
|
_exports.MockContextBinding = MockContextBinding;
|
|
250
271
|
|
|
251
272
|
var MockMetaModel = function MockMetaModel(oMetaData) {
|
|
252
|
-
var
|
|
273
|
+
var _this6 = this;
|
|
253
274
|
|
|
254
275
|
_classCallCheck(this, MockMetaModel);
|
|
255
276
|
|
|
@@ -260,7 +281,7 @@ sap.ui.define([], function () {
|
|
|
260
281
|
}));
|
|
261
282
|
|
|
262
283
|
_defineProperty(this, "getObject", jest.fn(function (sPath) {
|
|
263
|
-
return
|
|
284
|
+
return _this6.oMetaContext.getProperty(sPath);
|
|
264
285
|
}));
|
|
265
286
|
|
|
266
287
|
_defineProperty(this, "requestObject", jest.fn());
|
|
@@ -273,6 +294,8 @@ sap.ui.define([], function () {
|
|
|
273
294
|
|
|
274
295
|
_defineProperty(this, "getMetaPath", jest.fn());
|
|
275
296
|
|
|
297
|
+
_defineProperty(this, "getContext", jest.fn());
|
|
298
|
+
|
|
276
299
|
this.oMetaContext = new MockContext(oMetaData || {});
|
|
277
300
|
} // Mocked API
|
|
278
301
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -286,20 +309,20 @@ sap.ui.define([], function () {
|
|
|
286
309
|
|
|
287
310
|
var MockModel = /*#__PURE__*/function () {
|
|
288
311
|
function MockModel(mockListBinding, mockContextBinding) {
|
|
289
|
-
var
|
|
312
|
+
var _this7 = this;
|
|
290
313
|
|
|
291
314
|
_classCallCheck(this, MockModel);
|
|
292
315
|
|
|
293
316
|
_defineProperty(this, "bindList", jest.fn(function () {
|
|
294
|
-
return
|
|
317
|
+
return _this7.mockListBinding;
|
|
295
318
|
}));
|
|
296
319
|
|
|
297
320
|
_defineProperty(this, "bindContext", jest.fn(function () {
|
|
298
|
-
return
|
|
321
|
+
return _this7.mockContextBinding;
|
|
299
322
|
}));
|
|
300
323
|
|
|
301
324
|
_defineProperty(this, "getMetaModel", jest.fn(function () {
|
|
302
|
-
return
|
|
325
|
+
return _this7.oMetaModel;
|
|
303
326
|
}));
|
|
304
327
|
|
|
305
328
|
_defineProperty(this, "getProperty", jest.fn());
|
|
@@ -402,4 +425,4 @@ sap.ui.define([], function () {
|
|
|
402
425
|
_exports.mockMVC = mockMVC;
|
|
403
426
|
return _exports;
|
|
404
427
|
}, false);
|
|
405
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJqZXN0IiwiZm4iLCJrZXkiLCJ2YWx1ZSIsImdldE1vZGVsIiwic0NsYXNzTmFtZSIsIk1vY2tVSTVFbGVtZW50IiwibW9ja1JldHVyblZhbHVlIiwiYmluZGluZ0NvbnRleHQiLCJNb2NrQ29udHJvbCIsIk1vY2tFdmVudCIsInBhcmFtcyIsInNvdXJjZSIsIm5hbWUiLCJNb2NrTGlzdEJpbmRpbmciLCJhQ29udGV4dHMiLCJtb2NrTW9kZWwiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFNb2NrQ29udGV4dHMiLCJtYXAiLCJjb250ZXh0Iiwib01vZGVsIiwiTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJvTW9ja0NvbnRleHQiLCJNb2NrTWV0YU1vZGVsIiwib01ldGFEYXRhIiwic1BhdGgiLCIkcGF0aCIsIm9NZXRhQ29udGV4dCIsImdldFByb3BlcnR5IiwiTW9ja01vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwib01ldGFNb2RlbCIsInNldE1vZGVsIiwidW5kZWZpbmVkIiwiTW9ja1ZpZXciLCJNb2NrQ29udHJvbGxlciIsIm5hdmlnYXRlVG9UYXJnZXQiLCJzeW5jVGFzayIsImhhbmRsZUZpZWxkQ2hhbmdlIiwibW9ja01WQyIsImV4aXN0aW5nIiwibW9kZWwiLCJ2aWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiLCJnZXRWaWV3Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRkE7QUFDQTtBQUNBO01BTWFBLFc7QUFDWix5QkFBMkJDLE9BQTNCLEVBQWlEQyxRQUFqRCxFQUFpRTtBQUFBOztBQUFBOztBQUFBLDJDQU01Q0MsSUFBSSxDQUFDQyxFQUFMLENBQVEsVUFBQ0MsR0FBRCxFQUFpQjtBQUM3QyxlQUFPLEtBQUks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LEVBQUw7QUFERCxLOzt1Q0FJQztBQUNsQndDLE1BQUFBLFFBQVEsRUFBRXpDLElBQUksQ0FBQ0MsRUFBTDtBQURRLEs7OzBDQUlHO0FBQ3JCeUMsTUFBQUEsaUJBQWlCLEVBQUUxQyxJQUFJLENBQUNDLEVBQUw7QUFERSxLOztpQ0FJaEJELElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCLEtBQTFCLEM7Ozs7O0FBU1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sV0FBU29DLE9BQVQsQ0FBaUJDLFFBQWpCLEVBQXVEO0FBQzdELFFBQU1DLEtBQUssR0FBRyxDQUFBRCxRQUFRLFNBQVIsSUFBQUEsUUFBUSxXQUFSLFlBQUFBLFFBQVEsQ0FBRUMsS0FBVixLQUFtQixJQUFJYixTQUFKLEVBQWpDO0FBQ0EsUUFBTWMsSUFBSSxHQUFHLENBQUFGLFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFRSxJQUFWLEtBQWtCLElBQUlSLFFBQUosRUFBL0I7QUFDQSxRQUFNUyxVQUFVLEdBQUcsQ0FBQUgsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUVHLFVBQVYsS0FBd0IsSUFBSVIsY0FBSixFQUEzQztBQUVBTyxJQUFBQSxJQUFJLENBQUNFLGFBQUwsQ0FBbUJ6QyxlQUFuQixDQUFtQ3dDLFVBQW5DO0FBQ0FELElBQUFBLElBQUksQ0FBQzFDLFFBQUwsQ0FBY0csZUFBZCxDQUE4QnNDLEtBQTlCO0FBQ0FFLElBQUFBLFVBQVUsQ0FBQ0UsT0FBWCxDQUFtQjFDLGVBQW5CLENBQW1DdUMsSUFBbkM7QUFFQSxXQUFPO0FBQUVELE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxNQUFBQSxJQUFJLEVBQUpBLElBQVQ7QUFBZUMsTUFBQUEsVUFBVSxFQUFWQTtBQUFmLEtBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBhIFY0IENvbnRleHRcbiAqL1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwic2FwL3VpL2Jhc2VcIjtcbmltcG9ydCB7IENvbnRyb2wsIFVJNUVsZW1lbnQgfSBmcm9tIFwic2FwL3VpL2NvcmVcIjtcbmltcG9ydCB7IENvbnRyb2xsZXIsIFZpZXcgfSBmcm9tIFwic2FwL3VpL2NvcmUvbXZjXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBPRGF0YUxpc3RCaW5kaW5nLCBPRGF0YUNvbnRleHRCaW5kaW5nLCBPRGF0YU1ldGFNb2RlbCwgT0RhdGFNb2RlbCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjRcIjtcblxuZXhwb3J0IGNsYXNzIE1vY2tDb250ZXh0IGltcGxlbWVudHMgUGFydGlhbDxDb250ZXh0PiB7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG9WYWx1ZXM6IGFueSwgcHJpdmF0ZSBvQmluZGluZz86IGFueSkge31cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyBzZXRQcm9wZXJ0eSA9IGplc3QuZm4oKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5vVmFsdWVzW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyBnZXRQYXRoID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub1ZhbHVlc1tcIiRwYXRoXCJdO1xuXHR9KTtcblxuXHRwdWJsaWMgZ2V0QmluZGluZyA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9CaW5kaW5nO1xuXHR9KTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm9CaW5kaW5nPy5nZXRNb2RlbCgpIGFzIGFueSkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG5cdHB1YmxpYyBpc1RyYW5zaWVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxVSTVFbGVtZW50PiB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcblx0cHVibGljIGJpbmRpbmdDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KHt9KTtcblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUodGhpcy5iaW5kaW5nQ29udGV4dCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nSW5mbyA9IGplc3QuZm4oKTtcblx0cHVibGljIGRhdGEgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldFBhcmVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sIGV4dGVuZHMgTW9ja1VJNUVsZW1lbnQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRyb2w+IHt9XG5cbmV4cG9ydCBjbGFzcyBNb2NrRXZlbnQgaW1wbGVtZW50cyBQYXJ0aWFsPEV2ZW50PiB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge30sIHB1YmxpYyBzb3VyY2U6IE1vY2tVSTVFbGVtZW50ID0gbmV3IE1vY2tVSTVFbGVtZW50KCkpIHt9XG5cblx0cHVibGljIGdldFBhcmFtZXRlciA9IGplc3QuZm4obmFtZSA9PiB0aGlzLnBhcmFtc1tuYW1lXSk7XG5cblx0cHVibGljIGdldFNvdXJjZSA9IGplc3QuZm4oKCkgPT4gdGhpcy5zb3VyY2UgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBPRGF0YSBWNCBMaXN0QmluZGluZ1xuICovXG5leHBvcnQgY2xhc3MgTW9ja0xpc3RCaW5kaW5nIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YUxpc3RCaW5kaW5nPiB7XG5cdHByaXZhdGUgYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYUNvbnRleHRzPzogYW55W10sIHByaXZhdGUgbW9ja01vZGVsPzogTW9ja01vZGVsKSB7XG5cdFx0YUNvbnRleHRzID0gYUNvbnRleHRzIHx8IFtdO1xuXG5cdFx0dGhpcy5hTW9ja0NvbnRleHRzID0gYUNvbnRleHRzLm1hcChjb250ZXh0ID0+IHtcblx0XHRcdHJldHVybiBuZXcgTW9ja0NvbnRleHQoY29udGV4dCwgdGhpcyk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCI7XG5cdH1cblxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIHNldEFnZ3JlZ2F0aW9uID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZmlsdGVyID0gamVzdC5mbigpO1xuXHRwdWJsaWMgc29ydCA9IGplc3QuZm4oKTtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyByZXF1ZXN0Q29udGV4dHMgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgodGhpcy5hTW9ja0NvbnRleHRzIGFzIGFueSkgYXMgQ29udGV4dFtdKTtcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldEN1cnJlbnRDb250ZXh0cyA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkpIGFzIENvbnRleHRbXTtcblx0fSk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5tb2NrTW9kZWwgYXMgYW55KSBhcyBPRGF0YU1vZGVsO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250ZXh0QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFDb250ZXh0QmluZGluZz4ge1xuXHRwcml2YXRlIG9Nb2NrQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9Db250ZXh0PzogYW55LCBwcml2YXRlIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMub01vY2tDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCB0aGlzKTtcblx0fVxuXG5cdHB1YmxpYyBpc0Eoc0NsYXNzTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fVxuXHRwdWJsaWMgZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCgpOiBNb2NrQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRoaXMub01vY2tDb250ZXh0O1xuXHR9XG5cdHB1YmxpYyBzZXRNb2RlbChvTW9kZWw6IE1vY2tNb2RlbCkge1xuXHRcdHRoaXMubW9ja01vZGVsID0gb01vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHRwdWJsaWMgZ2V0Qm91bmRDb250ZXh0ID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm9Nb2NrQ29udGV4dCBhcyBhbnkpIGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgYXR0YWNoRXZlbnRPbmNlID0gamVzdC5mbigpO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja01vZGVsIGFzIGFueSkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNb2NrTWV0YU1vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1ldGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG9NZXRhRGF0YT86IGFueSkge1xuXHRcdHRoaXMub01ldGFDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KG9NZXRhRGF0YSB8fCB7fSk7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGdldE1ldGFDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiAobmV3IE1vY2tDb250ZXh0KHsgJHBhdGg6IHNQYXRoIH0pIGFzIGFueSkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub01ldGFDb250ZXh0LmdldFByb3BlcnR5KHNQYXRoKTtcblx0fSk7XG5cdHB1YmxpYyByZXF1ZXN0T2JqZWN0ID0gamVzdC5mbigpO1xuXHRwdWJsaWMgY3JlYXRlQmluZGluZ0NvbnRleHQgPSBqZXN0LmZuKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIChuZXcgTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSkgYXMgYW55KSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGdldE1ldGFQYXRoID0gamVzdC5mbigpO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IE1vZGVsXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1vY2tNb2RlbCBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFNb2RlbD4ge1xuXHRwcml2YXRlIG9NZXRhTW9kZWw/OiBNb2NrTWV0YU1vZGVsO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vY2tMaXN0QmluZGluZz86IE1vY2tMaXN0QmluZGluZywgcHJpdmF0ZSBtb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpIHtcblx0XHRpZiAobW9ja0xpc3RCaW5kaW5nKSB7XG5cdFx0XHRtb2NrTGlzdEJpbmRpbmcuc2V0TW9kZWwodGhpcyk7XG5cdFx0fVxuXHRcdGlmIChtb2NrQ29udGV4dEJpbmRpbmcpIHtcblx0XHRcdG1vY2tDb250ZXh0QmluZGluZy5zZXRNb2RlbCh0aGlzKTtcblx0XHR9XG5cdH1cblxuXHQvLyBGYWN0b3JpZXNcblx0c3RhdGljIG1vZGVsRnJvbUxpc3RCaW5kaW5nKG1vY2tMaXN0QmluZGluZzogTW9ja0xpc3RCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0XHRyZXR1cm4gbmV3IE1vY2tNb2RlbChtb2NrTGlzdEJpbmRpbmcpO1xuXHR9XG5cdHN0YXRpYyBtb2RlbEZyb21Db250ZXh0QmluZGluZyhtb2NrQ29udGV4dEJpbmRpbmc6IE1vY2tDb250ZXh0QmluZGluZyk6IE1vY2tNb2RlbCB7XG5cdFx0cmV0dXJuIG5ldyBNb2NrTW9kZWwodW5kZWZpbmVkLCBtb2NrQ29udGV4dEJpbmRpbmcpO1xuXHR9XG5cblx0cHVibGljIHNldE1ldGFNb2RlbChvTWV0YU1vZGVsOiBNb2NrTWV0YU1vZGVsKSB7XG5cdFx0dGhpcy5vTWV0YU1vZGVsID0gb01ldGFNb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgYmluZExpc3QgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm1vY2tMaXN0QmluZGluZyBhcyBhbnkpIGFzIE9EYXRhTGlzdEJpbmRpbmc7XG5cdH0pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kQ29udGV4dCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja0NvbnRleHRCaW5kaW5nIGFzIGFueSkgYXMgT0RhdGFDb250ZXh0QmluZGluZztcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhTW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMub01ldGFNb2RlbCBhcyBhbnkpIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHR9KTtcblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBzZXRQcm9wZXJ0eSA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tWaWV3IGltcGxlbWVudHMgUGFydGlhbDxWaWV3PiB7XG5cdHB1YmxpYyBnZXRDb250cm9sbGVyID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgZ2V0Vmlld0RhdGEgPSBqZXN0LmZuKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udHJvbGxlciBpbXBsZW1lbnRzIFBhcnRpYWw8Q29udHJvbGxlcj4ge1xuXHRwdWJsaWMgZ2V0VmlldyA9IGplc3QuZm4oKTtcblxuXHRwdWJsaWMgX3JvdXRpbmcgPSB7XG5cdFx0bmF2aWdhdGVUb1RhcmdldDogamVzdC5mbigpXG5cdH07XG5cblx0cHVibGljIF9lZGl0RmxvdyA9IHtcblx0XHRzeW5jVGFzazogamVzdC5mbigpXG5cdH07XG5cblx0cHVibGljIF9zaWRlRWZmZWN0cyA9IHtcblx0XHRoYW5kbGVGaWVsZENoYW5nZTogamVzdC5mbigpXG5cdH07XG5cblx0aXNBID0gamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShmYWxzZSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVZDTW9jayB7XG5cdG1vZGVsOiBNb2NrTW9kZWw7XG5cdHZpZXc6IE1vY2tWaWV3O1xuXHRjb250cm9sbGVyOiBNb2NrQ29udHJvbGxlcjtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBtb2NrcyB0aGF0IHJlZmVyIHRvIGVhY2ggb3RoZXIuXG4gKlxuICogQHBhcmFtIGV4aXN0aW5nIE9wdGlvbmFsIGV4aXN0aW5nIG1vY2tlZCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogQHJldHVybnMgTW9ja2VkIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja01WQyhleGlzdGluZz86IFBhcnRpYWw8TVZDTW9jaz4pOiBNVkNNb2NrIHtcblx0Y29uc3QgbW9kZWwgPSBleGlzdGluZz8ubW9kZWwgfHwgbmV3IE1vY2tNb2RlbCgpO1xuXHRjb25zdCB2aWV3ID0gZXhpc3Rpbmc/LnZpZXcgfHwgbmV3IE1vY2tWaWV3KCk7XG5cdGNvbnN0IGNvbnRyb2xsZXIgPSBleGlzdGluZz8uY29udHJvbGxlciB8fCBuZXcgTW9ja0NvbnRyb2xsZXIoKTtcblxuXHR2aWV3LmdldENvbnRyb2xsZXIubW9ja1JldHVyblZhbHVlKGNvbnRyb2xsZXIpO1xuXHR2aWV3LmdldE1vZGVsLm1vY2tSZXR1cm5WYWx1ZShtb2RlbCk7XG5cdGNvbnRyb2xsZXIuZ2V0Vmlldy5tb2NrUmV0dXJuVmFsdWUodmlldyk7XG5cblx0cmV0dXJuIHsgbW9kZWwsIHZpZXcsIGNvbnRyb2xsZXIgfTtcbn1cbiJdfQ==
|
|
428
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwibmFtZXMiOlsiTW9ja0NvbnRleHQiLCJvVmFsdWVzIiwib0JpbmRpbmciLCJqZXN0IiwiZm4iLCJrZXkiLCJ2YWx1ZSIsInBhdGgiLCJ0aGF0IiwicmVzdWx0IiwiaW5kZXhPZiIsInBhcnRzIiwic3BsaXQiLCJyZWR1Y2UiLCJzdW0iLCJwYXJ0IiwiZ2V0TW9kZWwiLCJzQ2xhc3NOYW1lIiwiTW9ja1VJNUVsZW1lbnQiLCJtb2NrUmV0dXJuVmFsdWUiLCJiaW5kaW5nQ29udGV4dCIsIk1vY2tDb250cm9sIiwiTW9ja0V2ZW50IiwicGFyYW1zIiwic291cmNlIiwibmFtZSIsIk1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0cyIsIm1vY2tNb2RlbCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYU1vY2tDb250ZXh0cyIsIm1hcCIsImNvbnRleHQiLCJvTW9kZWwiLCJNb2NrQ29udGV4dEJpbmRpbmciLCJvQ29udGV4dCIsIm9Nb2NrQ29udGV4dCIsIk1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJzUGF0aCIsIiRwYXRoIiwib01ldGFDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJNb2NrTW9kZWwiLCJtb2NrTGlzdEJpbmRpbmciLCJtb2NrQ29udGV4dEJpbmRpbmciLCJvTWV0YU1vZGVsIiwic2V0TW9kZWwiLCJ1bmRlZmluZWQiLCJNb2NrVmlldyIsIk1vY2tDb250cm9sbGVyIiwibmF2aWdhdGVUb1RhcmdldCIsInN5bmNUYXNrIiwiaGFuZGxlRmllbGRDaGFuZ2UiLCJtb2NrTVZDIiwiZXhpc3RpbmciLCJtb2RlbCIsInZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsImdldFZpZXciXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFGQTtBQUNBO0FBQ0E7TUFZYUEsVztBQUNaLHlCQUEyQkMsT0FBM0IsRUFBa0RDLFFBQWxELEVBQWtFO0FBQUE7O0FB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RUMsS0FBVixLQUFtQixJQUFJYixTQUFKLEVBQWpDO0FBQ0EsUUFBTWMsSUFBSSxHQUFHLENBQUFGLFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFRSxJQUFWLEtBQWtCLElBQUlSLFFBQUosRUFBL0I7QUFDQSxRQUFNUyxVQUFVLEdBQUcsQ0FBQUgsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUVHLFVBQVYsS0FBd0IsSUFBSVIsY0FBSixFQUEzQztBQUVBTyxJQUFBQSxJQUFJLENBQUNFLGFBQUwsQ0FBbUJ6QyxlQUFuQixDQUFtQ3dDLFVBQW5DO0FBQ0FELElBQUFBLElBQUksQ0FBQzFDLFFBQUwsQ0FBY0csZUFBZCxDQUE4QnNDLEtBQTlCO0FBQ0FFLElBQUFBLFVBQVUsQ0FBQ0UsT0FBWCxDQUFtQjFDLGVBQW5CLENBQW1DdUMsSUFBbkM7QUFFQSxXQUFPO0FBQUVELE1BQUFBLEtBQUssRUFBTEEsS0FBRjtBQUFTQyxNQUFBQSxJQUFJLEVBQUpBLElBQVQ7QUFBZUMsTUFBQUEsVUFBVSxFQUFWQTtBQUFmLEtBQVA7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2NrIGNsYXNzIGZvciBhIFY0IENvbnRleHRcbiAqL1xuaW1wb3J0IEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YUNvbnRleHRCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgTW9ja0NvbnRleHQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRleHQ+IHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgb1ZhbHVlcz86IGFueSwgcHJpdmF0ZSBvQmluZGluZz86IGFueSkge31cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0UHJvcGVydHkgPSBqZXN0LmZuKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9WYWx1ZXNba2V5XTtcblx0fSk7XG5cdHB1YmxpYyBzZXRQcm9wZXJ0eSA9IGplc3QuZm4oKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG5cdFx0dGhpcy5vVmFsdWVzW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gdGhpcy5vVmFsdWVzW2tleV07XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRPYmplY3QgPSBqZXN0LmZuKChwYXRoOiBzdHJpbmcpID0+IHtcblx0XHRjb25zdCB0aGF0ID0gdGhpcyBhcyBhbnk7XG5cdFx0bGV0IHJlc3VsdCA9IHBhdGggPyB0aGF0Lm9WYWx1ZXNbcGF0aF0gOiB0aGF0Lm9WYWx1ZXM7XG5cblx0XHRpZiAoIXJlc3VsdCAmJiBwYXRoICYmIHBhdGguaW5kZXhPZihcIi9cIikgPiAtMSkge1xuXHRcdFx0Y29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdHJlc3VsdCA9IHBhcnRzLnJlZHVjZSgoc3VtLCBwYXJ0OiBhbnkpID0+IHtcblx0XHRcdFx0c3VtID0gcGFydCA/IHN1bVtwYXJ0XSA6IHN1bTtcblx0XHRcdFx0cmV0dXJuIHN1bTtcblx0XHRcdH0sIHRoYXQub1ZhbHVlcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSk7XG5cdHB1YmxpYyBnZXRQYXRoID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuIHRoaXMub1ZhbHVlc1tcIiRwYXRoXCJdO1xuXHR9KTtcblxuXHRwdWJsaWMgZ2V0QmluZGluZyA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9CaW5kaW5nO1xuXHR9KTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm9CaW5kaW5nPy5nZXRNb2RlbCgpIGFzIGFueSkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG5cdHB1YmxpYyBpc1RyYW5zaWVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tVSTVFbGVtZW50IGltcGxlbWVudHMgUGFydGlhbDxVSTVFbGVtZW50PiB7XG5cdFtrZXk6IHN0cmluZ106IGFueTtcblx0cHVibGljIGJpbmRpbmdDb250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KHt9KTtcblx0cHVibGljIGdldEJpbmRpbmcgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nQ29udGV4dCA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUodGhpcy5iaW5kaW5nQ29udGV4dCk7XG5cdHB1YmxpYyBnZXRCaW5kaW5nSW5mbyA9IGplc3QuZm4oKTtcblx0cHVibGljIGRhdGEgPSBqZXN0LmZuKCk7XG5cdHB1YmxpYyBnZXRNb2RlbCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldFBhcmVudCA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sIGV4dGVuZHMgTW9ja1VJNUVsZW1lbnQgaW1wbGVtZW50cyBQYXJ0aWFsPENvbnRyb2w+IHtcblx0cHVibGljIGdldEJpbmRpbmdDb250ZXh0OiBqZXN0Lk1vY2s8YW55LCBhbnk+ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja0V2ZW50IGltcGxlbWVudHMgUGFydGlhbDxFdmVudD4ge1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHBhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9LCBwdWJsaWMgc291cmNlOiBNb2NrVUk1RWxlbWVudCA9IG5ldyBNb2NrVUk1RWxlbWVudCgpKSB7fVxuXG5cdHB1YmxpYyBnZXRQYXJhbWV0ZXIgPSBqZXN0LmZuKG5hbWUgPT4gdGhpcy5wYXJhbXNbbmFtZV0pO1xuXG5cdHB1YmxpYyBnZXRTb3VyY2UgPSBqZXN0LmZuKCgpID0+IHRoaXMuc291cmNlIGFzIGFueSk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTGlzdEJpbmRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIE1vY2tMaXN0QmluZGluZyBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFMaXN0QmluZGluZz4ge1xuXHRwcml2YXRlIGFNb2NrQ29udGV4dHM6IE1vY2tDb250ZXh0W107XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKGFDb250ZXh0cz86IGFueVtdLCBwcml2YXRlIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkge1xuXHRcdGFDb250ZXh0cyA9IGFDb250ZXh0cyB8fCBbXTtcblxuXHRcdHRoaXMuYU1vY2tDb250ZXh0cyA9IGFDb250ZXh0cy5tYXAoY29udGV4dCA9PiB7XG5cdFx0XHRyZXR1cm4gbmV3IE1vY2tDb250ZXh0KGNvbnRleHQsIHRoaXMpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGlzQShzQ2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiO1xuXHR9XG5cblx0cHVibGljIHNldE1vZGVsKG9Nb2RlbDogTW9ja01vZGVsKSB7XG5cdFx0dGhpcy5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH1cblxuXHQvLyBNb2NrZWQgQVBJXG5cdHB1YmxpYyBzZXRBZ2dyZWdhdGlvbiA9IGplc3QuZm4oKTtcblx0cHVibGljIGZpbHRlciA9IGplc3QuZm4oKTtcblx0cHVibGljIHNvcnQgPSBqZXN0LmZuKCk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRwdWJsaWMgcmVxdWVzdENvbnRleHRzID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKHRoaXMuYU1vY2tDb250ZXh0cyBhcyBhbnkpIGFzIENvbnRleHRbXSk7XG5cdH0pO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBnZXRDdXJyZW50Q29udGV4dHMgPSBqZXN0LmZuKCguLi5hcmdzKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLmFNb2NrQ29udGV4dHMgYXMgYW55KSBhcyBDb250ZXh0W107XG5cdH0pO1xuXHRwdWJsaWMgZ2V0TW9kZWwgPSBqZXN0LmZuKCgpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja01vZGVsIGFzIGFueSkgYXMgT0RhdGFNb2RlbDtcblx0fSk7XG59XG5cbmV4cG9ydCBjbGFzcyBNb2NrQ29udGV4dEJpbmRpbmcgaW1wbGVtZW50cyBQYXJ0aWFsPE9EYXRhQ29udGV4dEJpbmRpbmc+IHtcblx0cHJpdmF0ZSBvTW9ja0NvbnRleHQ6IE1vY2tDb250ZXh0O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvQ29udGV4dD86IGFueSwgcHJpdmF0ZSBtb2NrTW9kZWw/OiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm9Nb2NrQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dChvQ29udGV4dCB8fCB7fSwgdGhpcyk7XG5cdH1cblxuXHRwdWJsaWMgaXNBKHNDbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5cdH1cblx0cHVibGljIGdldEludGVybmFsTW9ja0NvbnRleHQoKTogTW9ja0NvbnRleHQge1xuXHRcdHJldHVybiB0aGlzLm9Nb2NrQ29udGV4dDtcblx0fVxuXHRwdWJsaWMgc2V0TW9kZWwob01vZGVsOiBNb2NrTW9kZWwpIHtcblx0XHR0aGlzLm1vY2tNb2RlbCA9IG9Nb2RlbDtcblx0fVxuXG5cdC8vIE1vY2tlZCBBUElcblx0cHVibGljIGdldEJvdW5kQ29udGV4dCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5vTW9ja0NvbnRleHQgYXMgYW55KSBhcyBDb250ZXh0O1xuXHR9KTtcblx0cHVibGljIGF0dGFjaEV2ZW50T25jZSA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigoKSA9PiB7XG5cdFx0cmV0dXJuICh0aGlzLm1vY2tNb2RlbCBhcyBhbnkpIGFzIE9EYXRhTW9kZWw7XG5cdH0pO1xufVxuXG4vKipcbiAqIE1vY2sgY2xhc3MgZm9yIE9EYXRhIFY0IE1ldGFNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgTW9ja01ldGFNb2RlbCBpbXBsZW1lbnRzIFBhcnRpYWw8T0RhdGFNZXRhTW9kZWw+IHtcblx0cHJpdmF0ZSBvTWV0YUNvbnRleHQ6IE1vY2tDb250ZXh0O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihvTWV0YURhdGE/OiBhbnkpIHtcblx0XHR0aGlzLm9NZXRhQ29udGV4dCA9IG5ldyBNb2NrQ29udGV4dChvTWV0YURhdGEgfHwge30pO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBnZXRNZXRhQ29udGV4dCA9IGplc3QuZm4oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gKG5ldyBNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KSBhcyBhbnkpIGFzIENvbnRleHQ7XG5cdH0pO1xuXHRwdWJsaWMgZ2V0T2JqZWN0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiB0aGlzLm9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdH0pO1xuXHRwdWJsaWMgcmVxdWVzdE9iamVjdCA9IGplc3QuZm4oKTtcblx0cHVibGljIGNyZWF0ZUJpbmRpbmdDb250ZXh0ID0gamVzdC5mbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiAobmV3IE1vY2tDb250ZXh0KHsgJHBhdGg6IHNQYXRoIH0pIGFzIGFueSkgYXMgQ29udGV4dDtcblx0fSk7XG5cdHB1YmxpYyBnZXRNZXRhUGF0aCA9IGplc3QuZm4oKTtcblx0cHVibGljIGdldENvbnRleHQgPSBqZXN0LmZuKCk7XG59XG5cbi8qKlxuICogTW9jayBjbGFzcyBmb3IgT0RhdGEgVjQgTW9kZWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW9ja01vZGVsIGltcGxlbWVudHMgUGFydGlhbDxPRGF0YU1vZGVsPiB7XG5cdHByaXZhdGUgb01ldGFNb2RlbD86IE1vY2tNZXRhTW9kZWw7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBwcml2YXRlIG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdGlmIChtb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRcdG1vY2tMaXN0QmluZGluZy5zZXRNb2RlbCh0aGlzKTtcblx0XHR9XG5cdFx0aWYgKG1vY2tDb250ZXh0QmluZGluZykge1xuXHRcdFx0bW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKHRoaXMpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEZhY3Rvcmllc1xuXHRzdGF0aWMgbW9kZWxGcm9tTGlzdEJpbmRpbmcobW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRcdHJldHVybiBuZXcgTW9ja01vZGVsKG1vY2tMaXN0QmluZGluZyk7XG5cdH1cblx0c3RhdGljIG1vZGVsRnJvbUNvbnRleHRCaW5kaW5nKG1vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0XHRyZXR1cm4gbmV3IE1vY2tNb2RlbCh1bmRlZmluZWQsIG1vY2tDb250ZXh0QmluZGluZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0TWV0YU1vZGVsKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpIHtcblx0XHR0aGlzLm9NZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0Ly8gTW9ja2VkIEFQSVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdHB1YmxpYyBiaW5kTGlzdCA9IGplc3QuZm4oKC4uLmFyZ3MpID0+IHtcblx0XHRyZXR1cm4gKHRoaXMubW9ja0xpc3RCaW5kaW5nIGFzIGFueSkgYXMgT0RhdGFMaXN0QmluZGluZztcblx0fSk7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0cHVibGljIGJpbmRDb250ZXh0ID0gamVzdC5mbigoLi4uYXJncykgPT4ge1xuXHRcdHJldHVybiAodGhpcy5tb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55KSBhcyBPRGF0YUNvbnRleHRCaW5kaW5nO1xuXHR9KTtcblx0cHVibGljIGdldE1ldGFNb2RlbCA9IGplc3QuZm4oKCkgPT4ge1xuXHRcdHJldHVybiAodGhpcy5vTWV0YU1vZGVsIGFzIGFueSkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdH0pO1xuXG5cdHB1YmxpYyBnZXRQcm9wZXJ0eSA9IGplc3QuZm4oKTtcblx0cHVibGljIHNldFByb3BlcnR5ID0gamVzdC5mbigpO1xufVxuXG5leHBvcnQgY2xhc3MgTW9ja1ZpZXcgaW1wbGVtZW50cyBQYXJ0aWFsPFZpZXc+IHtcblx0cHVibGljIGdldENvbnRyb2xsZXIgPSBqZXN0LmZuKCk7XG5cblx0cHVibGljIGdldE1vZGVsID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBnZXRWaWV3RGF0YSA9IGplc3QuZm4oKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tDb250cm9sbGVyIGltcGxlbWVudHMgUGFydGlhbDxDb250cm9sbGVyPiB7XG5cdHB1YmxpYyBnZXRWaWV3ID0gamVzdC5mbigpO1xuXG5cdHB1YmxpYyBfcm91dGluZyA9IHtcblx0XHRuYXZpZ2F0ZVRvVGFyZ2V0OiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX2VkaXRGbG93ID0ge1xuXHRcdHN5bmNUYXNrOiBqZXN0LmZuKClcblx0fTtcblxuXHRwdWJsaWMgX3NpZGVFZmZlY3RzID0ge1xuXHRcdGhhbmRsZUZpZWxkQ2hhbmdlOiBqZXN0LmZuKClcblx0fTtcblxuXHRpc0EgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNVkNNb2NrIHtcblx0bW9kZWw6IE1vY2tNb2RlbDtcblx0dmlldzogTW9ja1ZpZXc7XG5cdGNvbnRyb2xsZXI6IE1vY2tDb250cm9sbGVyO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIG1vY2tzIHRoYXQgcmVmZXIgdG8gZWFjaCBvdGhlci5cbiAqXG4gKiBAcGFyYW0gZXhpc3RpbmcgT3B0aW9uYWwgZXhpc3RpbmcgbW9ja2VkIGluc3RhbmNlcyB0aGF0IHNob3VsZCBiZSB1c2VkXG4gKiBAcmV0dXJucyBNb2NrZWQgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgaW5zdGFuY2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrTVZDKGV4aXN0aW5nPzogUGFydGlhbDxNVkNNb2NrPik6IE1WQ01vY2sge1xuXHRjb25zdCBtb2RlbCA9IGV4aXN0aW5nPy5tb2RlbCB8fCBuZXcgTW9ja01vZGVsKCk7XG5cdGNvbnN0IHZpZXcgPSBleGlzdGluZz8udmlldyB8fCBuZXcgTW9ja1ZpZXcoKTtcblx0Y29uc3QgY29udHJvbGxlciA9IGV4aXN0aW5nPy5jb250cm9sbGVyIHx8IG5ldyBNb2NrQ29udHJvbGxlcigpO1xuXG5cdHZpZXcuZ2V0Q29udHJvbGxlci5tb2NrUmV0dXJuVmFsdWUoY29udHJvbGxlcik7XG5cdHZpZXcuZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vZGVsKTtcblx0Y29udHJvbGxlci5nZXRWaWV3Lm1vY2tSZXR1cm5WYWx1ZSh2aWV3KTtcblxuXHRyZXR1cm4geyBtb2RlbCwgdmlldywgY29udHJvbGxlciB9O1xufVxuIl19
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Mock class for a V4 Context
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
4
|
+
import Event from "sap/ui/base/Event";
|
|
5
|
+
import Control from "sap/ui/core/Control";
|
|
6
|
+
import UI5Element from "sap/ui/core/Element";
|
|
7
|
+
import Controller from "sap/ui/core/mvc/Controller";
|
|
8
|
+
import View from "sap/ui/core/mvc/View";
|
|
9
|
+
import Context from "sap/ui/model/odata/v4/Context";
|
|
10
|
+
import ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
11
|
+
import ODataContextBinding from "sap/ui/model/odata/v4/ODataContextBinding";
|
|
12
|
+
import ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
13
|
+
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
8
14
|
|
|
9
15
|
export class MockContext implements Partial<Context> {
|
|
10
|
-
public constructor(private oValues
|
|
16
|
+
public constructor(private oValues?: any, private oBinding?: any) {}
|
|
11
17
|
|
|
12
18
|
public isA(sClassName: string): boolean {
|
|
13
19
|
return sClassName === "sap.ui.model.odata.v4.Context";
|
|
@@ -21,8 +27,19 @@ export class MockContext implements Partial<Context> {
|
|
|
21
27
|
return this.oValues[key];
|
|
22
28
|
});
|
|
23
29
|
|
|
24
|
-
public getObject = jest.fn((
|
|
25
|
-
|
|
30
|
+
public getObject = jest.fn((path: string) => {
|
|
31
|
+
const that = this as any;
|
|
32
|
+
let result = path ? that.oValues[path] : that.oValues;
|
|
33
|
+
|
|
34
|
+
if (!result && path && path.indexOf("/") > -1) {
|
|
35
|
+
const parts = path.split("/");
|
|
36
|
+
result = parts.reduce((sum, part: any) => {
|
|
37
|
+
sum = part ? sum[part] : sum;
|
|
38
|
+
return sum;
|
|
39
|
+
}, that.oValues);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return result;
|
|
26
43
|
});
|
|
27
44
|
public getPath = jest.fn(() => {
|
|
28
45
|
return this.oValues["$path"];
|
|
@@ -48,7 +65,9 @@ export class MockUI5Element implements Partial<UI5Element> {
|
|
|
48
65
|
public getParent = jest.fn();
|
|
49
66
|
}
|
|
50
67
|
|
|
51
|
-
export class MockControl extends MockUI5Element implements Partial<Control> {
|
|
68
|
+
export class MockControl extends MockUI5Element implements Partial<Control> {
|
|
69
|
+
public getBindingContext: jest.Mock<any, any> = jest.fn();
|
|
70
|
+
}
|
|
52
71
|
|
|
53
72
|
export class MockEvent implements Partial<Event> {
|
|
54
73
|
public constructor(public params: { [key: string]: any } = {}, public source: MockUI5Element = new MockUI5Element()) {}
|
|
@@ -148,6 +167,7 @@ export class MockMetaModel implements Partial<ODataMetaModel> {
|
|
|
148
167
|
return (new MockContext({ $path: sPath }) as any) as Context;
|
|
149
168
|
});
|
|
150
169
|
public getMetaPath = jest.fn();
|
|
170
|
+
public getContext = jest.fn();
|
|
151
171
|
}
|
|
152
172
|
|
|
153
173
|
/**
|
package/src/sap/fe/test/Utils.js
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/fe/test/Utils", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder"], function(Utils, OpaBuilder, FEBuilder) {
|
|
6
7
|
"use strict";
|
|
@@ -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(
|
|
6
7
|
["sap/fe/test/Utils", "sap/ui/test/Opa5", "sap/ui/test/OpaBuilder", "sap/fe/test/builder/FEBuilder", "sap/m/p13n/BasePanel"],
|
|
@@ -12,6 +13,7 @@ sap.ui.define(
|
|
|
12
13
|
*
|
|
13
14
|
* @typedef {object} TableIdentifier
|
|
14
15
|
* @property {string} property The name of the navigation property used for the table
|
|
16
|
+
* @property {string} [qualifier] The name of a qualifier for the table
|
|
15
17
|
*
|
|
16
18
|
* @name sap.fe.test.api.TableIdentifier
|
|
17
19
|
* @public
|