Skip to main content
Glama

AI Code Toolkit

by AgiFlow
GenerateBoilerplateTool.test.ts3.52 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; import { GenerateBoilerplateTool } from '../../src/tools/GenerateBoilerplateTool'; // Mock the service vi.mock('../../src/services/BoilerplateGeneratorService'); describe('GenerateBoilerplateTool', () => { let tool: GenerateBoilerplateTool; const templatesPath = '/test/templates'; beforeEach(() => { vi.clearAllMocks(); tool = new GenerateBoilerplateTool(templatesPath); }); describe('getDefinition', () => { it('should return tool definition with correct schema', () => { const definition = tool.getDefinition(); expect(definition.name).toBe('generate-boilerplate'); expect(definition.description).toBeTruthy(); expect(definition.inputSchema.type).toBe('object'); expect(definition.inputSchema.required).toContain('templateName'); expect(definition.inputSchema.required).toContain('boilerplateName'); expect(definition.inputSchema.required).toContain('description'); }); it('should include variables in schema', () => { const definition = tool.getDefinition(); expect(definition.inputSchema.properties.variables).toBeDefined(); expect(definition.inputSchema.properties.variables.type).toBe('array'); }); }); describe('execute', () => { it('should execute successfully with valid arguments', async () => { const args = { templateName: 'test-template', boilerplateName: 'scaffold-test-app', description: 'Test description', targetFolder: 'apps', variables: [ { name: 'appName', description: 'App name', type: 'string', required: true, }, ], }; const spy = vi.spyOn(tool.boilerplateGeneratorService, 'generateBoilerplate'); spy.mockResolvedValue({ success: true, message: 'Boilerplate created', templatePath: '/test/templates/test-template', scaffoldYamlPath: '/test/templates/test-template/scaffold.yaml', }); const result = await tool.execute(args); expect(result.isError).toBeFalsy(); expect(result.content[0].type).toBe('text'); const response = JSON.parse(result.content[0].text); expect(response.success).toBe(true); }); it('should return error when service fails', async () => { const args = { templateName: 'test-template', boilerplateName: 'scaffold-test-app', description: 'Test', targetFolder: 'apps', variables: [], }; const spy = vi.spyOn(tool.boilerplateGeneratorService, 'generateBoilerplate'); spy.mockResolvedValue({ success: false, message: 'Boilerplate already exists', }); const result = await tool.execute(args); expect(result.isError).toBeTruthy(); expect(result.content[0].text).toContain('already exists'); }); it('should handle exceptions gracefully', async () => { const args = { templateName: 'test-template', boilerplateName: 'scaffold-test-app', description: 'Test', targetFolder: 'apps', variables: [], }; const spy = vi.spyOn(tool.boilerplateGeneratorService, 'generateBoilerplate'); spy.mockRejectedValue(new Error('Unexpected error')); const result = await tool.execute(args); expect(result.isError).toBeTruthy(); expect(result.content[0].text).toContain('Unexpected error'); }); }); });

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/AgiFlow/aicode-toolkit'

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