@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
78 lines • 2.79 kB
JavaScript
/**
* Simple disambiguation test to verify basic functionality
*/
import { IntelligentQueryEngine } from './IntelligentQueryEngine.js';
import { OptimizelyAdapter } from './adapters/OptimizelyAdapter.js';
import Database from 'better-sqlite3';
async function testSimpleDisambiguation() {
console.log('Testing simple field disambiguation...\n');
// Open database
const db = new Database('./data/optimizely-cache.db', { readonly: true });
// Initialize engine
const engine = new IntelligentQueryEngine({
discovery: {
autoDiscover: true,
discoveryInterval: 3600000,
cacheTTL: 60000
}
});
// Create and register adapter
const adapter = new OptimizelyAdapter({ database: db });
engine.registerAdapter(adapter);
// Wait for discovery
await new Promise(resolve => setTimeout(resolve, 500));
// Test 1: Simple query without disambiguation
console.log('Test 1: Simple query (should work)');
try {
const result = await engine.query({
find: 'flag',
select: ['name', 'key'],
limit: 5
});
console.log(`Success: ${result.data?.length || 0} rows returned\n`);
}
catch (error) {
console.log(`Error: ${error}\n`);
}
// Test 2: Query with table prefix
console.log('Test 2: Query with table prefix');
try {
const result = await engine.query({
find: 'flag',
select: ['flag.name', 'flag.key'],
limit: 5
});
console.log(`Success: ${result.data?.length || 0} rows returned\n`);
}
catch (error) {
console.log(`Error: ${error}\n`);
}
// Test 3: Query with field alias
console.log('Test 3: Query with field alias');
try {
const result = await engine.query({
find: 'flag',
select: ['name as flag_name', 'key as flag_key'],
limit: 5
});
console.log(`Success: ${result.data?.length || 0} rows returned`);
if (result.data && result.data.length > 0) {
console.log('First row:', JSON.stringify(result.data[0], null, 2));
}
console.log();
}
catch (error) {
console.log(`Error: ${error}\n`);
}
// Test 4: Check field catalog contents
console.log('Test 4: Field catalog check');
const fieldCatalog = engine.fieldCatalog;
const testFields = ['flag.name', 'flag.key', 'event.name', 'event.event_type'];
for (const field of testFields) {
const fieldInfo = fieldCatalog.getFieldInfo(field);
console.log(` ${field}: ${fieldInfo ? 'FOUND' : 'NOT FOUND'}`);
}
db.close();
}
testSimpleDisambiguation().catch(console.error);
//# sourceMappingURL=test-simple-disambiguation.js.map