@@ -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+
248310test ( "_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+
308405test ( "_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