Skip to main content
Glama
UniversalSearchService-records-tasks.test.tsβ€’3.06 kB
/** * Split: UniversalSearchService records/tasks */ import { describe, it, expect, beforeEach, vi } from 'vitest'; vi.mock('../../src/services/ValidationService.js', () => ({ ValidationService: { validatePaginationParameters: vi.fn(), validateFiltersSchema: vi.fn(), validateUUIDForSearch: vi.fn().mockReturnValue(true), }, })); vi.mock('../../src/services/CachingService.js', () => ({ CachingService: { getOrLoadTasks: vi.fn().mockResolvedValue({ data: [], fromCache: false }), getCachedTasks: vi.fn(), }, })); vi.mock('../../src/services/UniversalUtilityService.js', () => ({ UniversalUtilityService: { convertTaskToRecord: vi.fn() }, })); vi.mock('../../src/middleware/performance-enhanced.js', () => ({ enhancedPerformanceTracker: { startOperation: vi.fn(() => 'perf-123'), markTiming: vi.fn(), markApiStart: vi.fn(() => 100), markApiEnd: vi.fn(), endOperation: vi.fn(), }, })); vi.mock('../../src/objects/records/index.js', () => ({ listObjectRecords: vi.fn(), })); vi.mock('../../src/objects/tasks.js', () => ({ listTasks: vi.fn() })); vi.mock('../../src/services/MockService.js', () => ({ MockService: { isUsingMockData: vi.fn().mockReturnValue(false) }, })); import { UniversalSearchService } from '../../src/services/UniversalSearchService.js'; import { UniversalResourceType } from '../../src/handlers/tool-configs/universal/types.js'; import { AttioRecord, AttioTask } from '../../src/types/attio.js'; import { listObjectRecords } from '../../src/objects/records/index.js'; import { listTasks } from '../../src/objects/tasks.js'; import { UniversalUtilityService } from '../../src/services/UniversalUtilityService.js'; import { CachingService } from '../../src/services/CachingService.js'; describe('UniversalSearchService - records/tasks', () => { beforeEach(() => vi.clearAllMocks()); it('should list object records', async () => { const mockResults: AttioRecord[] = [ { id: { record_id: 'rec_1' }, values: { name: 'R' } } as any, ]; vi.mocked(listObjectRecords).mockResolvedValue(mockResults); const result = await UniversalSearchService.searchRecords({ resource_type: UniversalResourceType.RECORDS, query: 'R', }); expect(result).toEqual(mockResults); }); it('should list tasks and convert to records', async () => { const mockTasks: AttioTask[] = [{ id: { task_id: 't1' } } as any]; const converted: AttioRecord[] = [ { id: { record_id: 't1' }, values: {} } as any, ]; vi.mocked(listTasks).mockResolvedValue(mockTasks as any); vi.mocked(UniversalUtilityService.convertTaskToRecord).mockReturnValue( converted[0] as any ); // Mock CachingService to return the converted records vi.mocked(CachingService.getOrLoadTasks).mockResolvedValue({ data: converted, fromCache: false, }); const result = await UniversalSearchService.searchRecords({ resource_type: UniversalResourceType.TASKS, query: 'foo', }); expect(result).toEqual(converted); }); });

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/kesslerio/attio-mcp-server'

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