@@ -30,6 +30,7 @@ import {
3030} from '../types' ;
3131import { ApiSettings } from '../types/internal' ;
3232import { Task } from '../requests/request' ;
33+ import { ChromeAdapter } from './chrome-adapter' ;
3334
3435use ( sinonChai ) ;
3536use ( chaiAsPromised ) ;
@@ -69,7 +70,8 @@ describe('generateContent()', () => {
6970 const result = await generateContent (
7071 fakeApiSettings ,
7172 'model' ,
72- fakeRequestParams
73+ fakeRequestParams ,
74+ new ChromeAdapter ( )
7375 ) ;
7476 expect ( result . response . text ( ) ) . to . include ( 'Mountain View, California' ) ;
7577 expect ( makeRequestStub ) . to . be . calledWith (
@@ -91,7 +93,8 @@ describe('generateContent()', () => {
9193 const result = await generateContent (
9294 fakeApiSettings ,
9395 'model' ,
94- fakeRequestParams
96+ fakeRequestParams ,
97+ new ChromeAdapter ( )
9598 ) ;
9699 expect ( result . response . text ( ) ) . to . include ( 'Use Freshly Ground Coffee' ) ;
97100 expect ( result . response . text ( ) ) . to . include ( '30 minutes of brewing' ) ;
@@ -113,7 +116,8 @@ describe('generateContent()', () => {
113116 const result = await generateContent (
114117 fakeApiSettings ,
115118 'model' ,
116- fakeRequestParams
119+ fakeRequestParams ,
120+ new ChromeAdapter ( )
117121 ) ;
118122 expect ( result . response . usageMetadata ?. totalTokenCount ) . to . equal ( 1913 ) ;
119123 expect ( result . response . usageMetadata ?. candidatesTokenCount ) . to . equal ( 76 ) ;
@@ -145,7 +149,8 @@ describe('generateContent()', () => {
145149 const result = await generateContent (
146150 fakeApiSettings ,
147151 'model' ,
148- fakeRequestParams
152+ fakeRequestParams ,
153+ new ChromeAdapter ( )
149154 ) ;
150155 expect ( result . response . text ( ) ) . to . include (
151156 'Some information cited from an external source'
@@ -171,7 +176,8 @@ describe('generateContent()', () => {
171176 const result = await generateContent (
172177 fakeApiSettings ,
173178 'model' ,
174- fakeRequestParams
179+ fakeRequestParams ,
180+ new ChromeAdapter ( )
175181 ) ;
176182 expect ( result . response . text ) . to . throw ( 'SAFETY' ) ;
177183 expect ( makeRequestStub ) . to . be . calledWith (
@@ -192,7 +198,8 @@ describe('generateContent()', () => {
192198 const result = await generateContent (
193199 fakeApiSettings ,
194200 'model' ,
195- fakeRequestParams
201+ fakeRequestParams ,
202+ new ChromeAdapter ( )
196203 ) ;
197204 expect ( result . response . text ) . to . throw ( 'SAFETY' ) ;
198205 expect ( makeRequestStub ) . to . be . calledWith (
@@ -211,7 +218,8 @@ describe('generateContent()', () => {
211218 const result = await generateContent (
212219 fakeApiSettings ,
213220 'model' ,
214- fakeRequestParams
221+ fakeRequestParams ,
222+ new ChromeAdapter ( )
215223 ) ;
216224 expect ( result . response . text ( ) ) . to . equal ( '' ) ;
217225 expect ( makeRequestStub ) . to . be . calledWith (
@@ -232,7 +240,8 @@ describe('generateContent()', () => {
232240 const result = await generateContent (
233241 fakeApiSettings ,
234242 'model' ,
235- fakeRequestParams
243+ fakeRequestParams ,
244+ new ChromeAdapter ( )
236245 ) ;
237246 expect ( result . response . text ( ) ) . to . include ( 'Some text' ) ;
238247 expect ( makeRequestStub ) . to . be . calledWith (
@@ -251,7 +260,12 @@ describe('generateContent()', () => {
251260 json : mockResponse . json
252261 } as Response ) ;
253262 await expect (
254- generateContent ( fakeApiSettings , 'model' , fakeRequestParams )
263+ generateContent (
264+ fakeApiSettings ,
265+ 'model' ,
266+ fakeRequestParams ,
267+ new ChromeAdapter ( )
268+ )
255269 ) . to . be . rejectedWith ( / 4 0 0 .* i n v a l i d a r g u m e n t / ) ;
256270 expect ( mockFetch ) . to . be . called ;
257271 } ) ;
@@ -265,10 +279,36 @@ describe('generateContent()', () => {
265279 json : mockResponse . json
266280 } as Response ) ;
267281 await expect (
268- generateContent ( fakeApiSettings , 'model' , fakeRequestParams )
282+ generateContent (
283+ fakeApiSettings ,
284+ 'model' ,
285+ fakeRequestParams ,
286+ new ChromeAdapter ( )
287+ )
269288 ) . to . be . rejectedWith (
270289 / 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 /
271290 ) ;
272291 expect ( mockFetch ) . to . be . called ;
273292 } ) ;
293+ it ( 'on-device' , async ( ) => {
294+ const expectedText = 'hi' ;
295+ const chromeAdapter = new ChromeAdapter ( ) ;
296+ const mockIsAvailable = stub ( chromeAdapter , 'isAvailable' ) . resolves ( true ) ;
297+ const mockGenerateContent = stub (
298+ chromeAdapter ,
299+ 'generateContentOnDevice'
300+ ) . resolves ( {
301+ text : ( ) => expectedText ,
302+ functionCalls : ( ) => undefined
303+ } ) ;
304+ const result = await generateContent (
305+ fakeApiSettings ,
306+ 'model' ,
307+ fakeRequestParams ,
308+ chromeAdapter
309+ ) ;
310+ expect ( result . response . text ( ) ) . to . equal ( expectedText ) ;
311+ expect ( mockIsAvailable ) . to . be . called ;
312+ expect ( mockGenerateContent ) . to . be . calledWith ( fakeRequestParams ) ;
313+ } ) ;
274314} ) ;
0 commit comments