@@ -30,6 +30,7 @@ import {
30
30
} from '../types' ;
31
31
import { ApiSettings } from '../types/internal' ;
32
32
import { Task } from '../requests/request' ;
33
+ import { ChromeAdapter } from './chrome-adapter' ;
33
34
34
35
use ( sinonChai ) ;
35
36
use ( chaiAsPromised ) ;
@@ -70,7 +71,8 @@ describe('generateContent()', () => {
70
71
const result = await generateContent (
71
72
fakeApiSettings ,
72
73
'model' ,
73
- fakeRequestParams
74
+ fakeRequestParams ,
75
+ new ChromeAdapter ( )
74
76
) ;
75
77
expect ( result . response . text ( ) ) . to . include ( 'Mountain View, California' ) ;
76
78
expect ( makeRequestStub ) . to . be . calledWith (
@@ -95,7 +97,8 @@ describe('generateContent()', () => {
95
97
const result = await generateContent (
96
98
fakeApiSettings ,
97
99
'model' ,
98
- fakeRequestParams
100
+ fakeRequestParams ,
101
+ new ChromeAdapter ( )
99
102
) ;
100
103
expect ( result . response . text ( ) ) . to . include ( 'Use Freshly Ground Coffee' ) ;
101
104
expect ( result . response . text ( ) ) . to . include ( '30 minutes of brewing' ) ;
@@ -118,7 +121,8 @@ describe('generateContent()', () => {
118
121
const result = await generateContent (
119
122
fakeApiSettings ,
120
123
'model' ,
121
- fakeRequestParams
124
+ fakeRequestParams ,
125
+ new ChromeAdapter ( )
122
126
) ;
123
127
expect ( result . response . usageMetadata ?. totalTokenCount ) . to . equal ( 1913 ) ;
124
128
expect ( result . response . usageMetadata ?. candidatesTokenCount ) . to . equal ( 76 ) ;
@@ -153,7 +157,8 @@ describe('generateContent()', () => {
153
157
const result = await generateContent (
154
158
fakeApiSettings ,
155
159
'model' ,
156
- fakeRequestParams
160
+ fakeRequestParams ,
161
+ new ChromeAdapter ( )
157
162
) ;
158
163
expect ( result . response . text ( ) ) . to . include (
159
164
'Some information cited from an external source'
@@ -180,7 +185,8 @@ describe('generateContent()', () => {
180
185
const result = await generateContent (
181
186
fakeApiSettings ,
182
187
'model' ,
183
- fakeRequestParams
188
+ fakeRequestParams ,
189
+ new ChromeAdapter ( )
184
190
) ;
185
191
expect ( result . response . text ) . to . throw ( 'SAFETY' ) ;
186
192
expect ( makeRequestStub ) . to . be . calledWith (
@@ -202,7 +208,8 @@ describe('generateContent()', () => {
202
208
const result = await generateContent (
203
209
fakeApiSettings ,
204
210
'model' ,
205
- fakeRequestParams
211
+ fakeRequestParams ,
212
+ new ChromeAdapter ( )
206
213
) ;
207
214
expect ( result . response . text ) . to . throw ( 'SAFETY' ) ;
208
215
expect ( makeRequestStub ) . to . be . calledWith (
@@ -224,7 +231,8 @@ describe('generateContent()', () => {
224
231
const result = await generateContent (
225
232
fakeApiSettings ,
226
233
'model' ,
227
- fakeRequestParams
234
+ fakeRequestParams ,
235
+ new ChromeAdapter ( )
228
236
) ;
229
237
expect ( result . response . text ( ) ) . to . equal ( '' ) ;
230
238
expect ( makeRequestStub ) . to . be . calledWith (
@@ -246,7 +254,8 @@ describe('generateContent()', () => {
246
254
const result = await generateContent (
247
255
fakeApiSettings ,
248
256
'model' ,
249
- fakeRequestParams
257
+ fakeRequestParams ,
258
+ new ChromeAdapter ( )
250
259
) ;
251
260
expect ( result . response . text ( ) ) . to . include ( 'Some text' ) ;
252
261
expect ( makeRequestStub ) . to . be . calledWith (
@@ -268,7 +277,12 @@ describe('generateContent()', () => {
268
277
json : mockResponse . json
269
278
} as Response ) ;
270
279
await expect (
271
- generateContent ( fakeApiSettings , 'model' , fakeRequestParams )
280
+ generateContent (
281
+ fakeApiSettings ,
282
+ 'model' ,
283
+ fakeRequestParams ,
284
+ new ChromeAdapter ( )
285
+ )
272
286
) . to . be . rejectedWith ( / 4 0 0 .* i n v a l i d a r g u m e n t / ) ;
273
287
expect ( mockFetch ) . to . be . called ;
274
288
} ) ;
@@ -283,10 +297,36 @@ describe('generateContent()', () => {
283
297
json : mockResponse . json
284
298
} as Response ) ;
285
299
await expect (
286
- generateContent ( fakeApiSettings , 'model' , fakeRequestParams )
300
+ generateContent (
301
+ fakeApiSettings ,
302
+ 'model' ,
303
+ fakeRequestParams ,
304
+ new ChromeAdapter ( )
305
+ )
287
306
) . to . be . rejectedWith (
288
307
/ f i r e b a s e v e r t e x a i \. g o o g l e a p i s [ \s \S ] * m y - p r o j e c t [ \s \S ] * a p i - n o t - e n a b l e d /
289
308
) ;
290
309
expect ( mockFetch ) . to . be . called ;
291
310
} ) ;
311
+ it ( 'on-device' , async ( ) => {
312
+ const chromeAdapter = new ChromeAdapter ( ) ;
313
+ const isAvailableStub = stub ( chromeAdapter , 'isAvailable' ) . resolves ( true ) ;
314
+ const mockResponse = getMockResponse (
315
+ 'vertexAI' ,
316
+ 'unary-success-basic-reply-short.json'
317
+ ) ;
318
+ const generateContentStub = stub (
319
+ chromeAdapter ,
320
+ 'generateContentOnDevice'
321
+ ) . resolves ( mockResponse as Response ) ;
322
+ const result = await generateContent (
323
+ fakeApiSettings ,
324
+ 'model' ,
325
+ fakeRequestParams ,
326
+ chromeAdapter
327
+ ) ;
328
+ expect ( result . response . text ( ) ) . to . include ( 'Mountain View, California' ) ;
329
+ expect ( isAvailableStub ) . to . be . called ;
330
+ expect ( generateContentStub ) . to . be . calledWith ( fakeRequestParams ) ;
331
+ } ) ;
292
332
} ) ;
0 commit comments