@@ -420,6 +420,67 @@ test("_analyzeAST: get template name from ast", (t) => {
420420 t . is ( result , "donkey" ) ;
421421} ) ;
422422
423+ test ( "_analyzeAST: get template name from ast (AMD define)" , ( t ) => {
424+ const code = `define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"], function(a, TemplateAssembler) {
425+ return TemplateAssembler.getTemplateComponent(getMethods,
426+ "sap.fe.templates.Page.Component", {
427+ metadata: {
428+ properties: {
429+ "templateName": {
430+ "type": "string",
431+ "defaultValue": "sap.fe.templates.Page.view.Page"
432+ }
433+ },
434+ "manifest": "json"
435+ }
436+ });});` ;
437+ const ast = parseUtils . parseJS ( code ) ;
438+ const analyzer = new SmartTemplateAnalyzer ( ) ;
439+ const templateName = analyzer . _analyzeAST ( "sap.fe.templates.Page.Component" , ast ) ;
440+ t . is ( templateName , "sap.fe.templates.Page.view.Page" ) ;
441+ } ) ;
442+
443+ test ( "_analyzeAST: unable to get template name from ast (no TemplateAssembler import)" , ( t ) => {
444+ const code = `define(["a"], function(a, TemplateAssembler) { // import missing
445+ return TemplateAssembler.getTemplateComponent(getMethods,
446+ "sap.fe.templates.Page.Component", {
447+ metadata: {
448+ properties: {
449+ "templateName": {
450+ "type": "string",
451+ "defaultValue": "sap.fe.templates.Page.view.Page"
452+ }
453+ },
454+ "manifest": "json"
455+ }
456+ });});` ;
457+ const ast = parseUtils . parseJS ( code ) ;
458+ const analyzer = new SmartTemplateAnalyzer ( ) ;
459+ const templateName = analyzer . _analyzeAST ( "sap.fe.templates.Page.Component" , ast ) ;
460+ t . is ( templateName , "" ) ;
461+ } ) ;
462+
463+ test ( "_analyzeAST: unable to get template name from ast (no module definition)" , ( t ) => {
464+ const code = `myDefine(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
465+ function(a, TemplateAssembler) { // unsupported module definition
466+ return TemplateAssembler.getTemplateComponent(getMethods,
467+ "sap.fe.templates.Page.Component", {
468+ metadata: {
469+ properties: {
470+ "templateName": {
471+ "type": "string",
472+ "defaultValue": "sap.fe.templates.Page.view.Page"
473+ }
474+ },
475+ "manifest": "json"
476+ }
477+ });});` ;
478+ const ast = parseUtils . parseJS ( code ) ;
479+ const analyzer = new SmartTemplateAnalyzer ( ) ;
480+ const templateName = analyzer . _analyzeAST ( "sap.fe.templates.Page.Component" , ast ) ;
481+ t . is ( templateName , "" ) ;
482+ } ) ;
483+
423484test ( "_analyzeAST: get template name from ast (ArrowFunction)" , ( t ) => {
424485 const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
425486 (a, TemplateAssembler) => {
@@ -495,6 +556,41 @@ test.serial("_analyzeAST: get template name from ast (async factory function)",
495556 t . is ( warningLogSpy . callCount , 1 , "Warning log is called once" ) ;
496557} ) ;
497558
559+ test ( "_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #1)" , ( t ) => {
560+ const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
561+ (a, TemplateAssembler) => TemplateAssembler.getTemplateComponent(getMethods,
562+ "sap.fe.templates.Page.Component", {
563+ metadata: {
564+ // No templateName provided
565+ "manifest": "json"
566+ }
567+ }));` ;
568+ const ast = parseUtils . parseJS ( code ) ;
569+ const analyzer = new SmartTemplateAnalyzer ( ) ;
570+ const templateName = analyzer . _analyzeAST ( "sap.fe.templates.Page.Component" , ast ) ;
571+ t . is ( templateName , "" ) ;
572+ } ) ;
573+
574+ test ( "_analyzeAST: unable to get template name from ast (ArrowFunction with implicit return #2)" , ( t ) => {
575+ const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
576+ (a, TemplateAssembler) => TemplateAssembler.extend(getMethods, // wrong call. should be 'getTemplateComponent'
577+ "sap.fe.templates.Page.Component", {
578+ metadata: {
579+ properties: {
580+ "templateName": {
581+ "type": "string",
582+ "defaultValue": "sap.fe.templates.Page.view.Page"
583+ }
584+ },
585+ "manifest": "json"
586+ }
587+ }));` ;
588+ const ast = parseUtils . parseJS ( code ) ;
589+ const analyzer = new SmartTemplateAnalyzer ( ) ;
590+ const templateName = analyzer . _analyzeAST ( "sap.fe.templates.Page.Component" , ast ) ;
591+ t . is ( templateName , "" ) ;
592+ } ) ;
593+
498594test . serial ( "_analyzeAST: get template name from ast (async arrow factory function)" , ( t ) => {
499595 const code = `sap.ui.define(["a", "sap/suite/ui/generic/template/lib/TemplateAssembler"],
500596 async (a, TemplateAssembler) => {
0 commit comments