66 aggregateResources ,
77 aggregateResourceTemplates ,
88} from "../../src/server" ;
9- import type { McpdClient } from "@mozilla-ai/mcpd" ;
9+ import type { McpdClient , ServerHealth } from "@mozilla-ai/mcpd" ;
1010
1111describe ( "Aggregation Functions" , ( ) => {
1212 let mockClient : McpdClient ;
@@ -32,13 +32,13 @@ describe("Aggregation Functions", () => {
3232
3333 describe ( "getHealthyServers" , ( ) => {
3434 it ( "should return only servers with status 'ok'" , async ( ) => {
35- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
35+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
3636 "server1" ,
3737 "server2" ,
3838 "server3" ,
3939 ] ) ;
40- (
41- mockClient . getServerHealth as ReturnType < typeof vi . fn >
40+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
41+ mockClient . getServerHealth ,
4242 ) . mockResolvedValue ( {
4343 server1 : { name : "server1" , status : "ok" } ,
4444 server2 : { name : "server2" , status : "timeout" } ,
@@ -51,12 +51,12 @@ describe("Aggregation Functions", () => {
5151 } ) ;
5252
5353 it ( "should filter out unreachable servers" , async ( ) => {
54- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
54+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
5555 "server1" ,
5656 "server2" ,
5757 ] ) ;
58- (
59- mockClient . getServerHealth as ReturnType < typeof vi . fn >
58+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
59+ mockClient . getServerHealth ,
6060 ) . mockResolvedValue ( {
6161 server1 : { name : "server1" , status : "ok" } ,
6262 server2 : { name : "server2" , status : "unreachable" } ,
@@ -68,12 +68,12 @@ describe("Aggregation Functions", () => {
6868 } ) ;
6969
7070 it ( "should return empty array when no servers are healthy" , async ( ) => {
71- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
71+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
7272 "server1" ,
7373 "server2" ,
7474 ] ) ;
75- (
76- mockClient . getServerHealth as ReturnType < typeof vi . fn >
75+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
76+ mockClient . getServerHealth ,
7777 ) . mockResolvedValue ( {
7878 server1 : { name : "server1" , status : "timeout" } ,
7979 server2 : { name : "server2" , status : "unreachable" } ,
@@ -85,8 +85,8 @@ describe("Aggregation Functions", () => {
8585 } ) ;
8686
8787 it ( "should use provided serverNames if specified" , async ( ) => {
88- (
89- mockClient . getServerHealth as ReturnType < typeof vi . fn >
88+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
89+ mockClient . getServerHealth ,
9090 ) . mockResolvedValue ( {
9191 time : { name : "time" , status : "ok" } ,
9292 fetch : { name : "fetch" , status : "ok" } ,
@@ -101,12 +101,9 @@ describe("Aggregation Functions", () => {
101101
102102 describe ( "aggregateTools" , ( ) => {
103103 it ( "should namespace tool names with server__tool format" , async ( ) => {
104- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
105- "time" ,
106- "fetch" ,
107- ] ) ;
108- (
109- mockClient . getServerHealth as ReturnType < typeof vi . fn >
104+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "time" , "fetch" ] ) ;
105+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
106+ mockClient . getServerHealth ,
110107 ) . mockResolvedValue ( {
111108 time : { name : "time" , status : "ok" } ,
112109 fetch : { name : "fetch" , status : "ok" } ,
@@ -151,12 +148,12 @@ describe("Aggregation Functions", () => {
151148 } ) ;
152149
153150 it ( "should only include tools from healthy servers" , async ( ) => {
154- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
151+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
155152 "server1" ,
156153 "server2" ,
157154 ] ) ;
158- (
159- mockClient . getServerHealth as ReturnType < typeof vi . fn >
155+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
156+ mockClient . getServerHealth ,
160157 ) . mockResolvedValue ( {
161158 server1 : { name : "server1" , status : "ok" } ,
162159 server2 : { name : "server2" , status : "unreachable" } ,
@@ -185,12 +182,12 @@ describe("Aggregation Functions", () => {
185182 } ) ;
186183
187184 it ( "should handle Promise.allSettled rejections gracefully" , async ( ) => {
188- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
185+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
189186 "server1" ,
190187 "server2" ,
191188 ] ) ;
192- (
193- mockClient . getServerHealth as ReturnType < typeof vi . fn >
189+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
190+ mockClient . getServerHealth ,
194191 ) . mockResolvedValue ( {
195192 server1 : { name : "server1" , status : "ok" } ,
196193 server2 : { name : "server2" , status : "ok" } ,
@@ -230,11 +227,9 @@ describe("Aggregation Functions", () => {
230227 } ) ;
231228
232229 it ( "should preserve tool metadata" , async ( ) => {
233- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
234- "server1" ,
235- ] ) ;
236- (
237- mockClient . getServerHealth as ReturnType < typeof vi . fn >
230+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "server1" ] ) ;
231+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
232+ mockClient . getServerHealth ,
238233 ) . mockResolvedValue ( {
239234 server1 : { name : "server1" , status : "ok" } ,
240235 } ) ;
@@ -278,12 +273,9 @@ describe("Aggregation Functions", () => {
278273
279274 describe ( "aggregatePrompts" , ( ) => {
280275 it ( "should namespace prompt names with server__prompt format" , async ( ) => {
281- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
282- "github" ,
283- "code" ,
284- ] ) ;
285- (
286- mockClient . getServerHealth as ReturnType < typeof vi . fn >
276+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "github" , "code" ] ) ;
277+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
278+ mockClient . getServerHealth ,
287279 ) . mockResolvedValue ( {
288280 github : { name : "github" , status : "ok" } ,
289281 code : { name : "code" , status : "ok" } ,
@@ -327,12 +319,12 @@ describe("Aggregation Functions", () => {
327319 } ) ;
328320
329321 it ( "should only include prompts from healthy servers" , async ( ) => {
330- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
322+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
331323 "server1" ,
332324 "server2" ,
333325 ] ) ;
334- (
335- mockClient . getServerHealth as ReturnType < typeof vi . fn >
326+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
327+ mockClient . getServerHealth ,
336328 ) . mockResolvedValue ( {
337329 server1 : { name : "server1" , status : "ok" } ,
338330 server2 : { name : "server2" , status : "timeout" } ,
@@ -360,12 +352,12 @@ describe("Aggregation Functions", () => {
360352 } ) ;
361353
362354 it ( "should handle Promise.allSettled rejections gracefully" , async ( ) => {
363- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
355+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
364356 "server1" ,
365357 "server2" ,
366358 ] ) ;
367- (
368- mockClient . getServerHealth as ReturnType < typeof vi . fn >
359+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
360+ mockClient . getServerHealth ,
369361 ) . mockResolvedValue ( {
370362 server1 : { name : "server1" , status : "ok" } ,
371363 server2 : { name : "server2" , status : "ok" } ,
@@ -404,11 +396,9 @@ describe("Aggregation Functions", () => {
404396 } ) ;
405397
406398 it ( "should preserve prompt arguments" , async ( ) => {
407- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
408- "server1" ,
409- ] ) ;
410- (
411- mockClient . getServerHealth as ReturnType < typeof vi . fn >
399+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "server1" ] ) ;
400+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
401+ mockClient . getServerHealth ,
412402 ) . mockResolvedValue ( {
413403 server1 : { name : "server1" , status : "ok" } ,
414404 } ) ;
@@ -443,12 +433,9 @@ describe("Aggregation Functions", () => {
443433
444434 describe ( "aggregateResources" , ( ) => {
445435 it ( "should namespace resource names and transform URIs to mcpd:// format" , async ( ) => {
446- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
447- "docs" ,
448- "config" ,
449- ] ) ;
450- (
451- mockClient . getServerHealth as ReturnType < typeof vi . fn >
436+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "docs" , "config" ] ) ;
437+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
438+ mockClient . getServerHealth ,
452439 ) . mockResolvedValue ( {
453440 docs : { name : "docs" , status : "ok" } ,
454441 config : { name : "config" , status : "ok" } ,
@@ -496,12 +483,12 @@ describe("Aggregation Functions", () => {
496483 } ) ;
497484
498485 it ( "should only include resources from healthy servers" , async ( ) => {
499- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
486+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
500487 "server1" ,
501488 "server2" ,
502489 ] ) ;
503- (
504- mockClient . getServerHealth as ReturnType < typeof vi . fn >
490+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
491+ mockClient . getServerHealth ,
505492 ) . mockResolvedValue ( {
506493 server1 : { name : "server1" , status : "ok" } ,
507494 server2 : { name : "server2" , status : "unknown" } ,
@@ -529,12 +516,12 @@ describe("Aggregation Functions", () => {
529516 } ) ;
530517
531518 it ( "should handle Promise.allSettled rejections gracefully" , async ( ) => {
532- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
519+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
533520 "server1" ,
534521 "server2" ,
535522 ] ) ;
536- (
537- mockClient . getServerHealth as ReturnType < typeof vi . fn >
523+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
524+ mockClient . getServerHealth ,
538525 ) . mockResolvedValue ( {
539526 server1 : { name : "server1" , status : "ok" } ,
540527 server2 : { name : "server2" , status : "ok" } ,
@@ -573,11 +560,9 @@ describe("Aggregation Functions", () => {
573560 } ) ;
574561
575562 it ( "should preserve resource metadata" , async ( ) => {
576- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
577- "server1" ,
578- ] ) ;
579- (
580- mockClient . getServerHealth as ReturnType < typeof vi . fn >
563+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "server1" ] ) ;
564+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
565+ mockClient . getServerHealth ,
581566 ) . mockResolvedValue ( {
582567 server1 : { name : "server1" , status : "ok" } ,
583568 } ) ;
@@ -610,12 +595,9 @@ describe("Aggregation Functions", () => {
610595
611596 describe ( "aggregateResourceTemplates" , ( ) => {
612597 it ( "should namespace template names" , async ( ) => {
613- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
614- "files" ,
615- "web" ,
616- ] ) ;
617- (
618- mockClient . getServerHealth as ReturnType < typeof vi . fn >
598+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "files" , "web" ] ) ;
599+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
600+ mockClient . getServerHealth ,
619601 ) . mockResolvedValue ( {
620602 files : { name : "files" , status : "ok" } ,
621603 web : { name : "web" , status : "ok" } ,
@@ -660,12 +642,12 @@ describe("Aggregation Functions", () => {
660642 } ) ;
661643
662644 it ( "should only include templates from healthy servers" , async ( ) => {
663- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
645+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
664646 "server1" ,
665647 "server2" ,
666648 ] ) ;
667- (
668- mockClient . getServerHealth as ReturnType < typeof vi . fn >
649+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
650+ mockClient . getServerHealth ,
669651 ) . mockResolvedValue ( {
670652 server1 : { name : "server1" , status : "ok" } ,
671653 server2 : { name : "server2" , status : "unreachable" } ,
@@ -693,12 +675,12 @@ describe("Aggregation Functions", () => {
693675 } ) ;
694676
695677 it ( "should handle Promise.allSettled rejections gracefully" , async ( ) => {
696- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
678+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [
697679 "server1" ,
698680 "server2" ,
699681 ] ) ;
700- (
701- mockClient . getServerHealth as ReturnType < typeof vi . fn >
682+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
683+ mockClient . getServerHealth ,
702684 ) . mockResolvedValue ( {
703685 server1 : { name : "server1" , status : "ok" } ,
704686 server2 : { name : "server2" , status : "ok" } ,
@@ -737,11 +719,9 @@ describe("Aggregation Functions", () => {
737719 } ) ;
738720
739721 it ( "should preserve template metadata" , async ( ) => {
740- ( mockClient . listServers as ReturnType < typeof vi . fn > ) . mockResolvedValue ( [
741- "server1" ,
742- ] ) ;
743- (
744- mockClient . getServerHealth as ReturnType < typeof vi . fn >
722+ vi . mocked ( mockClient . listServers ) . mockResolvedValue ( [ "server1" ] ) ;
723+ vi . mocked < ( ) => Promise < Record < string , ServerHealth > > > (
724+ mockClient . getServerHealth ,
745725 ) . mockResolvedValue ( {
746726 server1 : { name : "server1" , status : "ok" } ,
747727 } ) ;
0 commit comments