Additional test coverage: - server/index.ts: createServer factory, cleanup function (91% coverage) - tools/index.ts: registerTools, registerConditionalTools (100% coverage) - prompts/index.ts: registerPrompts (100% coverage) - resources/index.ts: registerResources, readInstructions (88% coverage) - resources/files.ts: registerFileResources (54% coverage) - resources/subscriptions.ts: handlers, begin/stop updates (47% coverage) Test count: 124 tests (was 102) Coverage: 71.35% overall (was 64.73%) - Tools: 93.12% - Prompts: 90.53% - Server: 62.93% - Resources: 65.44% Note: Transport files (stdio.ts, sse.ts, streamableHttp.ts) are entry points that start Express servers. These require integration tests rather than unit tests. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
62 lines
1.8 KiB
TypeScript
62 lines
1.8 KiB
TypeScript
import { describe, it, expect, vi } from 'vitest';
|
|
import { createServer } from '../server/index.js';
|
|
|
|
describe('Server Factory', () => {
|
|
describe('createServer', () => {
|
|
it('should return a ServerFactoryResponse object', () => {
|
|
const result = createServer();
|
|
|
|
expect(result).toHaveProperty('server');
|
|
expect(result).toHaveProperty('cleanup');
|
|
});
|
|
|
|
it('should return a cleanup function', () => {
|
|
const { cleanup } = createServer();
|
|
|
|
expect(typeof cleanup).toBe('function');
|
|
});
|
|
|
|
it('should create an McpServer instance', () => {
|
|
const { server } = createServer();
|
|
|
|
expect(server).toBeDefined();
|
|
expect(server.server).toBeDefined();
|
|
});
|
|
|
|
it('should have tools capability enabled', () => {
|
|
const { server } = createServer();
|
|
|
|
// Server should be properly configured
|
|
expect(server).toBeDefined();
|
|
});
|
|
|
|
it('should cleanup without throwing errors', () => {
|
|
const { cleanup } = createServer();
|
|
|
|
// Cleanup should not throw when called with a session ID
|
|
expect(() => cleanup('test-session')).not.toThrow();
|
|
});
|
|
|
|
it('should cleanup without throwing errors when sessionId is undefined', () => {
|
|
const { cleanup } = createServer();
|
|
|
|
// Cleanup should not throw when called without a session ID
|
|
expect(() => cleanup()).not.toThrow();
|
|
});
|
|
|
|
it('should allow multiple servers to be created', () => {
|
|
const result1 = createServer();
|
|
const result2 = createServer();
|
|
|
|
expect(result1.server).toBeDefined();
|
|
expect(result2.server).toBeDefined();
|
|
expect(result1.server).not.toBe(result2.server);
|
|
});
|
|
|
|
it('should have an oninitialized handler set', () => {
|
|
const { server } = createServer();
|
|
|
|
expect(server.server.oninitialized).toBeDefined();
|
|
});
|
|
});
|
|
});
|