@@ -6,14 +6,9 @@ import {
6
6
HumanMessage ,
7
7
HumanMessageChunk ,
8
8
MessageContentComplex ,
9
- MessageContentText ,
10
9
SystemMessage ,
11
10
ToolMessage ,
12
11
} from "@langchain/core/messages" ;
13
- import { StructuredToolInterface } from "@langchain/core/tools" ;
14
- import { FakeTool } from "@langchain/core/utils/testing" ;
15
- // eslint-disable-next-line import/no-extraneous-dependencies
16
- import { z } from "zod" ;
17
12
18
13
import { ChatGoogleBase , ChatGoogleBaseInput } from "../chat_models.js" ;
19
14
import { authOptions , MockClient , MockClientAuthInfo , mockId } from "./mock.js" ;
@@ -213,13 +208,7 @@ describe("Mock ChatGoogle", () => {
213
208
expect ( result . _getType ( ) ) . toEqual ( "ai" ) ;
214
209
const aiMessage = result as AIMessage ;
215
210
expect ( aiMessage . content ) . toBeDefined ( ) ;
216
- expect ( aiMessage . content . length ) . toBeGreaterThanOrEqual ( 1 ) ;
217
- expect ( aiMessage . content [ 0 ] ) . toHaveProperty ( "type" ) ;
218
-
219
- const complexContent = aiMessage . content [ 0 ] as MessageContentComplex ;
220
- expect ( complexContent . type ) . toEqual ( "text" ) ;
221
- const content = complexContent as MessageContentText ;
222
- expect ( content . text ) . toEqual ( "T" ) ;
211
+ expect ( aiMessage . content ) . toBe ( "T" ) ;
223
212
} ) ;
224
213
225
214
test ( "1. Invoke response format" , async ( ) => {
@@ -244,13 +233,7 @@ describe("Mock ChatGoogle", () => {
244
233
expect ( result . _getType ( ) ) . toEqual ( "ai" ) ;
245
234
const aiMessage = result as AIMessage ;
246
235
expect ( aiMessage . content ) . toBeDefined ( ) ;
247
- expect ( aiMessage . content . length ) . toBeGreaterThanOrEqual ( 1 ) ;
248
- expect ( aiMessage . content [ 0 ] ) . toHaveProperty ( "type" ) ;
249
-
250
- const complexContent = aiMessage . content [ 0 ] as MessageContentComplex ;
251
- expect ( complexContent . type ) . toEqual ( "text" ) ;
252
- const content = complexContent as MessageContentText ;
253
- expect ( content . text ) . toEqual ( "T" ) ;
236
+ expect ( aiMessage . content ) . toBe ( "T" ) ;
254
237
} ) ;
255
238
256
239
// SystemMessages will be turned into the human request with the prompt
@@ -327,13 +310,7 @@ describe("Mock ChatGoogle", () => {
327
310
expect ( result . _getType ( ) ) . toEqual ( "ai" ) ;
328
311
const aiMessage = result as AIMessage ;
329
312
expect ( aiMessage . content ) . toBeDefined ( ) ;
330
- expect ( aiMessage . content . length ) . toBeGreaterThanOrEqual ( 1 ) ;
331
- expect ( aiMessage . content [ 0 ] ) . toHaveProperty ( "type" ) ;
332
-
333
- const complexContent = aiMessage . content [ 0 ] as MessageContentComplex ;
334
- expect ( complexContent . type ) . toEqual ( "text" ) ;
335
- const content = complexContent as MessageContentText ;
336
- expect ( content . text ) . toEqual ( "T" ) ;
313
+ expect ( aiMessage . content ) . toBe ( "T" ) ;
337
314
}
338
315
339
316
expect ( caught ) . toEqual ( true ) ;
@@ -386,10 +363,7 @@ describe("Mock ChatGoogle", () => {
386
363
expect ( parts [ 1 ] . inlineData ) . toHaveProperty ( "mimeType" ) ;
387
364
expect ( parts [ 1 ] . inlineData ) . toHaveProperty ( "data" ) ;
388
365
389
- expect ( result . content [ 0 ] ) . toHaveProperty ( "text" ) ;
390
- expect ( ( result . content [ 0 ] as MessageContentText ) . text ) . toEqual (
391
- "A blue square."
392
- ) ;
366
+ expect ( result . content ) . toBe ( "A blue square." ) ;
393
367
} ) ;
394
368
395
369
test ( "4. Functions Bind - Gemini format request" , async ( ) => {
@@ -546,78 +520,6 @@ describe("Mock ChatGoogle", () => {
546
520
expect ( parameters . required [ 0 ] ) . toBe ( "testName" ) ;
547
521
} ) ;
548
522
549
- test ( "4. Functions - zod format request" , async ( ) => {
550
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
551
- const record : Record < string , any > = { } ;
552
- const projectId = mockId ( ) ;
553
- const authOptions : MockClientAuthInfo = {
554
- record,
555
- projectId,
556
- resultFile : "chat-4-mock.json" ,
557
- } ;
558
-
559
- const zodSchema = z . object ( {
560
- testName : z . string ( ) . describe ( "The name of the test that should be run." ) ,
561
- } ) ;
562
- const tools : StructuredToolInterface [ ] = [
563
- new FakeTool ( {
564
- name : "test" ,
565
- description :
566
- "Run a test with a specific name and get if it passed or failed" ,
567
- schema : zodSchema ,
568
- } ) ,
569
- ] ;
570
-
571
- const model = new ChatGoogle ( {
572
- authOptions,
573
- } ) . bind ( {
574
- tools,
575
- } ) ;
576
-
577
- const result = await model . invoke ( "What?" ) ;
578
-
579
- const toolsResult = record ?. opts ?. data ?. tools ;
580
- console . log ( "toolsResult" , JSON . stringify ( toolsResult , null , 1 ) ) ;
581
- expect ( toolsResult ) . toBeDefined ( ) ;
582
- expect ( Array . isArray ( toolsResult ) ) . toBeTruthy ( ) ;
583
- expect ( toolsResult ) . toHaveLength ( 1 ) ;
584
-
585
- const toolResult = toolsResult [ 0 ] ;
586
- expect ( toolResult ) . toBeDefined ( ) ;
587
- expect ( toolResult ) . toHaveProperty ( "functionDeclarations" ) ;
588
- expect ( Array . isArray ( toolResult . functionDeclarations ) ) . toBeTruthy ( ) ;
589
- expect ( toolResult . functionDeclarations ) . toHaveLength ( 1 ) ;
590
-
591
- const functionDeclaration = toolResult . functionDeclarations [ 0 ] ;
592
- expect ( functionDeclaration . name ) . toBe ( "test" ) ;
593
- expect ( functionDeclaration . description ) . toBe (
594
- "Run a test with a specific name and get if it passed or failed"
595
- ) ;
596
- expect ( functionDeclaration . parameters ) . toBeDefined ( ) ;
597
- expect ( typeof functionDeclaration . parameters ) . toBe ( "object" ) ;
598
-
599
- const parameters = functionDeclaration ?. parameters ;
600
- expect ( parameters . type ) . toBe ( "object" ) ;
601
- expect ( parameters ) . toHaveProperty ( "properties" ) ;
602
- expect ( parameters ) . not . toHaveProperty ( "additionalProperties" ) ;
603
- expect ( parameters ) . not . toHaveProperty ( "$schema" ) ;
604
- expect ( typeof parameters . properties ) . toBe ( "object" ) ;
605
-
606
- expect ( parameters . properties . testName ) . toBeDefined ( ) ;
607
- expect ( typeof parameters . properties . testName ) . toBe ( "object" ) ;
608
- expect ( parameters . properties . testName . type ) . toBe ( "string" ) ;
609
- expect ( parameters . properties . testName . description ) . toBe (
610
- "The name of the test that should be run."
611
- ) ;
612
-
613
- expect ( parameters . required ) . toBeDefined ( ) ;
614
- expect ( Array . isArray ( parameters . required ) ) . toBeTruthy ( ) ;
615
- expect ( parameters . required ) . toHaveLength ( 1 ) ;
616
- expect ( parameters . required [ 0 ] ) . toBe ( "testName" ) ;
617
-
618
- console . log ( result ) ;
619
- } ) ;
620
-
621
523
test ( "4. Functions - results" , async ( ) => {
622
524
// eslint-disable-next-line @typescript-eslint/no-explicit-any
623
525
const record : Record < string , any > = { } ;
@@ -660,8 +562,7 @@ describe("Mock ChatGoogle", () => {
660
562
661
563
console . log ( JSON . stringify ( result , null , 1 ) ) ;
662
564
expect ( result ) . toHaveProperty ( "content" ) ;
663
- expect ( Array . isArray ( result . content ) ) . toBeTruthy ( ) ;
664
- expect ( result . content ) . toHaveLength ( 0 ) ;
565
+ expect ( result . content ) . toBe ( "" ) ;
665
566
const args = result ?. lc_kwargs ?. additional_kwargs ;
666
567
expect ( args ) . toBeDefined ( ) ;
667
568
expect ( args ) . toHaveProperty ( "tool_calls" ) ;
0 commit comments