1- import { describe , it , expect , vi } from ' vitest' ;
2- import { McpServer } from ' @modelcontextprotocol/sdk/server/mcp.js' ;
3- import { registerSimplePrompt } from ' ../prompts/simple.js' ;
4- import { registerArgumentsPrompt } from ' ../prompts/args.js' ;
5- import { registerPromptWithCompletions } from ' ../prompts/completions.js' ;
6- import { registerEmbeddedResourcePrompt } from ' ../prompts/resource.js' ;
1+ import { describe , it , expect , vi } from " vitest" ;
2+ import { McpServer } from " @modelcontextprotocol/sdk/server/mcp.js" ;
3+ import { registerSimplePrompt } from " ../prompts/simple.js" ;
4+ import { registerArgumentsPrompt } from " ../prompts/args.js" ;
5+ import { registerPromptWithCompletions } from " ../prompts/completions.js" ;
6+ import { registerEmbeddedResourcePrompt } from " ../prompts/resource.js" ;
77
88// Helper to capture registered prompt handlers
99function createMockServer ( ) {
@@ -20,160 +20,167 @@ function createMockServer() {
2020 return { mockServer, handlers, configs } ;
2121}
2222
23- describe ( ' Prompts' , ( ) => {
24- describe ( ' simple-prompt' , ( ) => {
25- it ( ' should return fixed message with no arguments' , ( ) => {
23+ describe ( " Prompts" , ( ) => {
24+ describe ( " simple-prompt" , ( ) => {
25+ it ( " should return fixed message with no arguments" , ( ) => {
2626 const { mockServer, handlers } = createMockServer ( ) ;
2727 registerSimplePrompt ( mockServer ) ;
2828
29- const handler = handlers . get ( ' simple-prompt' ) ! ;
29+ const handler = handlers . get ( " simple-prompt" ) ! ;
3030 const result = handler ( ) ;
3131
3232 expect ( result ) . toEqual ( {
3333 messages : [
3434 {
35- role : ' user' ,
35+ role : " user" ,
3636 content : {
37- type : ' text' ,
38- text : ' This is a simple prompt without arguments.' ,
37+ type : " text" ,
38+ text : " This is a simple prompt without arguments." ,
3939 } ,
4040 } ,
4141 ] ,
4242 } ) ;
4343 } ) ;
4444 } ) ;
4545
46- describe ( ' args-prompt' , ( ) => {
47- it ( ' should include city in message' , ( ) => {
46+ describe ( " args-prompt" , ( ) => {
47+ it ( " should include city in message" , ( ) => {
4848 const { mockServer, handlers } = createMockServer ( ) ;
4949 registerArgumentsPrompt ( mockServer ) ;
5050
51- const handler = handlers . get ( ' args-prompt' ) ! ;
52- const result = handler ( { city : ' San Francisco' } ) ;
51+ const handler = handlers . get ( " args-prompt" ) ! ;
52+ const result = handler ( { city : " San Francisco" } ) ;
5353
54- expect ( result . messages [ 0 ] . content . text ) . toBe ( "What's weather in San Francisco?" ) ;
54+ expect ( result . messages [ 0 ] . content . text ) . toBe (
55+ "What's weather in San Francisco?" ,
56+ ) ;
5557 } ) ;
5658
57- it ( ' should include city and state in message' , ( ) => {
59+ it ( " should include city and state in message" , ( ) => {
5860 const { mockServer, handlers } = createMockServer ( ) ;
5961 registerArgumentsPrompt ( mockServer ) ;
6062
61- const handler = handlers . get ( ' args-prompt' ) ! ;
62- const result = handler ( { city : ' San Francisco' , state : ' California' } ) ;
63+ const handler = handlers . get ( " args-prompt" ) ! ;
64+ const result = handler ( { city : " San Francisco" , state : " California" } ) ;
6365
6466 expect ( result . messages [ 0 ] . content . text ) . toBe (
65- "What's weather in San Francisco, California?"
67+ "What's weather in San Francisco, California?" ,
6668 ) ;
6769 } ) ;
6870
69- it ( ' should handle city only (optional state omitted)' , ( ) => {
71+ it ( " should handle city only (optional state omitted)" , ( ) => {
7072 const { mockServer, handlers } = createMockServer ( ) ;
7173 registerArgumentsPrompt ( mockServer ) ;
7274
73- const handler = handlers . get ( ' args-prompt' ) ! ;
74- const result = handler ( { city : ' New York' } ) ;
75+ const handler = handlers . get ( " args-prompt" ) ! ;
76+ const result = handler ( { city : " New York" } ) ;
7577
76- expect ( result . messages [ 0 ] . content . text ) . toBe ( "What's weather in New York?" ) ;
77- expect ( result . messages [ 0 ] . content . text ) . not . toContain ( ',' ) ;
78- expect ( result . messages [ 0 ] . role ) . toBe ( 'user' ) ;
79- expect ( result . messages [ 0 ] . content . type ) . toBe ( 'text' ) ;
78+ expect ( result . messages [ 0 ] . content . text ) . toBe (
79+ "What's weather in New York?" ,
80+ ) ;
81+ expect ( result . messages [ 0 ] . content . text ) . not . toContain ( "," ) ;
82+ expect ( result . messages [ 0 ] . role ) . toBe ( "user" ) ;
83+ expect ( result . messages [ 0 ] . content . type ) . toBe ( "text" ) ;
8084 } ) ;
8185 } ) ;
8286
83- describe ( ' completable-prompt' , ( ) => {
84- it ( ' should generate promotion message with department and name' , ( ) => {
87+ describe ( " completable-prompt" , ( ) => {
88+ it ( " should generate promotion message with department and name" , ( ) => {
8589 const { mockServer, handlers } = createMockServer ( ) ;
8690 registerPromptWithCompletions ( mockServer ) ;
8791
88- const handler = handlers . get ( ' completable-prompt' ) ! ;
89- const result = handler ( { department : ' Engineering' , name : ' Alice' } ) ;
92+ const handler = handlers . get ( " completable-prompt" ) ! ;
93+ const result = handler ( { department : " Engineering" , name : " Alice" } ) ;
9094
9195 expect ( result . messages [ 0 ] . content . text ) . toBe (
92- ' Please promote Alice to the head of the Engineering team.'
96+ " Please promote Alice to the head of the Engineering team." ,
9397 ) ;
9498 } ) ;
9599
96- it ( ' should work with different departments' , ( ) => {
100+ it ( " should work with different departments" , ( ) => {
97101 const { mockServer, handlers } = createMockServer ( ) ;
98102 registerPromptWithCompletions ( mockServer ) ;
99103
100- const handler = handlers . get ( ' completable-prompt' ) ! ;
104+ const handler = handlers . get ( " completable-prompt" ) ! ;
101105
102- const salesResult = handler ( { department : ' Sales' , name : ' David' } ) ;
103- expect ( salesResult . messages [ 0 ] . content . text ) . toContain ( ' Sales' ) ;
104- expect ( salesResult . messages [ 0 ] . content . text ) . toContain ( ' David' ) ;
105- expect ( salesResult . messages [ 0 ] . role ) . toBe ( ' user' ) ;
106+ const salesResult = handler ( { department : " Sales" , name : " David" } ) ;
107+ expect ( salesResult . messages [ 0 ] . content . text ) . toContain ( " Sales" ) ;
108+ expect ( salesResult . messages [ 0 ] . content . text ) . toContain ( " David" ) ;
109+ expect ( salesResult . messages [ 0 ] . role ) . toBe ( " user" ) ;
106110
107- const marketingResult = handler ( { department : 'Marketing' , name : 'Grace' } ) ;
108- expect ( marketingResult . messages [ 0 ] . content . text ) . toContain ( 'Marketing' ) ;
109- expect ( marketingResult . messages [ 0 ] . content . text ) . toContain ( 'Grace' ) ;
111+ const marketingResult = handler ( {
112+ department : "Marketing" ,
113+ name : "Grace" ,
114+ } ) ;
115+ expect ( marketingResult . messages [ 0 ] . content . text ) . toContain ( "Marketing" ) ;
116+ expect ( marketingResult . messages [ 0 ] . content . text ) . toContain ( "Grace" ) ;
110117 } ) ;
111118 } ) ;
112119
113- describe ( ' resource-prompt' , ( ) => {
114- it ( ' should return text resource reference' , ( ) => {
120+ describe ( " resource-prompt" , ( ) => {
121+ it ( " should return text resource reference" , ( ) => {
115122 const { mockServer, handlers } = createMockServer ( ) ;
116123 registerEmbeddedResourcePrompt ( mockServer ) ;
117124
118- const handler = handlers . get ( ' resource-prompt' ) ! ;
119- const result = handler ( { resourceType : ' Text' , resourceId : '1' } ) ;
125+ const handler = handlers . get ( " resource-prompt" ) ! ;
126+ const result = handler ( { resourceType : " Text" , resourceId : "1" } ) ;
120127
121128 expect ( result . messages ) . toHaveLength ( 2 ) ;
122- expect ( result . messages [ 0 ] . content . text ) . toContain ( ' Text' ) ;
123- expect ( result . messages [ 0 ] . content . text ) . toContain ( '1' ) ;
124- expect ( result . messages [ 1 ] . content . type ) . toBe ( ' resource' ) ;
125- expect ( result . messages [ 1 ] . content . resource . uri ) . toContain ( ' text/1' ) ;
129+ expect ( result . messages [ 0 ] . content . text ) . toContain ( " Text" ) ;
130+ expect ( result . messages [ 0 ] . content . text ) . toContain ( "1" ) ;
131+ expect ( result . messages [ 1 ] . content . type ) . toBe ( " resource" ) ;
132+ expect ( result . messages [ 1 ] . content . resource . uri ) . toContain ( " text/1" ) ;
126133 } ) ;
127134
128- it ( ' should return blob resource reference' , ( ) => {
135+ it ( " should return blob resource reference" , ( ) => {
129136 const { mockServer, handlers } = createMockServer ( ) ;
130137 registerEmbeddedResourcePrompt ( mockServer ) ;
131138
132- const handler = handlers . get ( ' resource-prompt' ) ! ;
133- const result = handler ( { resourceType : ' Blob' , resourceId : '5' } ) ;
139+ const handler = handlers . get ( " resource-prompt" ) ! ;
140+ const result = handler ( { resourceType : " Blob" , resourceId : "5" } ) ;
134141
135- expect ( result . messages [ 0 ] . content . text ) . toContain ( ' Blob' ) ;
136- expect ( result . messages [ 1 ] . content . resource . uri ) . toContain ( ' blob/5' ) ;
142+ expect ( result . messages [ 0 ] . content . text ) . toContain ( " Blob" ) ;
143+ expect ( result . messages [ 1 ] . content . resource . uri ) . toContain ( " blob/5" ) ;
137144 } ) ;
138145
139- it ( ' should reject invalid resource type' , ( ) => {
146+ it ( " should reject invalid resource type" , ( ) => {
140147 const { mockServer, handlers } = createMockServer ( ) ;
141148 registerEmbeddedResourcePrompt ( mockServer ) ;
142149
143- const handler = handlers . get ( ' resource-prompt' ) ! ;
144- expect ( ( ) => handler ( { resourceType : 'Invalid' , resourceId : '1' } ) ) . toThrow (
145- 'Invalid resourceType'
146- ) ;
150+ const handler = handlers . get ( " resource-prompt" ) ! ;
151+ expect ( ( ) =>
152+ handler ( { resourceType : "Invalid" , resourceId : "1" } ) ,
153+ ) . toThrow ( "Invalid resourceType" ) ;
147154 } ) ;
148155
149- it ( ' should reject invalid resource ID' , ( ) => {
156+ it ( " should reject invalid resource ID" , ( ) => {
150157 const { mockServer, handlers } = createMockServer ( ) ;
151158 registerEmbeddedResourcePrompt ( mockServer ) ;
152159
153- const handler = handlers . get ( 'resource-prompt' ) ! ;
154- expect ( ( ) => handler ( { resourceType : 'Text' , resourceId : '-1' } ) ) . toThrow (
155- 'Invalid resourceId'
156- ) ;
157- expect ( ( ) => handler ( { resourceType : 'Text' , resourceId : '0' } ) ) . toThrow (
158- 'Invalid resourceId'
160+ const handler = handlers . get ( "resource-prompt" ) ! ;
161+ expect ( ( ) => handler ( { resourceType : "Text" , resourceId : "-1" } ) ) . toThrow (
162+ "Invalid resourceId" ,
159163 ) ;
160- expect ( ( ) => handler ( { resourceType : ' Text' , resourceId : 'abc' } ) ) . toThrow (
161- ' Invalid resourceId'
164+ expect ( ( ) => handler ( { resourceType : " Text" , resourceId : "0" } ) ) . toThrow (
165+ " Invalid resourceId" ,
162166 ) ;
167+ expect ( ( ) =>
168+ handler ( { resourceType : "Text" , resourceId : "abc" } ) ,
169+ ) . toThrow ( "Invalid resourceId" ) ;
163170 } ) ;
164171
165- it ( ' should include both intro text and resource messages' , ( ) => {
172+ it ( " should include both intro text and resource messages" , ( ) => {
166173 const { mockServer, handlers } = createMockServer ( ) ;
167174 registerEmbeddedResourcePrompt ( mockServer ) ;
168175
169- const handler = handlers . get ( ' resource-prompt' ) ! ;
170- const result = handler ( { resourceType : ' Text' , resourceId : '3' } ) ;
176+ const handler = handlers . get ( " resource-prompt" ) ! ;
177+ const result = handler ( { resourceType : " Text" , resourceId : "3" } ) ;
171178
172179 expect ( result . messages ) . toHaveLength ( 2 ) ;
173- expect ( result . messages [ 0 ] . role ) . toBe ( ' user' ) ;
174- expect ( result . messages [ 0 ] . content . type ) . toBe ( ' text' ) ;
175- expect ( result . messages [ 1 ] . role ) . toBe ( ' user' ) ;
176- expect ( result . messages [ 1 ] . content . type ) . toBe ( ' resource' ) ;
180+ expect ( result . messages [ 0 ] . role ) . toBe ( " user" ) ;
181+ expect ( result . messages [ 0 ] . content . type ) . toBe ( " text" ) ;
182+ expect ( result . messages [ 1 ] . role ) . toBe ( " user" ) ;
183+ expect ( result . messages [ 1 ] . content . type ) . toBe ( " resource" ) ;
177184 } ) ;
178185 } ) ;
179186} ) ;
0 commit comments