Skip to main content
Glama
ContentAssemblyStrategyFactory.test.ts3.14 kB
import { describe, expect, it } from "vitest"; import { createContentAssemblyStrategy, getStrategyName, } from "./ContentAssemblyStrategyFactory"; import { HierarchicalAssemblyStrategy } from "./strategies/HierarchicalAssemblyStrategy"; import { MarkdownAssemblyStrategy } from "./strategies/MarkdownAssemblyStrategy"; describe("ContentAssemblyStrategyFactory", () => { describe("createContentAssemblyStrategy", () => { it("returns MarkdownAssemblyStrategy for undefined MIME type", () => { const strategy = createContentAssemblyStrategy(); expect(strategy).toBeInstanceOf(MarkdownAssemblyStrategy); }); it("returns MarkdownAssemblyStrategy for markdown MIME types", () => { const strategy1 = createContentAssemblyStrategy("text/markdown"); const strategy2 = createContentAssemblyStrategy("text/x-markdown"); expect(strategy1).toBeInstanceOf(MarkdownAssemblyStrategy); expect(strategy2).toBeInstanceOf(MarkdownAssemblyStrategy); }); it("returns MarkdownAssemblyStrategy for HTML MIME types", () => { const strategy1 = createContentAssemblyStrategy("text/html"); const strategy2 = createContentAssemblyStrategy("application/xhtml+xml"); expect(strategy1).toBeInstanceOf(MarkdownAssemblyStrategy); expect(strategy2).toBeInstanceOf(MarkdownAssemblyStrategy); }); it("returns MarkdownAssemblyStrategy for plain text MIME types", () => { const strategy = createContentAssemblyStrategy("text/plain"); expect(strategy).toBeInstanceOf(MarkdownAssemblyStrategy); }); it("returns HierarchicalAssemblyStrategy for source code MIME types", () => { const strategy1 = createContentAssemblyStrategy("text/x-typescript"); const strategy2 = createContentAssemblyStrategy("text/javascript"); const strategy3 = createContentAssemblyStrategy("text/x-python"); expect(strategy1).toBeInstanceOf(HierarchicalAssemblyStrategy); expect(strategy2).toBeInstanceOf(HierarchicalAssemblyStrategy); expect(strategy3).toBeInstanceOf(HierarchicalAssemblyStrategy); }); it("returns HierarchicalAssemblyStrategy for JSON MIME types", () => { const strategy1 = createContentAssemblyStrategy("application/json"); const strategy2 = createContentAssemblyStrategy("text/json"); expect(strategy1).toBeInstanceOf(HierarchicalAssemblyStrategy); expect(strategy2).toBeInstanceOf(HierarchicalAssemblyStrategy); }); it("returns MarkdownAssemblyStrategy for unknown MIME types", () => { const strategy = createContentAssemblyStrategy("application/octet-stream"); expect(strategy).toBeInstanceOf(MarkdownAssemblyStrategy); }); }); describe("getStrategyName", () => { it("returns correct strategy names", () => { expect(getStrategyName()).toBe("MarkdownAssemblyStrategy (default)"); expect(getStrategyName("text/markdown")).toBe("MarkdownAssemblyStrategy"); expect(getStrategyName("text/x-typescript")).toBe("HierarchicalAssemblyStrategy"); expect(getStrategyName("application/json")).toBe("HierarchicalAssemblyStrategy"); }); }); });

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

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