Skip to main content
Glama

Memory Bank MCP Server

by t3ta
versioning.test.ts3.47 kB
import { SCHEMA_VERSIONS, LATEST_SCHEMA_VERSION, SchemaVersion, isKnownSchemaVersion, migrateDocumentToLatest, } from '../../src/versioning.js'; // Adjust path as needed import { vi } from 'vitest'; // jest -> vi // Mock console.warn for migrateDocumentToLatest tests const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); // jest -> vi describe('Schema Versioning', () => { beforeEach(() => { consoleWarnSpy.mockClear(); }); afterAll(() => { consoleWarnSpy.mockRestore(); }); describe('Constants', () => { it('SCHEMA_VERSIONS should contain known versions', () => { expect(SCHEMA_VERSIONS.v2).toBe('memory_document_v2'); // Add checks for future versions when they are added }); it('LATEST_SCHEMA_VERSION should be the latest known version', () => { // Currently only v2 exists expect(LATEST_SCHEMA_VERSION).toBe(SCHEMA_VERSIONS.v2); }); }); describe('isKnownSchemaVersion', () => { it('should return true for known schema versions', () => { expect(isKnownSchemaVersion('memory_document_v2')).toBe(true); }); it('should return false for unknown schema versions', () => { expect(isKnownSchemaVersion('memory_document_v1')).toBe(false); expect(isKnownSchemaVersion('v2')).toBe(false); expect(isKnownSchemaVersion('')).toBe(false); expect(isKnownSchemaVersion(null as any)).toBe(false); expect(isKnownSchemaVersion(undefined as any)).toBe(false); }); it('should work as a type guard', () => { const versionString: string = 'memory_document_v2'; let knownVersion: SchemaVersion | undefined; if (isKnownSchemaVersion(versionString)) { // Inside this block, versionString should be narrowed to type SchemaVersion knownVersion = versionString; expect(knownVersion).toBe('memory_document_v2'); } else { // Should not reach here in this test case throw new Error('Type guard failed'); } expect(knownVersion).toBeDefined(); }); }); describe('migrateDocumentToLatest (Placeholder)', () => { it('should return the document as is if schema is the latest version', () => { const doc = { schema: LATEST_SCHEMA_VERSION, content: { data: 'test' } }; const migratedDoc = migrateDocumentToLatest(doc); expect(migratedDoc).toBe(doc); // Should return the same object instance for now expect(consoleWarnSpy).not.toHaveBeenCalled(); }); it('should return the document as is and log a warning if schema is unknown', () => { const doc = { schema: 'unknown_version', content: { data: 'old' } }; const migratedDoc = migrateDocumentToLatest(doc); expect(migratedDoc).toBe(doc); expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining('unknown or missing schema version: unknown_version')); }); it('should return the document as is and log a warning if schema is missing', () => { const doc = { content: { data: 'no schema' } }; const migratedDoc = migrateDocumentToLatest(doc); expect(migratedDoc).toBe(doc); // Check for undefined schema in warning message expect(consoleWarnSpy).toHaveBeenCalledWith(expect.stringContaining('unknown or missing schema version: undefined')); }); // TODO: Add tests for actual migration logic when implemented // e.g., it('should migrate v1 document to v2 format', () => { ... }); }); });

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/t3ta/memory-bank-mcp-server'

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