Skip to main content
Glama
formatUserField.test.ts4.28 kB
import { formatUserField } from '../formatUserField' import { formatUserFieldFromObject, formatUserFieldFromString } from '../utils/userFieldUtils' import type { log } from '../../../utils/logger' // Mock logger function const mockLogger: typeof log = jest.fn() describe('formatUserField', () => { beforeEach(() => { // Reset mock before each test ;(mockLogger as jest.Mock).mockClear() }) // Test cases for null/undefined input test('should return undefined for null input', () => { expect(formatUserField(null, 'assignee', mockLogger)).toBeUndefined() }) test('should return undefined for undefined input', () => { expect(formatUserField(undefined, 'reporter', mockLogger)).toBeUndefined() }) // Test cases for string input test('should format a non-empty string to { id: string }', () => { const userId = 'test-user-id' expect(formatUserField(userId, 'assignee', mockLogger)).toEqual({ id: userId }) }) test('should return undefined for an empty string', () => { expect(formatUserField('', 'reporter', mockLogger)).toBeUndefined() }) // Test cases for object input test('should return the original object if it contains "id"', () => { const userObject = { id: 'user123', name: 'Test User' } expect(formatUserField(userObject, 'assignee', mockLogger)).toBe(userObject) }) test('should return the original object if it contains "accountId"', () => { const userObject = { accountId: 'acc123', displayName: 'Another User' } expect(formatUserField(userObject, 'reporter', mockLogger)).toBe(userObject) }) test('should return undefined and log warning for object without id or accountId', () => { const invalidObject = { name: 'Invalid User' } expect(formatUserField(invalidObject, 'assignee', mockLogger)).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith( `WARN: assignee field has unexpected object format: ${JSON.stringify(invalidObject)}`, ) }) // Test cases for unexpected types test('should return undefined and log warning for number input', () => { expect(formatUserField(123, 'reporter', mockLogger)).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith('WARN: reporter field has unexpected type: number') }) test('should return undefined and log warning for boolean input', () => { expect(formatUserField(true, 'assignee', mockLogger)).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith('WARN: assignee field has unexpected type: boolean') }) test('should return undefined and log warning for array input', () => { const arr = ['user1'] expect(formatUserField(arr, 'assignee', mockLogger)).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith(`WARN: assignee field has unexpected object format: ${JSON.stringify(arr)}`) }) }) // Direct tests for utility functions describe('userFieldUtils', () => { beforeEach(() => { // Reset mock before each test ;(mockLogger as jest.Mock).mockClear() }) describe('formatUserFieldFromString', () => { test('should format non-empty string to object with id', () => { expect(formatUserFieldFromString('user123')).toEqual({ id: 'user123' }) }) test('should return undefined for empty string', () => { expect(formatUserFieldFromString('')).toBeUndefined() }) }) describe('formatUserFieldFromObject', () => { test('should return object with id unchanged', () => { const obj = { id: 'user123' } expect(formatUserFieldFromObject(obj, 'assignee', mockLogger)).toBe(obj) }) test('should return object with accountId unchanged', () => { const obj = { accountId: 'acc123' } expect(formatUserFieldFromObject(obj, 'reporter', mockLogger)).toBe(obj) }) test('should return undefined and log warning for object without id or accountId', () => { const obj = { name: 'User Name' } expect(formatUserFieldFromObject(obj, 'assignee', mockLogger)).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith( `WARN: assignee field has unexpected object format: ${JSON.stringify(obj)}`, ) }) test('should handle null within formatUserFieldFromObject', () => { const result = formatUserFieldFromObject(null, 'assignee', mockLogger) expect(result).toBeUndefined() expect(mockLogger).toHaveBeenCalledWith('WARN: assignee field received null unexpectedly in object check.') }) }) })

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/tbreeding/jira-mcp'

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