Skip to main content
Glama
test-update-list-entry.js6.62 kB
/** * Manual test for the update-list-entry tool * * This script tests the new update-list-entry functionality for Issue #209 * which enables updating list entry stages for pipeline management. * * Instructions: * 1. Set ATTIO_API_KEY environment variable * 2. Create test list and company in your Attio workspace or use existing IDs * 3. Run with: node test/manual/test-update-list-entry.js */ // Import required modules import { executeToolRequest } from '../../dist/handlers/tools/dispatcher.js'; // Constants for testing - replace with real IDs from your Attio workspace // ShapeScale Prospecting List ID from Issue #209 const LIST_ID = process.env.TEST_LIST_ID || '88709359-01f6-478b-ba66-c07347891b6f'; const ENTRY_ID = process.env.TEST_ENTRY_ID || 'test-entry-id'; // You'll need a valid entry ID const COMPANY_ID = process.env.TEST_COMPANY_ID || '3bdf5c9d-aa78-492a-a4c1-5a143e94ef0e'; // Configure test environment process.env.NODE_ENV = 'development'; // Enable debug logging /** * Test the update-list-entry tool with stage transition */ async function testUpdateListEntryStage() { console.log('=== Testing update-list-entry with stage transition ==='); // Valid request to update stage from "Interested" to "Demo Scheduling" const updateRequest = { params: { name: 'update-list-entry', arguments: { listId: LIST_ID, entryId: ENTRY_ID, attributes: { stage: 'Demo Scheduling', }, }, }, method: 'tools/call', }; console.log(`Testing stage update with:`); console.log(`- List ID: ${LIST_ID}`); console.log(`- Entry ID: ${ENTRY_ID}`); console.log(`- New Stage: "Demo Scheduling"`); console.log( `- Request format: { data: { values: { stage: "Demo Scheduling" } } }\n` ); try { const result = await executeToolRequest(updateRequest); console.log('Result:', JSON.stringify(result, null, 2)); return !result.isError; } catch (error) { console.error('Error during stage update test:', error); return false; } } /** * Test the update-list-entry tool with missing parameters */ async function testMissingParameters() { console.log('\n=== Testing update-list-entry with missing parameters ==='); // Invalid request missing entryId const invalidRequest = { params: { name: 'update-list-entry', arguments: { listId: LIST_ID, attributes: { stage: 'Demo Scheduling', }, }, }, method: 'tools/call', }; try { const result = await executeToolRequest(invalidRequest); console.log('Result:', JSON.stringify(result, null, 2)); // Should be an error result return result.isError === true; } catch (error) { console.error('Unexpected error during missing parameters test:', error); return false; } } /** * Test the filter-list-entries tool to verify it works */ async function testFilterListEntries() { console.log('\n=== Testing filter-list-entries to verify fix ==='); // Valid request to filter by stage const filterRequest = { params: { name: 'filter-list-entries', arguments: { listId: LIST_ID, attributeSlug: 'stage', condition: 'equals', value: 'Interested', }, }, method: 'tools/call', }; console.log(`Testing filter with:`); console.log(`- List ID: ${LIST_ID}`); console.log(`- Attribute: stage`); console.log(`- Condition: equals`); console.log(`- Value: "Interested"\n`); try { const result = await executeToolRequest(filterRequest); console.log('Result:', JSON.stringify(result, null, 2)); return !result.isError; } catch (error) { console.error('Error during filter test:', error); return false; } } /** * Test the get-company-lists tool to verify it works */ async function testGetCompanyLists() { console.log( '\n=== Testing get-company-lists to verify existing functionality ===' ); // Valid request to get company lists const getListsRequest = { params: { name: 'get-company-lists', arguments: { companyId: COMPANY_ID, }, }, method: 'tools/call', }; console.log(`Testing get company lists with:`); console.log(`- Company ID: ${COMPANY_ID}\n`); try { const result = await executeToolRequest(getListsRequest); console.log('Result:', JSON.stringify(result, null, 2)); return !result.isError; } catch (error) { console.error('Error during get company lists test:', error); return false; } } /** * Run all the tests and report results */ async function runTests() { let updateResult, missingParamsResult, filterResult, getListsResult; try { // Note: updateResult will likely fail without a valid entry ID updateResult = await testUpdateListEntryStage(); missingParamsResult = await testMissingParameters(); filterResult = await testFilterListEntries(); getListsResult = await testGetCompanyLists(); console.log('\n=== Test Results ==='); console.log( `Update list entry test: ${ updateResult ? 'PASSED' : 'FAILED (Expected if no valid entry ID)' }` ); console.log( `Missing parameters test: ${missingParamsResult ? 'PASSED' : 'FAILED'}` ); console.log( `Filter list entries test: ${filterResult ? 'PASSED' : 'FAILED'}` ); console.log( `Get company lists test: ${getListsResult ? 'PASSED' : 'FAILED'}` ); const criticalTests = missingParamsResult && filterResult && getListsResult; if (criticalTests) { console.log( '\n✅ Critical tests PASSED! The fix for issue #209 is working correctly.' ); console.log( 'ℹ️ Update list entry test may fail without valid entry ID - this is expected.' ); } else { console.log( '\n❌ Some critical tests FAILED! The fix for issue #209 may not be working correctly.' ); } } catch (error) { console.error('Error running tests:', error); } } // Ensure we have the ATTIO_API_KEY set before running tests if (!process.env.ATTIO_API_KEY) { console.error( 'ERROR: ATTIO_API_KEY environment variable must be set to run this test.' ); console.error( 'Export ATTIO_API_KEY=your_key_here before running the script.' ); process.exit(1); } // Initialize the API client import { initializeAttioClient } from '../../dist/api/attio-client.js'; initializeAttioClient(process.env.ATTIO_API_KEY); // Run the tests runTests().catch((error) => { console.error('Unhandled error during test execution:', error); process.exit(1); });

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