Skip to main content
Glama

1MCP Server

preset-interactive.test.ts4.03 kB
import { TestFixtures } from '@test/e2e/fixtures/TestFixtures.js'; import { CliTestRunner, CommandTestEnvironment } from '@test/e2e/utils/index.js'; import { PresetManager } from '@src/domains/preset/manager/presetManager.js'; import { afterEach, beforeEach, describe, it } from 'vitest'; describe('Preset Interactive Command E2E', () => { let environment: CommandTestEnvironment; let runner: CliTestRunner; beforeEach(async () => { PresetManager.resetInstance(); environment = new CommandTestEnvironment(TestFixtures.createTestScenario('preset-interactive-test', 'empty')); await environment.setup(); runner = new CliTestRunner(environment); }); afterEach(async () => { await environment.cleanup(); }); describe('Smart Interactive Mode', () => { it('should handle no existing presets', async () => { const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); // Should proceed to create new preset workflow runner.assertOutputContains(result, '📁 Config directory:'); expect(result.stdout.length).toBeGreaterThan(0); }); it('should offer existing presets when available', async () => { // Create some presets first await runner.runCommand('preset', 'create', { args: ['test-preset-1', '--filter', 'web,api'], }); await runner.runCommand('preset', 'create', { args: ['test-preset-2', '--filter', 'database,monitoring'], }); const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); runner.assertOutputContains(result, '🎯 Found existing presets'); runner.assertOutputContains(result, 'test-preset-1'); runner.assertOutputContains(result, 'test-preset-2'); runner.assertOutputContains(result, 'Create new preset'); runner.assertOutputContains(result, 'Cancel'); }); it('should show config directory path', async () => { const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); runner.assertOutputContains(result, '📁 Config directory:'); runner.assertOutputContains(result, 'presets.json'); }); }); describe('Integration with Existing Presets', () => { it('should handle preset selection workflow', async () => { // Create a preset to work with await runner.runCommand('preset', 'create', { args: ['workflow-test', '--filter', 'web,api', '--description', 'Test workflow'], }); const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); runner.assertOutputContains(result, 'workflow-test'); runner.assertOutputContains(result, 'Test workflow'); }); it('should maintain preset data integrity', async () => { // Create multiple presets await runner.runCommand('preset', 'create', { args: ['preset-a', '--filter', 'web'], }); await runner.runCommand('preset', 'create', { args: ['preset-b', '--filter', 'api'], }); // Run interactive mode const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); // Verify both presets are still available const listResult = await runner.runCommand('preset', 'list'); runner.assertOutputContains(listResult, 'preset-a'); runner.assertOutputContains(listResult, 'preset-b'); }); }); describe('Error Handling', () => { it('should handle corrupted preset data gracefully', async () => { // This test would require setting up corrupted data, which is complex in e2e // For now, just test that the command doesn't crash with no args const result = await runner.runCommand('preset', '', { args: [], }); runner.assertSuccess(result); expect(result.stdout.length).toBeGreaterThan(0); }); }); });

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/1mcp-app/agent'

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