@@ -222,67 +222,58 @@ describe("SimpleInstaller", () => {
222222 vi . mocked ( mockCustomModesManager . getCustomModes ) . mockResolvedValueOnce ( [
223223 { slug : "test" , name : "Test Mode" , source : "project" } as any ,
224224 ] )
225- // Mock that rules folder exists
226- vi . mocked ( fileExistsAtPath ) . mockResolvedValueOnce ( true )
227225
228226 await installer . removeItem ( mockModeItem , { target : "project" } )
229227
230- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" )
231- expect ( fileExistsAtPath ) . toHaveBeenCalledWith ( path . join ( "/test/workspace" , ".roo" , "rules-test" ) )
232- expect ( mockFs . rm ) . toHaveBeenCalledWith ( path . join ( "/test/workspace" , ".roo" , "rules-test" ) , {
233- recursive : true ,
234- force : true ,
235- } )
228+ // Should call deleteCustomMode with fromMarketplace flag set to true
229+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" , true )
230+ // The rules folder deletion is now handled by CustomModesManager, not SimpleInstaller
231+ expect ( fileExistsAtPath ) . not . toHaveBeenCalled ( )
232+ expect ( mockFs . rm ) . not . toHaveBeenCalled ( )
236233 } )
237234
238235 it ( "should handle global mode removal with rules cleanup" , async ( ) => {
239236 // Mock that the mode exists with global source
240237 vi . mocked ( mockCustomModesManager . getCustomModes ) . mockResolvedValueOnce ( [
241238 { slug : "test" , name : "Test Mode" , source : "global" } as any ,
242239 ] )
243- // Mock that rules folder exists
244- vi . mocked ( fileExistsAtPath ) . mockResolvedValueOnce ( true )
245240
246241 await installer . removeItem ( mockModeItem , { target : "global" } )
247242
248- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" )
249- expect ( fileExistsAtPath ) . toHaveBeenCalledWith ( path . join ( "/home/user" , ".roo" , "rules-test" ) )
250- expect ( mockFs . rm ) . toHaveBeenCalledWith ( path . join ( "/home/user" , ".roo" , "rules-test" ) , {
251- recursive : true ,
252- force : true ,
253- } )
243+ // Should call deleteCustomMode with fromMarketplace flag set to true
244+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" , true )
245+ // The rules folder deletion is now handled by CustomModesManager, not SimpleInstaller
246+ expect ( fileExistsAtPath ) . not . toHaveBeenCalled ( )
247+ expect ( mockFs . rm ) . not . toHaveBeenCalled ( )
254248 } )
255249
256250 it ( "should handle case when rules folder does not exist" , async ( ) => {
257251 // Mock that the mode exists
258252 vi . mocked ( mockCustomModesManager . getCustomModes ) . mockResolvedValueOnce ( [
259253 { slug : "test" , name : "Test Mode" , source : "project" } as any ,
260254 ] )
261- // Mock that rules folder does not exist
262- vi . mocked ( fileExistsAtPath ) . mockResolvedValueOnce ( false )
263255
264256 await installer . removeItem ( mockModeItem , { target : "project" } )
265257
266- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" )
267- expect ( fileExistsAtPath ) . toHaveBeenCalledWith ( path . join ( "/test/workspace" , ".roo" , "rules-test" ) )
258+ // Should call deleteCustomMode with fromMarketplace flag set to true
259+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" , true )
260+ // The rules folder deletion is now handled by CustomModesManager, not SimpleInstaller
261+ expect ( fileExistsAtPath ) . not . toHaveBeenCalled ( )
268262 expect ( mockFs . rm ) . not . toHaveBeenCalled ( )
269263 } )
270264
271- it ( "should continue even if rules folder deletion fails" , async ( ) => {
265+ it ( "should throw error if deleteCustomMode fails" , async ( ) => {
272266 // Mock that the mode exists
273267 vi . mocked ( mockCustomModesManager . getCustomModes ) . mockResolvedValueOnce ( [
274268 { slug : "test" , name : "Test Mode" , source : "project" } as any ,
275269 ] )
276- // Mock that rules folder exists
277- vi . mocked ( fileExistsAtPath ) . mockResolvedValueOnce ( true )
278- // Mock that rm fails
279- mockFs . rm . mockRejectedValueOnce ( new Error ( "Permission denied" ) )
270+ // Mock that deleteCustomMode fails
271+ mockCustomModesManager . deleteCustomMode = vi . fn ( ) . mockRejectedValueOnce ( new Error ( "Permission denied" ) )
280272
281- // Should not throw
282- await expect ( installer . removeItem ( mockModeItem , { target : "project" } ) ) . resolves . not . toThrow ( )
273+ // Should throw the error from deleteCustomMode
274+ await expect ( installer . removeItem ( mockModeItem , { target : "project" } ) ) . rejects . toThrow ( "Permission denied" )
283275
284- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" )
285- expect ( mockFs . rm ) . toHaveBeenCalled ( )
276+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" , true )
286277 } )
287278
288279 it ( "should handle mode not found in custom modes list" , async ( ) => {
@@ -291,7 +282,7 @@ describe("SimpleInstaller", () => {
291282
292283 await installer . removeItem ( mockModeItem , { target : "project" } )
293284
294- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" )
285+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test" , true )
295286 // Should not attempt to delete rules folder
296287 expect ( fileExistsAtPath ) . not . toHaveBeenCalled ( )
297288 expect ( mockFs . rm ) . not . toHaveBeenCalled ( )
@@ -344,7 +335,7 @@ describe("SimpleInstaller", () => {
344335
345336 await installer . removeItem ( arrayContentItem , { target : "project" } )
346337
347- expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test-array" )
338+ expect ( mockCustomModesManager . deleteCustomMode ) . toHaveBeenCalledWith ( "test-array" , true )
348339 } )
349340
350341 it ( "should throw error when CustomModesManager is not available" , async ( ) => {
0 commit comments