flnxi-Wu/lib/__tests__/author-works.test.ts
WuYongJie 63ec6b7dfb fix: 修复排行榜按钮消失、tag排序和输入框浅色模式问题
1. 排行榜悬浮窗关闭后小按钮消失问题
   - 修复面板居中模式关闭时按钮位置错误
   - 保存并恢复按钮的居中状态

2. 首页tag按钮按素材数量排序
   - 添加按素材数量降序排序逻辑

3. 上传弹窗输入框浅色模式文字不可见
   - 添加 text-slate-900 确保浅色模式下文字可见
   - 添加 placeholder 样式确保占位符正确显示
2025-12-14 21:41:29 +08:00

118 lines
3.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 作者作品功能测试
*
* **Feature: bugfix-dec-2025**
* **Property 9: 作者作品列表过滤**
* **Validates: Requirements 6.1, 6.2, 6.3**
*
* @jest-environment node
*/
describe('作者作品页面设计验证', () => {
/**
* Property 9: 作者作品列表过滤
* *For any* 作者名,应该能够查看该作者的所有作品
* **Feature: bugfix-dec-2025, Property 9: 作者作品列表过滤**
* **Validates: Requirements 6.3**
*/
describe('Property 9: 作者作品列表过滤', () => {
it('作者作品页面路由应该正确', () => {
// 路由设计验证:/author/[authorName]
const routePattern = '/author/[authorName]'
expect(routePattern).toContain('[authorName]')
})
it('作者名应该进行URL编码', () => {
const authorName = '张三'
const encodedName = encodeURIComponent(authorName)
expect(encodedName).toBe('%E5%BC%A0%E4%B8%89')
// 解码后应该还原
expect(decodeURIComponent(encodedName)).toBe(authorName)
})
it('API应该支持按作者名筛选素材', () => {
// API设计验证:GET /api/materials?authorName=xxx
const apiEndpoint = '/api/materials'
const queryParams = { authorName: '张三', page: 1, pageSize: 20 }
expect(apiEndpoint).toBe('/api/materials')
expect(queryParams).toHaveProperty('authorName')
expect(queryParams).toHaveProperty('page')
expect(queryParams).toHaveProperty('pageSize')
})
})
describe('作者统计信息', () => {
it('应该显示作者的作品总数', () => {
const authorStats = {
name: '张三',
totalMaterials: 10,
totalDownloads: 100,
totalLikes: 50,
}
expect(authorStats).toHaveProperty('totalMaterials')
expect(authorStats.totalMaterials).toBeGreaterThanOrEqual(0)
})
it('应该显示作者的总下载数', () => {
const authorStats = {
name: '张三',
totalMaterials: 10,
totalDownloads: 100,
totalLikes: 50,
}
expect(authorStats).toHaveProperty('totalDownloads')
expect(authorStats.totalDownloads).toBeGreaterThanOrEqual(0)
})
it('应该显示作者的总点赞数', () => {
const authorStats = {
name: '张三',
totalMaterials: 10,
totalDownloads: 100,
totalLikes: 50,
}
expect(authorStats).toHaveProperty('totalLikes')
expect(authorStats.totalLikes).toBeGreaterThanOrEqual(0)
})
})
})
describe('榜单作者链接验证', () => {
it('榜单中的作者名应该是可点击的链接', () => {
// 设计验证:Link组件包裹作者名
const linkHref = '/author/张三'
expect(linkHref).toContain('/author/')
})
it('素材预览弹窗中的作者名应该是可点击的链接', () => {
// 设计验证:Link组件包裹作者名
const linkHref = '/author/张三'
expect(linkHref).toContain('/author/')
})
it('链接应该正确编码特殊字符', () => {
const authorName = '张三 & 李四'
const encodedHref = `/author/${encodeURIComponent(authorName)}`
expect(encodedHref).toBe('/author/%E5%BC%A0%E4%B8%89%20%26%20%E6%9D%8E%E5%9B%9B')
})
})
describe('空状态处理', () => {
it('当作者没有作品时应该显示空状态', () => {
const materials: any[] = []
const isEmpty = materials.length === 0
expect(isEmpty).toBe(true)
})
it('空状态应该有友好的提示信息', () => {
const emptyMessage = '该作者暂无作品'
expect(emptyMessage).toBeTruthy()
})
})