Skip to main content
Glama

Backlog MCP Server

updateProject.test.ts2.53 kB
import { updateProjectTool } from './updateProject.js'; import { jest, describe, it, expect } from '@jest/globals'; import type { Backlog } from 'backlog-js'; import { createTranslationHelper } from '../createTranslationHelper.js'; describe('updateProjectTool', () => { const mockBacklog: Partial<Backlog> = { patchProject: jest.fn<() => Promise<any>>().mockResolvedValue({ id: 1, projectKey: 'UPDATED', name: 'Updated Project', chartEnabled: true, subtaskingEnabled: true, projectLeaderCanEditProjectLeader: false, textFormattingRule: 'markdown', archived: true, displayOrder: 0, }), }; const mockTranslationHelper = createTranslationHelper(); const tool = updateProjectTool(mockBacklog as Backlog, mockTranslationHelper); it('returns updated project', async () => { const result = await tool.handler({ projectKey: 'TEST', name: 'Updated Project', key: 'UPDATED', archived: true, }); expect(result).toHaveProperty('name', 'Updated Project'); expect(result).toHaveProperty('projectKey', 'UPDATED'); expect(result).toHaveProperty('archived', true); }); it('calls backlog.patchProject with correct params when using project key', async () => { await tool.handler({ projectKey: 'TEST', name: 'Updated Project', key: 'UPDATED', textFormattingRule: 'markdown', archived: true, }); expect(mockBacklog.patchProject).toHaveBeenCalledWith('TEST', { name: 'Updated Project', key: 'UPDATED', chartEnabled: undefined, subtaskingEnabled: undefined, projectLeaderCanEditProjectLeader: undefined, textFormattingRule: 'markdown', archived: true, }); }); it('calls backlog.patchProject with correct params when using project ID', async () => { await tool.handler({ projectId: 1, chartEnabled: true, subtaskingEnabled: true, }); expect(mockBacklog.patchProject).toHaveBeenCalledWith(1, { name: undefined, key: undefined, chartEnabled: true, subtaskingEnabled: true, projectLeaderCanEditProjectLeader: undefined, textFormattingRule: undefined, archived: undefined, }); }); it('throws an error if neither projectId nor projectKey is provided', async () => { const params = { // projectId and projectKey are missing name: 'Test Project Name', }; 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