MCP Rand

import { generateRandomNumberHandler } from '../generate-random-number.handler.js'; import { CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js'; type CallToolRequest = typeof CallToolRequestSchema._output; describe('generateRandomNumberHandler', () => { it('should generate a random number within the specified range', async () => { const request: CallToolRequest = { method: 'tools/call', params: { name: 'generate_random_number', arguments: { min: 1, max: 100 } } }; const result = await generateRandomNumberHandler(request); const number = parseInt(result.content[0].text as string); expect(number).toBeGreaterThanOrEqual(1); expect(number).toBeLessThanOrEqual(100); }); it('should generate different numbers on subsequent calls', async () => { const request: CallToolRequest = { method: 'tools/call', params: { name: 'generate_random_number', arguments: { min: 1, max: 1000000 // Large range to minimize chance of random same numbers } } }; const result1 = await generateRandomNumberHandler(request); const result2 = await generateRandomNumberHandler(request); expect(result1.content[0].text).not.toBe(result2.content[0].text); }); it('should handle default values when no arguments provided', async () => { const request: CallToolRequest = { method: 'tools/call', params: { name: 'generate_random_number', arguments: {} } }; const result = await generateRandomNumberHandler(request); const number = parseInt(result.content[0].text as string); expect(number).toBeGreaterThanOrEqual(0); expect(number).toBeLessThanOrEqual(100); }); it('should throw error if min is greater than max', async () => { const request: CallToolRequest = { method: 'tools/call', params: { name: 'generate_random_number', arguments: { min: 100, max: 1 } } }; await expect(generateRandomNumberHandler(request)).rejects.toThrow('Min value cannot be greater than max value'); }); });