1- import type { ConfigAnswers , SourceApplication , SystemLookup , UI5Version } from '@sap-ux/adp-tooling' ;
1+ import type {
2+ ConfigAnswers ,
3+ FlexUISupportedSystem ,
4+ SourceApplication ,
5+ SystemLookup ,
6+ UI5Version
7+ } from '@sap-ux/adp-tooling' ;
28import {
39 FlexLayer ,
410 SourceManifest ,
@@ -20,6 +26,7 @@ import { ConfigPrompter } from '../../../src/app/questions/configuration';
2026import { configPromptNames } from '../../../src/app/types' ;
2127import { initI18n , t } from '../../../src/utils/i18n' ;
2228import { getSystemAdditionalMessages } from '../../../src/app/questions/helper/additional-messages' ;
29+ import { type IMessageSeverity , Severity } from '@sap-devx/yeoman-ui-types' ;
2330
2431jest . mock ( '../../../src/app/questions/helper/conditions' , ( ) => ( {
2532 showApplicationQuestion : jest . fn ( ) . mockResolvedValue ( true ) ,
@@ -108,6 +115,10 @@ const getSystemAdditionalMessagesMock = getSystemAdditionalMessages as jest.Mock
108115describe ( 'ConfigPrompter Integration Tests' , ( ) => {
109116 let configPrompter : ConfigPrompter ;
110117 const layer = FlexLayer . CUSTOMER_BASE ;
118+ const systemAdditionalMessage : IMessageSeverity = {
119+ message : 'System additional message' ,
120+ severity : Severity . information
121+ } ;
111122
112123 beforeAll ( async ( ) => {
113124 await initI18n ( ) ;
@@ -183,18 +194,21 @@ describe('ConfigPrompter Integration Tests', () => {
183194 ...sourceSystems ,
184195 getSystemRequiresAuth : jest . fn ( ) . mockResolvedValueOnce ( false ) . mockResolvedValueOnce ( true )
185196 } as unknown as SystemLookup ;
197+ isAbapCloudMock . mockResolvedValue ( true ) ;
186198 configPrompter = new ConfigPrompter ( systemLookup , layer , logger ) ;
187199 const prompts = configPrompter . getPrompts ( ) ;
188200 const systemPrompt = prompts . find ( ( p ) => p . name === configPromptNames . system ) ;
189201 expect ( systemPrompt ) . toBeDefined ( ) ;
190202
191203 const result1 = await systemPrompt ?. validate ?.( 'SYS010' , dummyAnswers ) ;
204+ expect ( configPrompter [ 'isCloudProject' ] ) . toBe ( true ) ;
192205 const result2 = await systemPrompt ?. validate ?.( 'SYS010_NOAUTH' , dummyAnswers ) ;
193206
194207 expect ( result1 ) . toEqual ( true ) ;
195208 expect ( result2 ) . toEqual ( true ) ;
196209 expect ( configPrompter [ 'flexUISystem' ] ) . toEqual ( undefined ) ;
197210 expect ( configPrompter [ 'isAuthRequired' ] ) . toEqual ( true ) ;
211+ expect ( configPrompter [ 'isCloudProject' ] ) . toBeUndefined ( ) ;
198212 } ) ;
199213
200214 it ( 'system prompt validate should throw error' , async ( ) => {
@@ -253,6 +267,24 @@ describe('ConfigPrompter Integration Tests', () => {
253267
254268 expect ( result ) . toEqual ( true ) ;
255269 } ) ;
270+
271+ it ( 'should set system additional messages when additionalMessages callback gets called' , async ( ) => {
272+ const prompts = configPrompter . getPrompts ( ) ;
273+ const systemPrompt = prompts . find ( ( p ) => p . name === configPromptNames . system ) ;
274+ getSystemAdditionalMessagesMock . mockReturnValue ( systemAdditionalMessage ) ;
275+ const flexUISystem : FlexUISupportedSystem = {
276+ isUIFlex : true ,
277+ isOnPremise : false
278+ } ;
279+ configPrompter [ 'flexUISystem' ] = flexUISystem ;
280+ configPrompter [ 'isCloudProject' ] = true ;
281+
282+ const result = await systemPrompt ?. additionalMessages ?.( ) ;
283+
284+ expect ( result ) . toEqual ( systemAdditionalMessage ) ;
285+ expect ( getSystemAdditionalMessagesMock ) . toHaveBeenCalledWith ( flexUISystem , true ) ;
286+ expect ( configPrompter [ 'systemAdditionalMessage' ] ) . toEqual ( systemAdditionalMessage ) ;
287+ } ) ;
256288 } ) ;
257289
258290 describe ( 'System CLI Validation Prompt' , ( ) => {
@@ -360,16 +392,29 @@ describe('ConfigPrompter Integration Tests', () => {
360392 expect ( result ) . toEqual ( `Authentication error: ${ axiosError . message } ` ) ;
361393 } ) ;
362394
363- it ( 'password prompt additionalMessages should return undefined if value is passed ' , async ( ) => {
395+ it ( 'password prompt additionalMessages should return undefined if system additional messages are already set ' , async ( ) => {
364396 const prompts = configPrompter . getPrompts ( ) ;
365397 const passwordPrompt = prompts . find ( ( p ) => p . name === configPromptNames . password ) ;
366398 expect ( passwordPrompt ) . toBeDefined ( ) ;
367- const systemAdditionalMessage = 'System additional message' ;
368- getSystemAdditionalMessagesMock . mockResolvedValue ( systemAdditionalMessage ) ;
399+ configPrompter [ 'systemAdditionalMessage' ] = systemAdditionalMessage ;
369400
370- const result = await passwordPrompt ?. additionalMessages ?.( dummyApps [ 0 ] ) ;
401+ const additionalMessages = await passwordPrompt ?. additionalMessages ?.( ) ;
371402
372- expect ( result ) . toEqual ( systemAdditionalMessage ) ;
403+ expect ( additionalMessages ) . toBeUndefined ( ) ;
404+ expect ( getSystemAdditionalMessagesMock ) . not . toHaveBeenCalled ( ) ;
405+ } ) ;
406+
407+ it ( 'password prompt additionalMessages callback should set the system additional messages if not set' , async ( ) => {
408+ const prompts = configPrompter . getPrompts ( ) ;
409+ const passwordPrompt = prompts . find ( ( p ) => p . name === configPromptNames . password ) ;
410+ expect ( passwordPrompt ) . toBeDefined ( ) ;
411+ getSystemAdditionalMessagesMock . mockReturnValue ( systemAdditionalMessage ) ;
412+
413+ const additionalMessages = await passwordPrompt ?. additionalMessages ?.( ) ;
414+
415+ expect ( additionalMessages ) . toEqual ( systemAdditionalMessage ) ;
416+ expect ( getSystemAdditionalMessagesMock ) . toHaveBeenCalled ( ) ;
417+ expect ( configPrompter [ 'systemAdditionalMessage' ] ) . toEqual ( systemAdditionalMessage ) ;
373418 } ) ;
374419 } ) ;
375420
0 commit comments