Skip to main content
Glama

Backlog MCP Server

customFields.test.ts3.97 kB
import { customFieldsToPayload, customFieldFiltersToPayload, type CustomFieldInput, type CustomFieldFilterInput, } from './customFields.js'; import { describe, it, expect } from '@jest/globals'; describe('customFieldsToPayload', () => { it('returns an empty object when input is undefined', () => { const result = customFieldsToPayload(undefined); expect(result).toEqual({}); }); it('returns an empty object when input is null', () => { const result = customFieldsToPayload(null as any); expect(result).toEqual({}); }); it('converts single field with string value', () => { const input: CustomFieldInput[] = [{ id: 100, value: 'test value' }]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_100: 'test value', }); }); it('converts single field with number value', () => { const input: CustomFieldInput[] = [{ id: 101, value: 42 }]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_101: 42, }); }); it('converts single field with array value and otherValue', () => { const input: CustomFieldInput[] = [ { id: 102, value: ['OptionA', 'OptionB'], otherValue: 'custom input', }, ]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_102: ['OptionA', 'OptionB'], customField_102_otherValue: 'custom input', }); }); it('converts fields with numeric array values', () => { const input: CustomFieldInput[] = [ { id: 150, value: [1, 2, 3], }, ]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_150: [1, 2, 3], }); }); it('supports otherValue when value is undefined', () => { const input: CustomFieldInput[] = [ { id: 160, otherValue: '自由入力', }, ]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_160_otherValue: '自由入力', }); }); it('converts multiple fields of mixed types', () => { const input: CustomFieldInput[] = [ { id: 201, value: 'text' }, { id: 202, value: 123 }, { id: 203, value: '', otherValue: 'detail' }, ]; const result = customFieldsToPayload(input); expect(result).toEqual({ customField_201: 'text', customField_202: 123, customField_203: '', customField_203_otherValue: 'detail', }); }); }); describe('customFieldFiltersToPayload', () => { it('returns empty object when input is undefined', () => { expect(customFieldFiltersToPayload(undefined)).toEqual({}); }); it('handles text filters', () => { const filters: CustomFieldFilterInput[] = [ { id: 100, type: 'text', value: 'keyword' }, ]; expect(customFieldFiltersToPayload(filters)).toEqual({ customField_100: 'keyword', }); }); it('handles numeric filters with min/max', () => { const filters: CustomFieldFilterInput[] = [ { id: 200, type: 'numeric', min: 5, max: 10 }, ]; expect(customFieldFiltersToPayload(filters)).toEqual({ customField_200_min: 5, customField_200_max: 10, }); }); it('handles date filters', () => { const filters: CustomFieldFilterInput[] = [ { id: 300, type: 'date', min: '2024-01-01', max: '2024-12-31', }, ]; expect(customFieldFiltersToPayload(filters)).toEqual({ customField_300_min: '2024-01-01', customField_300_max: '2024-12-31', }); }); it('handles list filters with single and multiple values', () => { const filters: CustomFieldFilterInput[] = [ { id: 400, type: 'list', value: 1 }, { id: 401, type: 'list', value: [2, 3] }, ]; expect(customFieldFiltersToPayload(filters)).toEqual({ customField_400: 1, 'customField_401[]': [2, 3], }); }); });

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