mirror of
https://github.com/iflytek/skillhub.git
synced 2026-09-27 01:23:30 +00:00
变更摘要: - 将前端测试共置到 web/src,保留并迁移 app 样式相关用例 - 为 pages、features、shared UI 与 hooks 补齐大范围 Vitest 覆盖 - 强化 governance、file preview、namespace header 与 API client 的关键分支测试 - 重新验证 pnpm run test 与 pnpm run typecheck,当前均已通过 关键文件: - web/src/pages/dashboard/governance.test.ts - web/src/features/governance/governance-inbox.test.ts - web/src/features/skill/file-preview-dialog.test.ts - web/src/features/namespace/namespace-header.test.ts - web/src/api/client.test.ts
62 lines
2 KiB
TypeScript
62 lines
2 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { buttonVariants } from './button'
|
|
|
|
describe('buttonVariants', () => {
|
|
it('applies default variant and size classes', () => {
|
|
const classes = buttonVariants()
|
|
expect(classes).toContain('bg-brand-gradient')
|
|
expect(classes).toContain('h-10')
|
|
expect(classes).toContain('px-5')
|
|
})
|
|
|
|
it('applies destructive variant classes', () => {
|
|
const classes = buttonVariants({ variant: 'destructive' })
|
|
expect(classes).toContain('bg-destructive')
|
|
})
|
|
|
|
it('applies outline variant classes', () => {
|
|
const classes = buttonVariants({ variant: 'outline' })
|
|
expect(classes).toContain('border')
|
|
expect(classes).toContain('bg-transparent')
|
|
})
|
|
|
|
it('applies secondary variant classes', () => {
|
|
const classes = buttonVariants({ variant: 'secondary' })
|
|
expect(classes).toContain('bg-secondary')
|
|
})
|
|
|
|
it('applies ghost variant classes', () => {
|
|
const classes = buttonVariants({ variant: 'ghost' })
|
|
expect(classes).toContain('hover:bg-secondary')
|
|
})
|
|
|
|
it('applies link variant classes', () => {
|
|
const classes = buttonVariants({ variant: 'link' })
|
|
expect(classes).toContain('underline-offset-4')
|
|
})
|
|
|
|
it('applies sm size classes', () => {
|
|
const classes = buttonVariants({ size: 'sm' })
|
|
expect(classes).toContain('h-8')
|
|
expect(classes).toContain('text-xs')
|
|
})
|
|
|
|
it('applies lg size classes', () => {
|
|
const classes = buttonVariants({ size: 'lg' })
|
|
expect(classes).toContain('h-12')
|
|
expect(classes).toContain('text-base')
|
|
})
|
|
|
|
it('applies icon size classes', () => {
|
|
const classes = buttonVariants({ size: 'icon' })
|
|
expect(classes).toContain('h-10')
|
|
expect(classes).toContain('w-10')
|
|
})
|
|
|
|
it('always includes base focus-visible and disabled styles', () => {
|
|
const classes = buttonVariants()
|
|
expect(classes).toContain('focus-visible:outline-none')
|
|
expect(classes).toContain('disabled:pointer-events-none')
|
|
expect(classes).toContain('disabled:opacity-50')
|
|
})
|
|
})
|