Skip to main content
Glama
context-level-processor.test.ts4.39 kB
/** * Context Level Processor Tests * Single responsibility: Test response detail control based on context level * GDD v3.0: Tests for context level filtering system */ import { describe, it, expect, beforeEach } from 'vitest'; import { ContextLevelProcessor, type MemoryResult } from '../../../../src/application/unified-handlers/services/context-level-processor'; describe('ContextLevelProcessor - Production Coverage', () => { let processor: ContextLevelProcessor; let fullMemoryResult: MemoryResult; beforeEach(() => { processor = new ContextLevelProcessor(); // Create complete memory result for testing fullMemoryResult = { id: 'memory-123', name: 'Test Memory', memoryType: 'test', score: 0.85, observations: [ { id: 'obs-1', content: 'First observation', createdAt: '2024-01-01T10:00:00Z' }, { id: 'obs-2', content: 'Second observation', createdAt: '2024-01-01T11:00:00Z' } ], metadata: { category: 'important', tags: ['test', 'memory'] }, createdAt: '2024-01-01T09:00:00Z', modifiedAt: '2024-01-01T12:00:00Z', lastAccessed: '2024-01-01T13:00:00Z', related: { ancestors: [ { id: 'parent-1', name: 'Parent Memory', type: 'parent', relation: 'CONTAINS', distance: 1 } ], descendants: [ { id: 'child-1', name: 'Child Memory', type: 'child', relation: 'EXTENDS', distance: 1 } ] } }; }); describe('Context Level Validation', () => { it('should validate valid context levels', () => { // Act & Assert expect(() => processor.validateContextLevel('minimal')).not.toThrow(); expect(() => processor.validateContextLevel('full')).not.toThrow(); expect(() => processor.validateContextLevel('relations-only')).not.toThrow(); }); it('should reject invalid context levels', () => { // Act & Assert expect(() => processor.validateContextLevel('invalid')) .toThrow('Invalid context level: invalid. Valid options: minimal, full, relations-only'); }); it('should return validated context level', () => { // Act const result = processor.validateContextLevel('minimal'); // Assert expect(result).toBe('minimal'); }); }); describe('Minimal Context Level', () => { it('should strip all fields except core identifiers', () => { // Act const result = processor.applyContextLevel([fullMemoryResult], 'minimal'); // Assert expect(result).toHaveLength(1); expect(result[0]).toEqual({ id: 'memory-123', name: 'Test Memory', memoryType: 'test', score: 0.85 }); // Verify stripped fields expect(result[0]).not.toHaveProperty('observations'); expect(result[0]).not.toHaveProperty('metadata'); expect(result[0]).not.toHaveProperty('createdAt'); expect(result[0]).not.toHaveProperty('modifiedAt'); expect(result[0]).not.toHaveProperty('lastAccessed'); expect(result[0]).not.toHaveProperty('related'); }); it('should handle memory without score', () => { // Arrange const memoryWithoutScore = { ...fullMemoryResult }; delete memoryWithoutScore.score; // Act const result = processor.applyContextLevel([memoryWithoutScore], 'minimal'); // Assert expect(result[0]).toEqual({ id: 'memory-123', name: 'Test Memory', memoryType: 'test' }); expect(result[0]).not.toHaveProperty('score'); }); }); describe('Full Context Level', () => { it('should return complete memory data unchanged', () => { // Act const result = processor.applyContextLevel([fullMemoryResult], 'full'); // Assert expect(result).toHaveLength(1); expect(result[0]).toEqual(fullMemoryResult); }); it('should be the default context level', () => { // Act - not specifying context level should default to 'full' const result = processor.applyContextLevel([fullMemoryResult]); // Assert expect(result[0]).toEqual(fullMemoryResult); }); }); });

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/sylweriusz/mcp-neo4j-memory-server'

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