snapshot of https://github.com/shadcn-ui/ui.git (main, 2026-09-15; blobs > 131072B omitted)
This commit is contained in:
58
apps/v4/registry/calendar.test.ts
Normal file
58
apps/v4/registry/calendar.test.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { readdirSync, readFileSync } from "node:fs"
|
||||
import { dirname, join, relative, resolve } from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const registryDir = dirname(fileURLToPath(import.meta.url))
|
||||
const appDir = resolve(registryDir, "..")
|
||||
|
||||
function findFiles(dir: string, fileName: string): string[] {
|
||||
return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
|
||||
const path = join(dir, entry.name)
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
return findFiles(path, fileName)
|
||||
}
|
||||
|
||||
return entry.name === fileName ? [path] : []
|
||||
})
|
||||
}
|
||||
|
||||
describe("calendar registry items", () => {
|
||||
const sourceFiles = [
|
||||
...findFiles(resolve(appDir, "registry/bases"), "calendar.tsx"),
|
||||
...findFiles(resolve(appDir, "registry/new-york-v4"), "calendar.tsx"),
|
||||
...findFiles(resolve(appDir, "styles"), "calendar.tsx"),
|
||||
]
|
||||
// Only the frozen legacy styles are checked here: they have no .tsx source
|
||||
// and are maintained by editing the published JSON directly in git. All
|
||||
// other styles are generated from the sources checked above.
|
||||
const publicFiles = [
|
||||
...findFiles(resolve(appDir, "public/r/styles/default"), "calendar.json"),
|
||||
...findFiles(resolve(appDir, "public/r/styles/new-york"), "calendar.json"),
|
||||
]
|
||||
|
||||
it.each(sourceFiles.map((file) => [relative(appDir, file), file]))(
|
||||
"%s uses the react-day-picker v10 month_grid class key",
|
||||
(_, file) => {
|
||||
const source = readFileSync(file, "utf-8")
|
||||
|
||||
expect(source).not.toContain('table: "w-full border-collapse"')
|
||||
expect(source).toContain(
|
||||
'month_grid: cn("w-full border-collapse", defaultClassNames.month_grid)'
|
||||
)
|
||||
}
|
||||
)
|
||||
|
||||
it.each(publicFiles.map((file) => [relative(appDir, file), file]))(
|
||||
"%s publishes the react-day-picker v10 month_grid class key",
|
||||
(_, file) => {
|
||||
const source = readFileSync(file, "utf-8")
|
||||
|
||||
expect(source).not.toContain('table: \\"w-full border-collapse\\"')
|
||||
expect(source).toContain(
|
||||
'month_grid: cn(\\"w-full border-collapse\\", defaultClassNames.month_grid)'
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user