@@ -439,4 +439,97 @@ describe('useComfyManagerStore', () => {
439
439
expect ( store . isPackInstalling ( 'pack-3' ) ) . toBe ( false )
440
440
} )
441
441
} )
442
+
443
+ describe ( 'refreshInstalledList with pack ID normalization' , ( ) => {
444
+ it ( 'normalizes pack IDs by removing version suffixes' , async ( ) => {
445
+ const mockPacks = {
446
+ 'ComfyUI-GGUF@1_1_4' : {
447
+ enabled : false ,
448
+ cnr_id : 'ComfyUI-GGUF' ,
449
+ ver : '1.1.4' ,
450
+ aux_id : undefined
451
+ } ,
452
+ 'ComfyUI-Manager' : {
453
+ enabled : true ,
454
+ cnr_id : 'ComfyUI-Manager' ,
455
+ ver : '2.0.0' ,
456
+ aux_id : undefined
457
+ }
458
+ }
459
+
460
+ ; ( mockManagerService . listInstalledPacks as any ) . mockResolvedValue (
461
+ mockPacks
462
+ )
463
+
464
+ const store = useComfyManagerStore ( )
465
+ await store . refreshInstalledList ( )
466
+
467
+ // Both packs should be accessible by their base name
468
+ expect ( store . installedPacks [ 'ComfyUI-GGUF' ] ) . toEqual ( {
469
+ enabled : false ,
470
+ cnr_id : 'ComfyUI-GGUF' ,
471
+ ver : '1.1.4' ,
472
+ aux_id : undefined
473
+ } )
474
+ expect ( store . installedPacks [ 'ComfyUI-Manager' ] ) . toEqual ( {
475
+ enabled : true ,
476
+ cnr_id : 'ComfyUI-Manager' ,
477
+ ver : '2.0.0' ,
478
+ aux_id : undefined
479
+ } )
480
+
481
+ // Version suffixed keys should not exist
482
+ expect ( store . installedPacks [ 'ComfyUI-GGUF@1_1_4' ] ) . toBeUndefined ( )
483
+ } )
484
+
485
+ it ( 'handles duplicate keys after normalization' , async ( ) => {
486
+ const mockPacks = {
487
+ 'test-pack' : {
488
+ enabled : true ,
489
+ cnr_id : 'test-pack' ,
490
+ ver : '1.0.0' ,
491
+ aux_id : undefined
492
+ } ,
493
+ 'test-pack@1_1_0' : {
494
+ enabled : false ,
495
+ cnr_id : 'test-pack' ,
496
+ ver : '1.1.0' ,
497
+ aux_id : undefined
498
+ }
499
+ }
500
+
501
+ ; ( mockManagerService . listInstalledPacks as any ) . mockResolvedValue (
502
+ mockPacks
503
+ )
504
+
505
+ const store = useComfyManagerStore ( )
506
+ await store . refreshInstalledList ( )
507
+
508
+ // The normalized key should exist (last one wins with mapKeys)
509
+ expect ( store . installedPacks [ 'test-pack' ] ) . toBeDefined ( )
510
+ expect ( store . installedPacks [ 'test-pack' ] . ver ) . toBe ( '1.1.0' )
511
+ } )
512
+
513
+ it ( 'preserves version information for disabled packs' , async ( ) => {
514
+ const mockPacks = {
515
+ 'disabled-pack@2_0_0' : {
516
+ enabled : false ,
517
+ cnr_id : 'disabled-pack' ,
518
+ ver : '2.0.0' ,
519
+ aux_id : undefined
520
+ }
521
+ }
522
+
523
+ ; ( mockManagerService . listInstalledPacks as any ) . mockResolvedValue (
524
+ mockPacks
525
+ )
526
+
527
+ const store = useComfyManagerStore ( )
528
+ await store . refreshInstalledList ( )
529
+
530
+ // Pack should be accessible by base name with version preserved
531
+ expect ( store . getInstalledPackVersion ( 'disabled-pack' ) ) . toBe ( '2.0.0' )
532
+ expect ( store . isPackInstalled ( 'disabled-pack' ) ) . toBe ( true )
533
+ } )
534
+ } )
442
535
} )
0 commit comments