57 lines · 2.4 KB · TypeScript
RawDownload
import { assert, describe, it } from "vite-plus/test"; import {  hasSpecificPierreIconForFileName,  resolvePierreIconForEntry,  syntheticFileNameForLanguageId,  T3_PIERRE_ICONS,} from "./pierre-icons"; describe("Pierre file icons", () => {  it("uses Pierre exact filename and complete-set extension mappings", () => {    assert.equal(resolvePierreIconForEntry("Dockerfile", "file")?.token, "docker");    assert.equal(resolvePierreIconForEntry("src/Button.tsx", "file")?.token, "react");    assert.equal(resolvePierreIconForEntry("vite.config.ts", "file")?.token, "vite");  });   it("extends Pierre with T3-specific exact filename icons", () => {    assert.equal(      resolvePierreIconForEntry("package.json", "file")?.name,      "t3-file-icon-package-json",    );    assert.equal(      resolvePierreIconForEntry("config/tsconfig.json", "file")?.name,      "t3-file-icon-tsconfig",    );    assert.equal(resolvePierreIconForEntry("AGENTS.md", "file")?.name, "t3-file-icon-agents");    assert.equal(resolvePierreIconForEntry("CLAUDE.md", "file")?.name, "t3-file-icon-claude");    assert.equal(resolvePierreIconForEntry("README.md", "file")?.name, "t3-file-icon-readme");    assert.equal(resolvePierreIconForEntry("pnpm-lock.yaml", "file")?.name, "t3-file-icon-pnpm");    assert.equal(      resolvePierreIconForEntry("pnpm-workspace.yaml", "file")?.name,      "t3-file-icon-pnpm",    );  });   it("ships every custom icon referenced by the extended resolver", () => {    const customIconNames = new Set(Object.values(T3_PIERRE_ICONS.byFileName));    for (const iconName of customIconNames) {      assert.include(T3_PIERRE_ICONS.spriteSheet, `id="${iconName}"`);    }  });   it("uses the Pierre default icon for unknown file types", () => {    assert.equal(resolvePierreIconForEntry("artifact.unknown-ext", "file")?.token, "default");    assert.isFalse(hasSpecificPierreIconForFileName("artifact.unknown-ext"));  });   it("leaves directory rendering to the shared folder fallback", () => {    assert.isNull(resolvePierreIconForEntry("packages/client-runtime", "directory"));  });   it("normalizes common markdown fence language aliases", () => {    assert.equal(syntheticFileNameForLanguageId("typescript"), "file.ts");    assert.equal(syntheticFileNameForLanguageId("shellscript"), "file.sh");    assert.equal(syntheticFileNameForLanguageId("python"), "file.py");  });});