Skip to main content
Glama

docs-mcp-server

CodeContentSplitter.test.ts2.64 kB
import { describe, expect, it, vi } from "vitest"; import { CodeContentSplitter } from "./CodeContentSplitter"; import type { ContentSplitterOptions } from "./types"; vi.mock("../../utils/logger"); describe("CodeContentSplitter", () => { const options = { chunkSize: 100, } satisfies ContentSplitterOptions; const splitter = new CodeContentSplitter(options); it("should preserve language in code blocks", async () => { const code = `function test() { console.log("Hello"); }`; const markdown = `\`\`\`typescript\n${code}\n\`\`\``; const chunks = await splitter.split(markdown); expect(chunks.length).toBe(1); expect(chunks[0]).toBe(markdown); }); it("should handle code without language", async () => { const code = `const x = 1; const y = 2;`; const markdown = `\`\`\`\n${code}\n\`\`\``; const chunks = await splitter.split(markdown); expect(chunks.length).toBe(1); expect(chunks[0]).toBe(markdown); }); it("should split large code blocks by lines", async () => { const longLine = "console.log('This is a very long line of code that should be split.');"; const code = Array(10).fill(longLine).join("\n"); const markdown = `\`\`\`javascript\n${code}\n\`\`\``; const chunks = await splitter.split(markdown); expect(chunks.length).toBeGreaterThan(1); for (const chunk of chunks) { expect(chunk.length).toBeLessThanOrEqual(options.chunkSize); expect(chunk.startsWith("```javascript\n")).toBe(true); expect(chunk.endsWith("\n```")).toBe(true); } }); it("should handle empty code blocks", async () => { const markdown = "```python\n\n```"; const chunks = await splitter.split(markdown); expect(chunks.length).toBe(1); expect(chunks[0]).toBe(markdown); }); it("should preserve indentation", async () => { const code = `function test() { if (condition) { for (let i = 0; i < 10; i++) { console.log(i); } } }`; const markdown = `\`\`\`typescript\n${code}\n\`\`\``; const chunks = await splitter.split(markdown); for (const chunk of chunks) { // Check if indentation is preserved within the chunk const lines = chunk.split("\n"); for (let i = 1; i < lines.length - 1; i++) { // Skip the first (```typescript) and last (```) lines if (lines[i].includes("if")) { expect(lines[i].startsWith(" ")); } else if (lines[i].includes("for")) { expect(lines[i].startsWith(" ")); } else if (lines[i].includes("console")) { expect(lines[i].startsWith(" ")); } } } }); });

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