Skip to content

Commit 2a3884a

Browse files
committed
SmartTemplateAnalyzer: Add tests for error cases
1 parent 4b09dd7 commit 2a3884a

File tree

2 files changed

+97
-1
lines changed

2 files changed

+97
-1
lines changed

test/lib/lbt/analyzer/FioriElementsAnalyzer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ test("_analyzeAST: get template name from ast (AMD define)", async (t) => {
266266
});
267267

268268
test("_analyzeAST: unable to get template name from ast (no TemplateAssembler import)", async (t) => {
269-
const code = `sap.ui.define([], // import missing
269+
const code = `sap.ui.define(["a"], // import missing
270270
function(a, TemplateAssembler){
271271
return TemplateAssembler.getTemplateComponent(getMethods,
272272
"sap.fe.templates.Page.Component", {

test/lib/lbt/analyzer/SmartTemplateAnalyzer.js

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,67 @@ test("_analyzeAST: get template name from ast (ArrowFunction)", async (t) => {
432432
t.is(result, "donkey");
433433
});
434434

435+
test("_analyzeAST: get template name from ast (AMD define)", async (t) => {
436+
const code = `define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"], function(a, TemplateAssembler) {
437+
return TemplateAssembler.getTemplateComponent(getMethods,
438+
"sap.fe.templates.Page.Component", {
439+
metadata: {
440+
properties: {
441+
"templateName": {
442+
"type": "string",
443+
"defaultValue": "sap.fe.templates.Page.view.Page"
444+
}
445+
},
446+
"manifest": "json"
447+
}
448+
});});`;
449+
const ast = parseUtils.parseJS(code);
450+
const analyzer = new SmartTemplateAnalyzer();
451+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
452+
t.is(templateName, "sap.fe.templates.Page.view.Page");
453+
});
454+
455+
test("_analyzeAST: unable to get template name from ast (no TemplateAssembler import)", async (t) => {
456+
const code = `define(["a"], function(a, TemplateAssembler) { // import missing
457+
return TemplateAssembler.getTemplateComponent(getMethods,
458+
"sap.fe.templates.Page.Component", {
459+
metadata: {
460+
properties: {
461+
"templateName": {
462+
"type": "string",
463+
"defaultValue": "sap.fe.templates.Page.view.Page"
464+
}
465+
},
466+
"manifest": "json"
467+
}
468+
});});`;
469+
const ast = parseUtils.parseJS(code);
470+
const analyzer = new SmartTemplateAnalyzer();
471+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
472+
t.is(templateName, "");
473+
});
474+
475+
test("_analyzeAST: unable to get template name from ast (no module definition)", async (t) => {
476+
const code = `myDefine(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
477+
function(a, TemplateAssembler) { // unsupported module definition
478+
return TemplateAssembler.getTemplateComponent(getMethods,
479+
"sap.fe.templates.Page.Component", {
480+
metadata: {
481+
properties: {
482+
"templateName": {
483+
"type": "string",
484+
"defaultValue": "sap.fe.templates.Page.view.Page"
485+
}
486+
},
487+
"manifest": "json"
488+
}
489+
});});`;
490+
const ast = parseUtils.parseJS(code);
491+
const analyzer = new SmartTemplateAnalyzer();
492+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
493+
t.is(templateName, "");
494+
});
495+
435496
test("_analyzeAST: get template name from ast (ArrowFunction with implicit return)", async (t) => {
436497
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
437498
(a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
@@ -452,6 +513,41 @@ test("_analyzeAST: get template name from ast (ArrowFunction with implicit retur
452513
t.is(templateName, "sap.fe.templates.Page.view.Page");
453514
});
454515

516+
test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #1)", async (t) => {
517+
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
518+
(a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
519+
"sap.fe.templates.Page.Component", {
520+
metadata: {
521+
// No templateName provided
522+
"manifest": "json"
523+
}
524+
}));`;
525+
const ast = parseUtils.parseJS(code);
526+
const analyzer = new SmartTemplateAnalyzer();
527+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
528+
t.is(templateName, "");
529+
});
530+
531+
test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #2)", async (t) => {
532+
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
533+
(a, TemplateAssembler) => TemplateAssembler.extend(getMethods, // wrong call. should be 'getTemplateComponent'
534+
"sap.fe.templates.Page.Component", {
535+
metadata: {
536+
properties: {
537+
"templateName": {
538+
"type": "string",
539+
"defaultValue": "sap.fe.templates.Page.view.Page"
540+
}
541+
},
542+
"manifest": "json"
543+
}
544+
}));`;
545+
const ast = parseUtils.parseJS(code);
546+
const analyzer = new SmartTemplateAnalyzer();
547+
const templateName = await analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
548+
t.is(templateName, "");
549+
});
550+
455551
test("_analyzeAST: get template name from ast (async ArrowFunction)", async (t) => {
456552
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
457553
async (a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,

0 commit comments

Comments
 (0)