11import { beforeEach , describe , expect , it } from "vitest" ;
22import {
33 type MessagingMode ,
4+ migrateMessagingModeState ,
45 useMessagingModeStore ,
56} from "./messagingModeStore" ;
67
@@ -28,12 +29,15 @@ describe("messagingModeStore", () => {
2829 ) ;
2930 } ) ;
3031
31- it ( "falls back to the global default when a task has no override" , ( ) => {
32- useMessagingModeStore . getState ( ) . setDefaultMode ( "queue" ) ;
33- expect ( useMessagingModeStore . getState ( ) . getEffectiveMode ( "t1" ) ) . toBe (
34- "queue" ,
35- ) ;
36- } ) ;
32+ it . each ( [ "queue" , "steer" ] as const ) (
33+ "falls back to the global default (%s) when a task has no override" ,
34+ ( mode ) => {
35+ useMessagingModeStore . getState ( ) . setDefaultMode ( mode ) ;
36+ expect ( useMessagingModeStore . getState ( ) . getEffectiveMode ( "t1" ) ) . toBe (
37+ mode ,
38+ ) ;
39+ } ,
40+ ) ;
3741
3842 it ( "prefers a per-task override over the global default" , ( ) => {
3943 useMessagingModeStore . getState ( ) . setMode ( "t1" , "queue" ) ;
@@ -53,6 +57,8 @@ describe("messagingModeStore", () => {
5357 ) ;
5458 } ) ;
5559
60+ // Exercises the migration through the persisted store's wired `migrate`
61+ // option, complementing the direct unit tests below.
5662 describe ( "migration" , ( ) => {
5763 it . each ( [
5864 {
@@ -91,3 +97,27 @@ describe("messagingModeStore", () => {
9197 } ) ;
9298 } ) ;
9399} ) ;
100+
101+ describe ( "migrateMessagingModeState" , ( ) => {
102+ it ( "moves v0 installs to steer while keeping per-task overrides" , ( ) => {
103+ const migrated = migrateMessagingModeState (
104+ { modesByTaskId : { t1 : "queue" } , defaultMode : "queue" } ,
105+ 0 ,
106+ ) ;
107+ expect ( migrated ) . toEqual ( {
108+ modesByTaskId : { t1 : "queue" } ,
109+ defaultMode : "steer" ,
110+ } ) ;
111+ } ) ;
112+
113+ it ( "leaves already-migrated state untouched" , ( ) => {
114+ const state = { modesByTaskId : { } , defaultMode : "queue" as const } ;
115+ expect ( migrateMessagingModeState ( state , 1 ) ) . toEqual ( state ) ;
116+ } ) ;
117+
118+ it ( "tolerates missing persisted state" , ( ) => {
119+ expect ( migrateMessagingModeState ( undefined , 0 ) ) . toEqual ( {
120+ defaultMode : "steer" ,
121+ } ) ;
122+ } ) ;
123+ } ) ;
0 commit comments