Skip to main content
Glama

Backlog MCP Server

addVersionMilestone.test.ts3.24 kB
import { addVersionMilestoneTool } from './addVersionMilestone.js'; import { jest, describe, it, expect } from '@jest/globals'; import type { Backlog } from 'backlog-js'; import { createTranslationHelper } from '../createTranslationHelper.js'; describe('addVersionMilestoneTool', () => { const mockBacklog: Partial<Backlog> = { postVersions: jest.fn<() => Promise<any>>().mockResolvedValue({ id: 1, projectId: 100, name: 'Version 1.0.0', description: 'Initial release version', startDate: '2023-01-01T00:00:00Z', releaseDueDate: '2023-03-31T00:00:00Z', archived: false, displayOrder: 1, }), }; const mockTranslationHelper = createTranslationHelper(); const tool = addVersionMilestoneTool( mockBacklog as Backlog, mockTranslationHelper ); it('returns created version milestone as formatted JSON text', async () => { const result = await tool.handler({ projectKey: 'TEST', name: 'Version 1.0.0', description: 'Initial release version', startDate: '2023-01-01T00:00:00Z', releaseDueDate: '2023-03-31T00:00:00Z', }); if (Array.isArray(result)) { throw new Error('Unexpected array result'); } expect(result.name).toEqual('Version 1.0.0'); expect(result.description).toEqual('Initial release version'); expect(result.startDate).toEqual('2023-01-01T00:00:00Z'); expect(result.releaseDueDate).toEqual('2023-03-31T00:00:00Z'); }); it('calls backlog.postVersions with correct params when using projectKey', async () => { const params = { projectKey: 'TEST', name: 'Version 1.0.0', description: 'Initial release version', startDate: '2023-01-01T00:00:00Z', releaseDueDate: '2024-03-31T00:00:00Z', }; await tool.handler(params); expect(mockBacklog.postVersions).toHaveBeenCalledWith('TEST', { name: 'Version 1.0.0', description: 'Initial release version', startDate: '2023-01-01T00:00:00Z', releaseDueDate: '2024-03-31T00:00:00Z', }); }); it('calls backlog.postVersions with correct params when using projectId', async () => { const params = { projectId: 100, name: 'Version 2.0.0', description: 'Major release', startDate: '2023-04-01T00:00:00Z', releaseDueDate: '2023-06-30T00:00:00Z', }; await tool.handler(params); expect(mockBacklog.postVersions).toHaveBeenCalledWith(100, { name: 'Version 2.0.0', description: 'Major release', startDate: '2023-04-01T00:00:00Z', releaseDueDate: '2023-06-30T00:00:00Z', }); }); it('calls backlog.postVersions with minimal required params', async () => { const params = { projectKey: 'TEST', name: 'Quick Version', }; await tool.handler(params); expect(mockBacklog.postVersions).toHaveBeenCalledWith('TEST', { name: 'Quick Version', }); }); it('throws an error if neither projectId nor projectKey is provided', async () => { const params = { // projectId and projectKey are missing name: 'Version without project', description: 'This should fail', }; await expect(tool.handler(params as any)).rejects.toThrow(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/nulab/backlog-mcp-server'

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