Skip to main content
Glama

docs-mcp-server

LanguageParserRegistry.test.ts5.58 kB
/** * Tests for LanguageParserRegistry - Parser registration and lookup */ import { beforeEach, describe, expect, it } from "vitest"; import { LanguageParserRegistry } from "./LanguageParserRegistry"; describe("LanguageParserRegistry", () => { let registry: LanguageParserRegistry; beforeEach(() => { registry = new LanguageParserRegistry(); }); describe("initialization", () => { it("should initialize with JavaScript parser", () => { expect(registry.getSupportedLanguages()).toContain("javascript"); }); it("should initialize with Python parser", () => { expect(registry.getSupportedLanguages()).toContain("python"); }); it("should register JavaScript file extensions", () => { expect(registry.isExtensionSupported(".js")).toBe(true); expect(registry.isExtensionSupported(".jsx")).toBe(true); expect(registry.isExtensionSupported(".mjs")).toBe(true); expect(registry.isExtensionSupported(".cjs")).toBe(true); }); it("should register Python file extensions", () => { expect(registry.isExtensionSupported(".py")).toBe(true); expect(registry.isExtensionSupported(".pyi")).toBe(true); expect(registry.isExtensionSupported(".pyw")).toBe(true); }); it("should register JavaScript MIME types", () => { expect(registry.isMimeTypeSupported("text/javascript")).toBe(true); expect(registry.isMimeTypeSupported("application/javascript")).toBe(true); expect(registry.isMimeTypeSupported("text/jsx")).toBe(true); expect(registry.isMimeTypeSupported("application/jsx")).toBe(true); }); it("should register Python MIME types", () => { expect(registry.isMimeTypeSupported("text/python")).toBe(true); expect(registry.isMimeTypeSupported("text/x-python")).toBe(true); expect(registry.isMimeTypeSupported("application/python")).toBe(true); expect(registry.isMimeTypeSupported("application/x-python")).toBe(true); }); }); describe("parser lookup", () => { it("should find parser by language name", () => { const parser = registry.getParser("javascript"); expect(parser).toBeDefined(); expect(parser?.name).toBe("javascript"); }); it("should find Python parser by language name", () => { const parser = registry.getParser("python"); expect(parser).toBeDefined(); expect(parser?.name).toBe("python"); }); it("should find parser by file extension", () => { const parser = registry.getParserByExtension(".js"); expect(parser).toBeDefined(); expect(parser?.name).toBe("javascript"); }); it("should find Python parser by file extension", () => { const parser = registry.getParserByExtension(".py"); expect(parser).toBeDefined(); expect(parser?.name).toBe("python"); }); it("should find parser by MIME type", () => { const parser = registry.getParserByMimeType("text/javascript"); expect(parser).toBeDefined(); expect(parser?.name).toBe("javascript"); }); it("should find Python parser by MIME type", () => { const parser = registry.getParserByMimeType("text/python"); expect(parser).toBeDefined(); expect(parser?.name).toBe("python"); }); it("should handle case insensitive lookups", () => { expect(registry.getParserByExtension(".JS")).toBeDefined(); expect(registry.getParserByMimeType("TEXT/JAVASCRIPT")).toBeDefined(); expect(registry.getParserByExtension(".PY")).toBeDefined(); expect(registry.getParserByMimeType("TEXT/PYTHON")).toBeDefined(); }); it("should return undefined for unsupported languages", () => { expect(registry.getParser("ruby")).toBeUndefined(); expect(registry.getParserByExtension(".rb")).toBeUndefined(); expect(registry.getParserByMimeType("text/ruby")).toBeUndefined(); }); }); describe("supported checks", () => { it("should correctly identify supported languages", () => { expect(registry.isLanguageSupported("javascript")).toBe(true); expect(registry.isLanguageSupported("python")).toBe(true); expect(registry.isLanguageSupported("ruby")).toBe(false); }); it("should correctly identify supported extensions", () => { expect(registry.isExtensionSupported(".js")).toBe(true); expect(registry.isExtensionSupported(".py")).toBe(true); expect(registry.isExtensionSupported(".rb")).toBe(false); }); it("should correctly identify supported MIME types", () => { expect(registry.isMimeTypeSupported("text/javascript")).toBe(true); expect(registry.isMimeTypeSupported("text/python")).toBe(true); expect(registry.isMimeTypeSupported("text/ruby")).toBe(false); }); }); describe("list methods", () => { it("should return list of supported languages", () => { const languages = registry.getSupportedLanguages(); expect(languages).toContain("javascript"); expect(Array.isArray(languages)).toBe(true); }); it("should return list of supported extensions", () => { const extensions = registry.getSupportedExtensions(); expect(extensions).toContain(".js"); expect(extensions).toContain(".jsx"); expect(Array.isArray(extensions)).toBe(true); }); it("should return list of supported MIME types", () => { const mimeTypes = registry.getSupportedMimeTypes(); expect(mimeTypes).toContain("text/javascript"); expect(mimeTypes).toContain("application/javascript"); expect(Array.isArray(mimeTypes)).toBe(true); }); }); });

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/arabold/docs-mcp-server'

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