@@ -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+
435496test ( "_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+
455551test ( "_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