Skip to content

Commit

Permalink
[INTERNAL] FioriElementsAnalyzer/SmartTemplateAnalyzer: Add tests for…
Browse files Browse the repository at this point in the history
… error cases
  • Loading branch information
flovogt committed Aug 25, 2022
1 parent d9d3d2a commit e4783b1
Show file tree
Hide file tree
Showing 2 changed files with 193 additions and 0 deletions.
97 changes: 97 additions & 0 deletions test/lib/lbt/analyzer/FioriElementsAnalyzer.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,103 @@ test("_analyzeAST: get template name from ast", (t) => {
t.is(templateName, "sap.fe.templates.Page.view.Page");
});

test("_analyzeAST: get template name from ast (AMD define)", (t) => {
const code = `define(["a", "sap/fe/core/TemplateAssembler"], function(a, TemplateAssembler){
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new FioriElementsAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "sap.fe.templates.Page.view.Page");
});

test("_analyzeAST: unable to get template name from ast (no TemplateAssembler import)", (t) => {
const code = `sap.ui.define(["a"], // import missing
function(a, TemplateAssembler){
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new FioriElementsAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: unable to get template name from ast (no module definition)", (t) => {
const code = `myDefine(["a", "sap/fe/core/TemplateAssembler"], // unsupported module definition
function(a, TemplateAssembler){
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new FioriElementsAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #1)", (t) => {
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"],
(a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
// No templateName provided
"manifest": "json"
}
}));`;
const ast = parseUtils.parseJS(code);
const analyzer = new FioriElementsAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #2)", (t) => {
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"],
(a, TemplateAssembler) => TemplateAssembler.extend(getMethods, // wrong call. should be 'getTemplateComponent'
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
}));`;
const ast = parseUtils.parseJS(code);
const analyzer = new FioriElementsAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test.serial("_analyzeAST: get template name from ast (async function)", (t) => {
const code = `sap.ui.define(["a", "sap/fe/core/TemplateAssembler"], async function(a, TemplateAssembler){
return TemplateAssembler.getTemplateComponent(getMethods,
Expand Down
96 changes: 96 additions & 0 deletions test/lib/lbt/analyzer/SmartTemplateAnalyzer.js
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,67 @@ test("_analyzeAST: get template name from ast", (t) => {
t.is(result, "donkey");
});

test("_analyzeAST: get template name from ast (AMD define)", (t) => {
const code = `define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"], function(a, TemplateAssembler) {
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new SmartTemplateAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "sap.fe.templates.Page.view.Page");
});

test("_analyzeAST: unable to get template name from ast (no TemplateAssembler import)", (t) => {
const code = `define(["a"], function(a, TemplateAssembler) { // import missing
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new SmartTemplateAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: unable to get template name from ast (no module definition)", (t) => {
const code = `myDefine(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
function(a, TemplateAssembler) { // unsupported module definition
return TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
});});`;
const ast = parseUtils.parseJS(code);
const analyzer = new SmartTemplateAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: get template name from ast (ArrowFunction)", (t) => {
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
(a, TemplateAssembler) => {
Expand Down Expand Up @@ -495,6 +556,41 @@ test.serial("_analyzeAST: get template name from ast (async factory function)",
t.is(warningLogSpy.callCount, 1, "Warning log is called once");
});

test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #1)", (t) => {
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
(a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
"sap.fe.templates.Page.Component", {
metadata: {
// No templateName provided
"manifest": "json"
}
}));`;
const ast = parseUtils.parseJS(code);
const analyzer = new SmartTemplateAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test("_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #2)", (t) => {
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
(a, TemplateAssembler) => TemplateAssembler.extend(getMethods, // wrong call. should be 'getTemplateComponent'
"sap.fe.templates.Page.Component", {
metadata: {
properties: {
"templateName": {
"type": "string",
"defaultValue": "sap.fe.templates.Page.view.Page"
}
},
"manifest": "json"
}
}));`;
const ast = parseUtils.parseJS(code);
const analyzer = new SmartTemplateAnalyzer();
const templateName = analyzer._analyzeAST("sap.fe.templates.Page.Component", ast);
t.is(templateName, "");
});

test.serial("_analyzeAST: get template name from ast (async arrow factory function)", (t) => {
const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
async (a, TemplateAssembler) => {
Expand Down

0 comments on commit e4783b1

Please sign in to comment.