mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-07-08 06:28:37 +00:00
80 lines
2.4 KiB
TypeScript
80 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "vitest"
|
|
|
|
import { parseDesignSystemConfig } from "./parse-config"
|
|
|
|
describe("parseDesignSystemConfig", () => {
|
|
it("defaults pointer to false when omitted", () => {
|
|
const result = parseDesignSystemConfig(
|
|
new URLSearchParams(
|
|
"base=base&style=sera&baseColor=taupe&theme=taupe&iconLibrary=lucide&font=noto-sans&rtl=false&menuAccent=subtle&menuColor=default&radius=default&fontHeading=playfair-display&template=vite&track=1"
|
|
)
|
|
)
|
|
|
|
expect(result.success).toBe(true)
|
|
if (!result.success) {
|
|
throw new Error(result.error)
|
|
}
|
|
|
|
expect(result.data.pointer).toBe(false)
|
|
})
|
|
|
|
it("parses pointer=true", () => {
|
|
const result = parseDesignSystemConfig(
|
|
new URLSearchParams(
|
|
"base=base&style=sera&baseColor=taupe&theme=taupe&iconLibrary=lucide&font=noto-sans&rtl=false&pointer=true&menuAccent=subtle&menuColor=default&radius=default&fontHeading=playfair-display&template=vite&track=1"
|
|
)
|
|
)
|
|
|
|
expect(result.success).toBe(true)
|
|
if (!result.success) {
|
|
throw new Error(result.error)
|
|
}
|
|
|
|
expect(result.data.pointer).toBe(true)
|
|
})
|
|
|
|
it("defaults missing chartColor from the selected theme", () => {
|
|
const result = parseDesignSystemConfig(
|
|
new URLSearchParams(
|
|
"base=base&style=sera&baseColor=taupe&theme=taupe&iconLibrary=lucide&font=noto-sans&rtl=false&menuAccent=subtle&menuColor=default&radius=default&fontHeading=playfair-display&template=vite&track=1"
|
|
)
|
|
)
|
|
|
|
expect(result.success).toBe(true)
|
|
if (!result.success) {
|
|
throw new Error(result.error)
|
|
}
|
|
|
|
expect(result.data.chartColor).toBe("taupe")
|
|
})
|
|
|
|
it("honors explicit fontHeading and chartColor overrides when a preset is present", () => {
|
|
const result = parseDesignSystemConfig(
|
|
new URLSearchParams(
|
|
"preset=a0&fontHeading=playfair-display&chartColor=emerald"
|
|
)
|
|
)
|
|
|
|
expect(result.success).toBe(true)
|
|
if (!result.success) {
|
|
throw new Error(result.error)
|
|
}
|
|
|
|
expect(result.data.fontHeading).toBe("playfair-display")
|
|
expect(result.data.chartColor).toBe("emerald")
|
|
})
|
|
|
|
it("keeps pointer outside preset decoding", () => {
|
|
const result = parseDesignSystemConfig(
|
|
new URLSearchParams("preset=a0&pointer=true")
|
|
)
|
|
|
|
expect(result.success).toBe(true)
|
|
if (!result.success) {
|
|
throw new Error(result.error)
|
|
}
|
|
|
|
expect(result.data.pointer).toBe(true)
|
|
})
|
|
})
|