feat(FN-4411): complete Step 2 — add CodeMirror language resolver

Fusion-Task-Id: FN-4411
Fusion-Task-Lineage: d90785f2-b828-4fa0-b330-ede7f3c14349
This commit is contained in:
Fusion
2026-05-14 01:50:42 -07:00
committed by gsxdsm
parent 37fe7731e9
commit 5f9a85253b
2 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
import { describe, expect, it } from "vitest";
import { resolveCodeMirrorLanguage } from "../codemirror-language";
describe("resolveCodeMirrorLanguage", () => {
it.each(["a.js", "a.mjs", "a.cjs", "a.jsx"])("maps %s to javascript", (filePath) => {
expect(resolveCodeMirrorLanguage(filePath)).not.toBeNull();
});
it.each(["a.ts", "a.tsx"])("maps %s to typescript via javascript lang", (filePath) => {
expect(resolveCodeMirrorLanguage(filePath)).not.toBeNull();
});
it("maps css", () => {
expect(resolveCodeMirrorLanguage("styles.css")).not.toBeNull();
});
it("maps json", () => {
expect(resolveCodeMirrorLanguage("data.json")).not.toBeNull();
});
it.each(["README.md", "README.markdown", "README.mdx"])("maps %s to markdown", (filePath) => {
expect(resolveCodeMirrorLanguage(filePath)).not.toBeNull();
});
it("is case-insensitive", () => {
expect(resolveCodeMirrorLanguage("COMPONENT.TSX")).not.toBeNull();
});
it("returns null for unknown extensions", () => {
expect(resolveCodeMirrorLanguage("notes.txt")).toBeNull();
});
it("returns null for missing path", () => {
expect(resolveCodeMirrorLanguage(undefined)).toBeNull();
});
it("returns null for empty path", () => {
expect(resolveCodeMirrorLanguage("")).toBeNull();
});
});