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
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', () => { ... });
});
});