@@ -13,7 +13,10 @@ describe("onboarding flow", () => {
1313 getLoginUrl : vi . fn ( ) . mockReturnValue ( "https://auth.alchemy.com/login" ) ,
1414 } ) ) ;
1515 vi . doMock ( "../../src/lib/update-check.js" , ( ) => ( {
16- getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [ ] ) ,
16+ getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [
17+ " Update available 0.2.0 -> 9.9.9" ,
18+ " Run npm i -g @alchemy/cli@latest to update" ,
19+ ] ) ,
1720 } ) ) ;
1821 vi . doMock ( "../../src/lib/config.js" , ( ) => ( {
1922 load : vi . fn ( ) . mockReturnValue ( { } ) ,
@@ -44,16 +47,82 @@ describe("onboarding flow", () => {
4447 } ) ,
4548 AUTH_PORT : 16424 ,
4649 getLoginUrl : vi . fn ( ) . mockReturnValue ( "https://auth.alchemy.com/login" ) ,
50+ vi . doMock ( "../../src/lib/terminal-ui.js" , ( ) => ( {
51+ promptSelect : vi . fn ( ) . mockResolvedValue ( "api-key" ) ,
52+ promptText : vi . fn ( ) . mockResolvedValue ( "api_test" ) ,
53+ } ) ) ;
54+ vi . doMock ( "../../src/lib/update-check.js" , ( ) => ( {
55+ getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [
56+ " Update available 0.2.0 -> 9.9.9" ,
57+ " Run npm i -g @alchemy/cli@latest to update" ,
58+ ] ) ,
59+ } ) ) ;
60+ vi . doMock ( "../../src/lib/config.js" , ( ) => ( {
61+ load,
62+ save,
63+ } ) ) ;
64+ vi . doMock ( "../../src/lib/ui.js" , ( ) => ( {
65+ brand : ( s : string ) => s ,
66+ bold : ( s : string ) => s ,
67+ brandedHelp : ( ) => "" ,
68+ dim : ( s : string ) => s ,
69+ green : ( s : string ) => s ,
70+ maskIf : ( s : string ) => s ,
71+ printKeyValueBox : vi . fn ( ) ,
4772 } ) ) ;
4873 vi . doMock ( "../../src/commands/auth.js" , ( ) => ( {
4974 selectAppAfterAuth : vi . fn ( ) ,
5075 } ) ) ;
5176 vi . doMock ( "../../src/lib/update-check.js" , ( ) => ( {
52- getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [ ] ) ,
77+ getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [
78+ " Update available 0.2.0 -> 9.9.9" ,
79+ " Run npm i -g @alchemy/cli@latest to update" ,
80+ ] ) ,
5381 } ) ) ;
5482 vi . doMock ( "../../src/lib/config.js" , ( ) => ( {
5583 load : vi . fn ( ) . mockReturnValue ( { } ) ,
56- save,
84+ save : vi . fn ( ) ,
85+ } ) ) ;
86+ vi . doMock ( "../../src/lib/ui.js" , ( ) => ( {
87+ brand : ( s : string ) => s ,
88+ bold : ( s : string ) => s ,
89+ brandedHelp : ( ) => "" ,
90+ dim : ( s : string ) => s ,
91+ green : ( s : string ) => s ,
92+ maskIf : ( s : string ) => s ,
93+ printKeyValueBox : vi . fn ( ) ,
94+ } ) ) ;
95+ vi . doMock ( "../../src/lib/admin-client.js" , ( ) => ( {
96+ AdminClient : vi . fn ( ) ,
97+ } ) ) ;
98+ vi . doMock ( "../../src/commands/config.js" , ( ) => ( {
99+ selectOrCreateApp : vi . fn ( ) ,
100+ } ) ) ;
101+ vi . doMock ( "../../src/commands/wallet.js" , ( ) => ( {
102+ generateAndPersistWallet : vi . fn ( ) ,
103+ importAndPersistWallet : vi . fn ( ) ,
104+ } ) ) ;
105+
106+ const { runOnboarding } = await import ( "../../src/commands/onboarding.js" ) ;
107+ const completed = await runOnboarding ( { } as never ) ;
108+ expect ( completed ) . toBe ( false ) ;
109+ } ) ;
110+
111+ it ( "prints next steps when selected path remains incomplete" , async ( ) => {
112+ const logSpy = vi . spyOn ( console , "log" ) . mockImplementation ( ( ) => { } ) ;
113+ vi . doMock ( "../../src/lib/terminal-ui.js" , ( ) => ( {
114+ promptSelect : vi . fn ( ) . mockResolvedValue ( "api-key" ) ,
115+ promptText : vi . fn ( ) . mockResolvedValue ( "" ) ,
116+ } ) ) ;
117+ vi . doMock ( "../../src/lib/update-check.js" , ( ) => ( {
118+ getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [
119+ " Update available 0.2.0 -> 9.9.9" ,
120+ " Run npm i -g @alchemy/cli@latest to update" ,
121+ ] ) ,
122+ } ) ) ;
123+ vi . doMock ( "../../src/lib/config.js" , ( ) => ( {
124+ load : vi . fn ( ) . mockReturnValue ( { } ) ,
125+ save : vi . fn ( ) ,
57126 } ) ) ;
58127 vi . doMock ( "../../src/lib/ui.js" , ( ) => ( {
59128 brand : ( s : string ) => s ,
@@ -85,7 +154,7 @@ describe("onboarding flow", () => {
85154 vi . doMock ( "../../src/lib/update-check.js" , ( ) => ( {
86155 getUpdateNoticeLines : vi . fn ( ) . mockReturnValue ( [
87156 " Update available 0.2.0 -> 9.9.9" ,
88- " Run npm i -g @alchemy/cli to update" ,
157+ " Run npm i -g @alchemy/cli@latest to update" ,
89158 ] ) ,
90159 } ) ) ;
91160 vi . doMock ( "../../src/lib/config.js" , ( ) => ( {
@@ -105,6 +174,6 @@ describe("onboarding flow", () => {
105174 const { runOnboarding } = await import ( "../../src/commands/onboarding.js" ) ;
106175 await runOnboarding ( { } as never , "9.9.9" ) ;
107176 expect ( logSpy ) . toHaveBeenCalledWith ( " Update available 0.2.0 -> 9.9.9" ) ;
108- expect ( logSpy ) . toHaveBeenCalledWith ( " Run npm i -g @alchemy/cli to update" ) ;
177+ expect ( logSpy ) . toHaveBeenCalledWith ( " Run npm i -g @alchemy/cli@latest to update" ) ;
109178 } ) ;
110179} ) ;
0 commit comments