Skip to main content
Glama
update_project_settings.test.ts2.23 kB
import { TeamCityAPI } from '@/api-client'; import { getRequiredTool } from '@/tools'; describe('tools: update_project_settings', () => { const prevMode = process.env['MCP_MODE']; let tool: ReturnType<typeof getRequiredTool>; beforeAll(() => { process.env['MCP_MODE'] = 'full'; tool = getRequiredTool('update_project_settings'); }); afterAll(() => { if (typeof prevMode === 'undefined') delete process.env['MCP_MODE']; else process.env['MCP_MODE'] = prevMode; }); it('updates only provided name', async () => { const setProjectField = jest.fn().mockResolvedValue({}); jest.spyOn(TeamCityAPI, 'getInstance').mockReturnValue({ projects: { setProjectField }, } as unknown as TeamCityAPI); const args = { projectId: 'MyProj', name: 'TeamCity MCP' }; const result = await tool.handler(args); const payload = JSON.parse((result.content?.[0]?.text as string) ?? '{}'); expect(payload).toMatchObject({ success: true, action: 'update_project_settings', id: 'MyProj', }); }); it('updates description and archived with proper types', async () => { const setProjectField = jest.fn().mockResolvedValue({}); jest.spyOn(TeamCityAPI, 'getInstance').mockReturnValue({ projects: { setProjectField }, } as unknown as TeamCityAPI); const args = { projectId: 'MyProj', description: 'Correct casing', archived: true }; const result = await tool.handler(args); const payload = JSON.parse((result.content?.[0]?.text as string) ?? '{}'); expect(payload).toMatchObject({ success: true, action: 'update_project_settings', id: 'MyProj', }); }); it('does nothing when no fields provided', async () => { const setProjectField = jest.fn().mockResolvedValue({}); jest.spyOn(TeamCityAPI, 'getInstance').mockReturnValue({ projects: { setProjectField }, } as unknown as TeamCityAPI); const args = { projectId: 'OnlyId' }; const result = await tool.handler(args); const payload = JSON.parse((result.content?.[0]?.text as string) ?? '{}'); expect(payload).toMatchObject({ success: true, action: 'update_project_settings', id: 'OnlyId', }); }); });

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/Daghis/teamcity-mcp'

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