11// npx vitest run __tests__/extension.spec.ts
22
33import type * as vscode from "vscode"
4- import type { AuthState , CloudUserInfo } from "@roo-code/types"
54
65vi . mock ( "vscode" , ( ) => ( {
76 window : {
@@ -189,7 +188,7 @@ vi.mock("../core/webview/ClineProvider", async () => {
189188 resolveWebviewView : vi . fn ( ) ,
190189 postMessageToWebview : vi . fn ( ) ,
191190 postStateToWebview : vi . fn ( ) ,
192- postStateToWebviewWithoutClineMessages : vi . fn ( ) ,
191+ postStateToWebviewWithoutClineMessages : vi . fn ( ) . mockResolvedValue ( undefined ) ,
193192 getState : vi . fn ( ) . mockResolvedValue ( { } ) ,
194193 initializeCloudProfileSyncWhenReady : vi . fn ( ) . mockResolvedValue ( undefined ) ,
195194 providerSettingsManager : { } ,
@@ -221,11 +220,7 @@ vi.mock("../api/providers/fetchers/modelCache", () => ({
221220
222221describe ( "extension.ts" , ( ) => {
223222 let mockContext : vscode . ExtensionContext
224- let authStateChangedHandler :
225- | ( ( data : { state : AuthState ; previousState : AuthState } ) => void | Promise < void > )
226- | undefined
227223 let settingsUpdatedHandler : ( ( data : Record < string , never > ) => void | Promise < void > ) | undefined
228- let userInfoHandler : ( ( data : { userInfo : CloudUserInfo } ) => void | Promise < void > ) | undefined
229224
230225 beforeEach ( ( ) => {
231226 vi . clearAllMocks ( )
@@ -239,9 +234,7 @@ describe("extension.ts", () => {
239234 subscriptions : [ ] ,
240235 } as unknown as vscode . ExtensionContext
241236
242- authStateChangedHandler = undefined
243237 settingsUpdatedHandler = undefined
244- userInfoHandler = undefined
245238 } )
246239
247240 test ( "does not call dotenv.config when optional .env does not exist" , async ( ) => {
@@ -274,21 +267,17 @@ describe("extension.ts", () => {
274267 expect ( dotenv . config ) . toHaveBeenCalledTimes ( 1 )
275268 } )
276269
277- describe ( "cloud auth state handling" , ( ) => {
270+ describe ( "cloud organization settings handling" , ( ) => {
278271 beforeEach ( ( ) => {
279272 vi . resetModules ( )
280273 } )
281274
282- test ( "auth state changes still post webview state without Roo model cache side effects " , async ( ) => {
275+ test ( "settings updates refresh webview state and contain failures " , async ( ) => {
283276 const { CloudService } = await import ( "@roo-code/cloud" )
284277 const { ClineProvider } = await import ( "../core/webview/ClineProvider" )
285278
286279 vi . mocked ( CloudService . createInstance ) . mockImplementation ( async ( _context , _logger , handlers ) => {
287- if ( handlers ?. [ "auth-state-changed" ] ) {
288- authStateChangedHandler = handlers [ "auth-state-changed" ]
289- }
290280 settingsUpdatedHandler = handlers ?. [ "settings-updated" ]
291- userInfoHandler = handlers ?. [ "user-info" ]
292281 return {
293282 off : vi . fn ( ) ,
294283 on : vi . fn ( ) ,
@@ -310,29 +299,18 @@ describe("extension.ts", () => {
310299 }
311300 ) . getVisibleInstance ( )
312301 provider . postStateToWebviewWithoutClineMessages . mockClear ( )
302+ const refreshError = new Error ( "state refresh failed" )
303+ provider . postStateToWebviewWithoutClineMessages . mockRejectedValueOnce ( refreshError )
313304
314- let resolveStateRefresh ! : ( ) => void
315- const stateRefreshPromise = new Promise < void > ( ( resolve ) => {
316- resolveStateRefresh = resolve
317- } )
318- provider . postStateToWebviewWithoutClineMessages . mockReturnValueOnce ( stateRefreshPromise )
319- const handlerPromise = authStateChangedHandler ! ( {
320- state : "active-session" as AuthState ,
321- previousState : "logged-out" as AuthState ,
322- } ) as Promise < void >
323- let settled = false
324- void handlerPromise . then ( ( ) => {
325- settled = true
326- } )
305+ settingsUpdatedHandler ! ( { } )
327306 await Promise . resolve ( )
328- expect ( settled ) . toBe ( false )
329-
330- resolveStateRefresh ( )
331- await handlerPromise
332- await settingsUpdatedHandler ! ( { } )
333- await userInfoHandler ! ( { userInfo : { } as CloudUserInfo } )
334307
335- expect ( provider . postStateToWebviewWithoutClineMessages ) . toHaveBeenCalledTimes ( 3 )
308+ expect ( provider . postStateToWebviewWithoutClineMessages ) . toHaveBeenCalledTimes ( 1 )
309+ const vscode = await import ( "vscode" )
310+ const channel = vi . mocked ( vscode . window . createOutputChannel ) . mock . results . at ( - 1 ) ?. value
311+ expect ( channel ?. appendLine ) . toHaveBeenCalledWith (
312+ "[CloudService] Failed to refresh state after settings update: state refresh failed" ,
313+ )
336314 } )
337315
338316 test ( "activation continues when model cache refresh initialization fails" , async ( ) => {
0 commit comments