Tests for mergeCapabilities

This commit is contained in:
Justin Spahr-Summers 2025-01-07 14:33:43 +00:00
commit c14a5d44bf
No known key found for this signature in database

View file

@ -1,13 +1,15 @@
import { Protocol } from "./protocol.js";
import { Transport } from "./transport.js";
import { ZodType, z } from "zod";
import {
McpError,
ClientCapabilities,
ErrorCode,
McpError,
Notification,
Request,
Result,
Notification,
ServerCapabilities,
} from "../types.js";
import { ZodType, z } from "zod";
import { Protocol, mergeCapabilities } from "./protocol.js";
import { Transport } from "./transport.js";
// Mock Transport class
class MockTransport implements Transport {
@ -61,3 +63,89 @@ describe("protocol tests", () => {
expect(oncloseMock).toHaveBeenCalled();
});
});
describe("mergeCapabilities", () => {
it("should merge client capabilities", () => {
const base: ClientCapabilities = {
sampling: {},
roots: {
listChanged: true,
},
};
const additional: ClientCapabilities = {
experimental: {
feature: true,
},
roots: {
newProp: true,
},
};
const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({
sampling: {},
roots: {
listChanged: true,
newProp: true,
},
experimental: {
feature: true,
},
});
});
it("should merge server capabilities", () => {
const base: ServerCapabilities = {
logging: {},
prompts: {
listChanged: true,
},
};
const additional: ServerCapabilities = {
resources: {
subscribe: true,
},
prompts: {
newProp: true,
},
};
const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({
logging: {},
prompts: {
listChanged: true,
newProp: true,
},
resources: {
subscribe: true,
},
});
});
it("should override existing values with additional values", () => {
const base: ServerCapabilities = {
prompts: {
listChanged: false,
},
};
const additional: ServerCapabilities = {
prompts: {
listChanged: true,
},
};
const merged = mergeCapabilities(base, additional);
expect(merged.prompts!.listChanged).toBe(true);
});
it("should handle empty objects", () => {
const base = {};
const additional = {};
const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({});
});
});