Skip to main content
Glama
migrationHandler.test.ts3.15 kB
import { describe, it, expect, beforeEach, vi } from 'vitest'; import { makeSpaceToSpaceMigrationHandlerTool } from './migrationHandler.js'; import { mockMigrationHandlerArgs } from './mockClient.js'; import type { RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js'; describe('migrationHandler', () => { let mockTool1: RegisteredTool; let mockTool2: RegisteredTool; let mockTool3: RegisteredTool; let tools: RegisteredTool[]; let migrationHandlerTool: ReturnType< typeof makeSpaceToSpaceMigrationHandlerTool >; beforeEach(() => { // Create mock tools with enable/disable methods mockTool1 = { enable: vi.fn(), disable: vi.fn(), callback: vi.fn(), enabled: true, update: vi.fn(), remove: vi.fn(), } as RegisteredTool; mockTool2 = { enable: vi.fn(), disable: vi.fn(), callback: vi.fn(), enabled: true, update: vi.fn(), remove: vi.fn(), } as RegisteredTool; mockTool3 = { enable: vi.fn(), disable: vi.fn(), callback: vi.fn(), enabled: true, update: vi.fn(), remove: vi.fn(), } as RegisteredTool; tools = [mockTool1, mockTool2, mockTool3]; migrationHandlerTool = makeSpaceToSpaceMigrationHandlerTool(tools); vi.clearAllMocks(); }); it('should enable workflow when enableWorkflow is true', async () => { const testArgs = { ...mockMigrationHandlerArgs, enableWorkflow: true, }; const result = await migrationHandlerTool(testArgs); // Verify all tools were enabled expect(mockTool1.enable).toHaveBeenCalledTimes(1); expect(mockTool2.enable).toHaveBeenCalledTimes(1); expect(mockTool3.enable).toHaveBeenCalledTimes(1); // Verify disable was not called expect(mockTool1.disable).not.toHaveBeenCalled(); expect(mockTool2.disable).not.toHaveBeenCalled(); expect(mockTool3.disable).not.toHaveBeenCalled(); expect(result.content[0].text).toContain( 'Space to space migration workflow started', ); expect(result.content[0].text).toContain( '<enableWorkflow>true</enableWorkflow>', ); expect(result.content[0].text).toContain( 'You are a helpful assistant that can help with space to space migration', ); }); it('should disable workflow when enableWorkflow is false', async () => { const testArgs = { ...mockMigrationHandlerArgs, enableWorkflow: false, }; const result = await migrationHandlerTool(testArgs); // Verify all tools were disabled expect(mockTool1.disable).toHaveBeenCalledTimes(1); expect(mockTool2.disable).toHaveBeenCalledTimes(1); expect(mockTool3.disable).toHaveBeenCalledTimes(1); // Verify enable was not called expect(mockTool1.enable).not.toHaveBeenCalled(); expect(mockTool2.enable).not.toHaveBeenCalled(); expect(mockTool3.enable).not.toHaveBeenCalled(); expect(result.content[0].text).toContain( 'Space to space migration workflow concluded', ); expect(result.content[0].text).toContain( 'The space to space migration workflow has been concluded', ); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/contentful/contentful-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server