Skip to content

Commit 4b09dd7

Browse files
committed
FioriElementsAnalyzer: Add tests for error cases
1 parent 62a8e5b commit 4b09dd7

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

test/lib/lbt/analyzer/FioriElementsAnalyzer.js

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,68 @@ test("_analyzeAST: get template name from ast", async (t) => {
245245
t.is(templateName, "sap.fe.templates.Page.view.Page");
246246
});
247247

248+
test("_analyzeAST: get template name from ast (AMD define)", async (t) => {
249+
const code = `define(["a", "sap/fe/core/TemplateAssembler"], function(a, TemplateAssembler){
250+
return TemplateAssembler.getTemplateComponent(getMethods,
251+
"sap.fe.templates.Page.Component", {
252+
metadata: {
253+
properties: {
254+
"templateName": {
255+
"type": "string",
256+
"defaultValue": "sap.fe.templates.Page.view.Page"
257+
}
258+
},
259+
"manifest": "json"
260+
}
261+
});});`;
262+
const ast = parseUtils.parseJS(code);
263+
const analyzer = new FioriElementsAnalyzer();
264+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
265+
t.is(templateName, "sap.fe.templates.Page.view.Page");
266+
});
267+
268+
test("_analyzeAST: unable to get template name from ast (no TemplateAssembler import)", async (t) => {
269+
const code = `sap.ui.define([], // import missing
270+
function(a, TemplateAssembler){
271+
return TemplateAssembler.getTemplateComponent(getMethods,
272+
"sap.fe.templates.Page.Component", {
273+
metadata: {
274+
properties: {
275+
"templateName": {
276+
"type": "string",
277+
"defaultValue": "sap.fe.templates.Page.view.Page"
278+
}
279+
},
280+
"manifest": "json"
281+
}
282+
});});`;
283+
const ast = parseUtils.parseJS(code);
284+
const analyzer = new FioriElementsAnalyzer();
285+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
286+
t.is(templateName, "");
287+
});
288+
289+
test("_analyzeAST: unable to get template name from ast (no module definition)", async (t) => {
290+
const code = `myDefine(["a", "sap/fe/core/TemplateAssembler"], // unsupported module definition
291+
function(a, TemplateAssembler){
292+
return TemplateAssembler.getTemplateComponent(getMethods,
293+
"sap.fe.templates.Page.Component", {
294+
metadata: {
295+
properties: {
296+
"templateName": {
297+
"type": "string",
298+
"defaultValue": "sap.fe.templates.Page.view.Page"
299+
}
300+
},
301+
"manifest": "json"
302+
}
303+
});});`;
304+
const ast = parseUtils.parseJS(code);
305+
const analyzer = new FioriElementsAnalyzer();
306+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
307+
t.is(templateName, "");
308+
});
309+
248310
test("_analyzeAST: get template name from ast (async function)", async (t) => {
249311
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"], async function(a, TemplateAssembler){
250312
return TemplateAssembler.getTemplateComponent(getMethods,
@@ -305,6 +367,41 @@ test("_analyzeAST: get template name from ast (ArrowFunction with implicit retur
305367
t.is(templateName, "sap.fe.templates.Page.view.Page");
306368
});
307369

370+
test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #1)", async (t) => {
371+
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"],
372+
(a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
373+
"sap.fe.templates.Page.Component", {
374+
metadata: {
375+
// No templateName provided
376+
"manifest": "json"
377+
}
378+
}));`;
379+
const ast = parseUtils.parseJS(code);
380+
const analyzer = new FioriElementsAnalyzer();
381+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
382+
t.is(templateName, "");
383+
});
384+
385+
test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #2)", async (t) => {
386+
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"],
387+
(a, TemplateAssembler) => TemplateAssembler.extend(getMethods, // wrong call. should be 'getTemplateComponent'
388+
"sap.fe.templates.Page.Component", {
389+
metadata: {
390+
properties: {
391+
"templateName": {
392+
"type": "string",
393+
"defaultValue": "sap.fe.templates.Page.view.Page"
394+
}
395+
},
396+
"manifest": "json"
397+
}
398+
}));`;
399+
const ast = parseUtils.parseJS(code);
400+
const analyzer = new FioriElementsAnalyzer();
401+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
402+
t.is(templateName, "");
403+
});
404+
308405
test("_analyzeAST: get template name from ast (async factory function)", async (t) => {
309406
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"],
310407
async (a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,

0 commit comments

Comments
 (0)