@@ -11,72 +11,76 @@ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
1111
1212describe ( "generateDefaultValue" , ( ) => {
1313 test ( "generates default string" , ( ) => {
14- expect ( generateDefaultValue ( { type : "string" , required : true } ) ) . toBe ( "" ) ;
14+ const parentSchema = { type : "object" as const , required : [ "testProp" ] } ;
15+ expect ( generateDefaultValue ( { type : "string" } , "testProp" , parentSchema ) ) . toBe ( "" ) ;
1516 } ) ;
1617
1718 test ( "generates default number" , ( ) => {
18- expect ( generateDefaultValue ( { type : "number" , required : true } ) ) . toBe ( 0 ) ;
19+ const parentSchema = { type : "object" as const , required : [ "testProp" ] } ;
20+ expect ( generateDefaultValue ( { type : "number" } , "testProp" , parentSchema ) ) . toBe ( 0 ) ;
1921 } ) ;
2022
2123 test ( "generates default integer" , ( ) => {
22- expect ( generateDefaultValue ( { type : "integer" , required : true } ) ) . toBe ( 0 ) ;
24+ const parentSchema = { type : "object" as const , required : [ "testProp" ] } ;
25+ expect ( generateDefaultValue ( { type : "integer" } , "testProp" , parentSchema ) ) . toBe ( 0 ) ;
2326 } ) ;
2427
2528 test ( "generates default boolean" , ( ) => {
26- expect ( generateDefaultValue ( { type : "boolean" , required : true } ) ) . toBe (
29+ const parentSchema = { type : "object" as const , required : [ "testProp" ] } ;
30+ expect ( generateDefaultValue ( { type : "boolean" } , "testProp" , parentSchema ) ) . toBe (
2731 false ,
2832 ) ;
2933 } ) ;
3034
3135 test ( "generates default array" , ( ) => {
32- expect ( generateDefaultValue ( { type : "array" , required : true } ) ) . toEqual ( [ ] ) ;
36+ expect ( generateDefaultValue ( { type : "array" } ) ) . toEqual ( [ ] ) ;
3337 } ) ;
3438
3539 test ( "generates default empty object" , ( ) => {
36- expect ( generateDefaultValue ( { type : "object" , required : true } ) ) . toEqual (
40+ expect ( generateDefaultValue ( { type : "object" } ) ) . toEqual (
3741 { } ,
3842 ) ;
3943 } ) ;
4044
4145 test ( "generates default null for unknown types" , ( ) => {
4246 // @ts -expect-error Testing with invalid type
43- expect ( generateDefaultValue ( { type : "unknown" , required : true } ) ) . toBe (
44- null ,
47+ expect ( generateDefaultValue ( { type : "unknown" } ) ) . toBe (
48+ undefined ,
4549 ) ;
4650 } ) ;
4751
4852 test ( "generates empty array for non-required array" , ( ) => {
49- expect ( generateDefaultValue ( { type : "array" , required : false } ) ) . toEqual (
53+ expect ( generateDefaultValue ( { type : "array" } ) ) . toEqual (
5054 [ ] ,
5155 ) ;
5256 } ) ;
5357
5458 test ( "generates empty object for non-required object" , ( ) => {
55- expect ( generateDefaultValue ( { type : "object" , required : false } ) ) . toEqual (
59+ expect ( generateDefaultValue ( { type : "object" } ) ) . toEqual (
5660 { } ,
5761 ) ;
5862 } ) ;
5963
60- test ( "generates null for non-required primitive types" , ( ) => {
61- expect ( generateDefaultValue ( { type : "string" , required : false } ) ) . toBe (
64+ test ( "generates undefined for non-required primitive types" , ( ) => {
65+ expect ( generateDefaultValue ( { type : "string" } ) ) . toBe (
6266 undefined ,
6367 ) ;
64- expect ( generateDefaultValue ( { type : "number" , required : false } ) ) . toBe (
68+ expect ( generateDefaultValue ( { type : "number" } ) ) . toBe (
6569 undefined ,
6670 ) ;
67- expect ( generateDefaultValue ( { type : "boolean" , required : false } ) ) . toBe (
71+ expect ( generateDefaultValue ( { type : "boolean" } ) ) . toBe (
6872 undefined ,
6973 ) ;
7074 } ) ;
7175
7276 test ( "generates object with properties" , ( ) => {
7377 const schema : JsonSchemaType = {
7478 type : "object" ,
75- required : true ,
79+ required : [ "name" , "age" , "isActive" ] ,
7680 properties : {
77- name : { type : "string" , required : true } ,
78- age : { type : "number" , required : true } ,
79- isActive : { type : "boolean" , required : true } ,
81+ name : { type : "string" } ,
82+ age : { type : "number" } ,
83+ isActive : { type : "boolean" } ,
8084 } ,
8185 } ;
8286 expect ( generateDefaultValue ( schema ) ) . toEqual ( {
@@ -89,18 +93,18 @@ describe("generateDefaultValue", () => {
8993 test ( "handles nested objects" , ( ) => {
9094 const schema : JsonSchemaType = {
9195 type : "object" ,
92- required : true ,
96+ required : [ "user" ] ,
9397 properties : {
9498 user : {
9599 type : "object" ,
96- required : true ,
100+ required : [ "name" , "address" ] ,
97101 properties : {
98- name : { type : "string" , required : true } ,
102+ name : { type : "string" } ,
99103 address : {
100104 type : "object" ,
101- required : true ,
105+ required : [ "city" ] ,
102106 properties : {
103- city : { type : "string" , required : true } ,
107+ city : { type : "string" } ,
104108 } ,
105109 } ,
106110 } ,
0 commit comments