Skip to content

Commit dcef71a

Browse files
committed
Use vi.mocked
1 parent 798d049 commit dcef71a

File tree

1 file changed

+60
-80
lines changed

1 file changed

+60
-80
lines changed

tests/unit/aggregation.test.ts

Lines changed: 60 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
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

1111
describe("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

Comments
 (0)