@@ -18,11 +18,11 @@ const ALL_WITH_AUTO: readonly ModelRef[] = [AUTO, OPUS, HAIKU];
1818
1919function makeDeps ( overrides : Partial < ModelSelectionDeps > ) : ModelSelectionDeps {
2020 return {
21- getSavedId : ( ) => '' ,
22- fetchById : async ( ) => [ ] ,
23- fetchAll : async ( ) => ALL_MODELS ,
24- promptUser : async ( ) => undefined ,
25- saveId : async ( ) => { /* noop */ } ,
21+ getSavedId : ( ) : string => '' ,
22+ fetchById : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return [ ] ; } ,
23+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return ALL_MODELS ; } ,
24+ promptUser : async ( ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; return undefined ; } ,
25+ saveId : async ( ) : Promise < void > => { await Promise . resolve ( ) ; } ,
2626 ...overrides
2727 } ;
2828}
@@ -31,8 +31,8 @@ suite('Model Selection (resolveModel)', () => {
3131
3232 test ( 'returns saved model when setting matches' , async ( ) => {
3333 const deps = makeDeps ( {
34- getSavedId : ( ) => HAIKU . id ,
35- fetchById : async ( id ) => id === HAIKU . id ? [ HAIKU ] : [ ]
34+ getSavedId : ( ) : string => HAIKU . id ,
35+ fetchById : async ( id : string ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return id === HAIKU . id ? [ HAIKU ] : [ ] ; }
3636 } ) ;
3737
3838 const result = await resolveModel ( deps ) ;
@@ -45,9 +45,9 @@ suite('Model Selection (resolveModel)', () => {
4545 test ( 'does NOT call fetchAll when saved model found' , async ( ) => {
4646 let fetchAllCalled = false ;
4747 const deps = makeDeps ( {
48- getSavedId : ( ) => HAIKU . id ,
49- fetchById : async ( ) => [ HAIKU ] ,
50- fetchAll : async ( ) => { fetchAllCalled = true ; return ALL_MODELS ; }
48+ getSavedId : ( ) : string => HAIKU . id ,
49+ fetchById : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return [ HAIKU ] ; } ,
50+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; fetchAllCalled = true ; return ALL_MODELS ; }
5151 } ) ;
5252
5353 await resolveModel ( deps ) ;
@@ -58,9 +58,9 @@ suite('Model Selection (resolveModel)', () => {
5858 test ( 'does NOT call promptUser when saved model found' , async ( ) => {
5959 let promptCalled = false ;
6060 const deps = makeDeps ( {
61- getSavedId : ( ) => HAIKU . id ,
62- fetchById : async ( ) => [ HAIKU ] ,
63- promptUser : async ( ) => { promptCalled = true ; return HAIKU ; }
61+ getSavedId : ( ) : string => HAIKU . id ,
62+ fetchById : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return [ HAIKU ] ; } ,
63+ promptUser : async ( ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; promptCalled = true ; return HAIKU ; }
6464 } ) ;
6565
6666 await resolveModel ( deps ) ;
@@ -71,10 +71,10 @@ suite('Model Selection (resolveModel)', () => {
7171 test ( 'prompts user when no saved setting' , async ( ) => {
7272 let promptedModels : readonly ModelRef [ ] = [ ] ;
7373 const deps = makeDeps ( {
74- getSavedId : ( ) => '' ,
75- fetchAll : async ( ) => ALL_MODELS ,
76- promptUser : async ( models ) => { promptedModels = models ; return HAIKU ; } ,
77- saveId : async ( ) => { /* noop */ }
74+ getSavedId : ( ) : string => '' ,
75+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return ALL_MODELS ; } ,
76+ promptUser : async ( models : readonly ModelRef [ ] ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; promptedModels = models ; return HAIKU ; } ,
77+ saveId : async ( ) : Promise < void > => { await Promise . resolve ( ) ; }
7878 } ) ;
7979
8080 const result = await resolveModel ( deps ) ;
@@ -87,10 +87,10 @@ suite('Model Selection (resolveModel)', () => {
8787 test ( 'saves picked model ID to settings' , async ( ) => {
8888 let savedId = '' ;
8989 const deps = makeDeps ( {
90- getSavedId : ( ) => '' ,
91- fetchAll : async ( ) => ALL_MODELS ,
92- promptUser : async ( ) => HAIKU ,
93- saveId : async ( id ) => { savedId = id ; }
90+ getSavedId : ( ) : string => '' ,
91+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return ALL_MODELS ; } ,
92+ promptUser : async ( ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; return HAIKU ; } ,
93+ saveId : async ( id : string ) : Promise < void > => { await Promise . resolve ( ) ; savedId = id ; }
9494 } ) ;
9595
9696 await resolveModel ( deps ) ;
@@ -100,8 +100,8 @@ suite('Model Selection (resolveModel)', () => {
100100
101101 test ( 'returns error when no models available' , async ( ) => {
102102 const deps = makeDeps ( {
103- getSavedId : ( ) => '' ,
104- fetchAll : async ( ) => [ ]
103+ getSavedId : ( ) : string => '' ,
104+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return [ ] ; }
105105 } ) ;
106106
107107 const result = await resolveModel ( deps ) ;
@@ -111,9 +111,9 @@ suite('Model Selection (resolveModel)', () => {
111111
112112 test ( 'returns error when user cancels quickpick' , async ( ) => {
113113 const deps = makeDeps ( {
114- getSavedId : ( ) => '' ,
115- fetchAll : async ( ) => ALL_MODELS ,
116- promptUser : async ( ) => undefined
114+ getSavedId : ( ) : string => '' ,
115+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return ALL_MODELS ; } ,
116+ promptUser : async ( ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; return undefined ; }
117117 } ) ;
118118
119119 const result = await resolveModel ( deps ) ;
@@ -124,11 +124,11 @@ suite('Model Selection (resolveModel)', () => {
124124 test ( 'falls back to prompt when saved model ID not found' , async ( ) => {
125125 let promptCalled = false ;
126126 const deps = makeDeps ( {
127- getSavedId : ( ) => 'nonexistent-model' ,
128- fetchById : async ( ) => [ ] ,
129- fetchAll : async ( ) => ALL_MODELS ,
130- promptUser : async ( ) => { promptCalled = true ; return HAIKU ; } ,
131- saveId : async ( ) => { /* noop */ }
127+ getSavedId : ( ) : string => 'nonexistent-model' ,
128+ fetchById : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return [ ] ; } ,
129+ fetchAll : async ( ) : Promise < readonly ModelRef [ ] > => { await Promise . resolve ( ) ; return ALL_MODELS ; } ,
130+ promptUser : async ( ) : Promise < ModelRef | undefined > => { await Promise . resolve ( ) ; promptCalled = true ; return HAIKU ; } ,
131+ saveId : async ( ) : Promise < void > => { await Promise . resolve ( ) ; }
132132 } ) ;
133133
134134 const result = await resolveModel ( deps ) ;
@@ -143,14 +143,16 @@ suite('pickConcreteModel (auto resolution)', () => {
143143
144144 test ( 'returns specific model when preferredId is not auto' , ( ) => {
145145 const result = pickConcreteModel ( { models : ALL_MODELS , preferredId : HAIKU . id } ) ;
146- assert . strictEqual ( result ?. id , HAIKU . id ) ;
147- assert . strictEqual ( result ?. name , HAIKU . name ) ;
146+ assert . ok ( result , 'Expected a model to be returned' ) ;
147+ assert . strictEqual ( result . id , HAIKU . id ) ;
148+ assert . strictEqual ( result . name , HAIKU . name ) ;
148149 } ) ;
149150
150151 test ( 'skips auto and returns first concrete model' , ( ) => {
151152 const result = pickConcreteModel ( { models : ALL_WITH_AUTO , preferredId : AUTO_MODEL_ID } ) ;
152- assert . strictEqual ( result ?. id , OPUS . id , 'Must skip auto and pick first concrete model' ) ;
153- assert . notStrictEqual ( result ?. id , AUTO_MODEL_ID , 'Must NOT return auto model' ) ;
153+ assert . ok ( result , 'Expected a concrete model' ) ;
154+ assert . strictEqual ( result . id , OPUS . id , 'Must skip auto and pick first concrete model' ) ;
155+ assert . notStrictEqual ( result . id , AUTO_MODEL_ID , 'Must NOT return auto model' ) ;
154156 } ) ;
155157
156158 test ( 'returns undefined when specific model not in list' , ( ) => {
@@ -170,6 +172,7 @@ suite('pickConcreteModel (auto resolution)', () => {
170172
171173 test ( 'auto with only concrete models picks first' , ( ) => {
172174 const result = pickConcreteModel ( { models : ALL_MODELS , preferredId : AUTO_MODEL_ID } ) ;
173- assert . strictEqual ( result ?. id , OPUS . id , 'Should pick first model when no auto in list' ) ;
175+ assert . ok ( result , 'Expected a model' ) ;
176+ assert . strictEqual ( result . id , OPUS . id , 'Should pick first model when no auto in list' ) ;
174177 } ) ;
175178} ) ;
0 commit comments