20260923230500

This commit is contained in:
oneao committed 2026-09-23 23:05:01 +08:00
1 parent e6935b8fa4
commit 0405cd198a
36 files changed
+3668 -911

No files matched your search

+38 -14
View File
@@ -16,7 +16,7 @@ const {
currentUserId,
loadFieldPower,
loadModulePref,
mergeDefaultViewCode,
mergeDefaultViewCodes,
removeModulePref,
saveModulePref,
viewCodeDelta,
@@ -35,22 +35,46 @@ describe('用户模块偏好', () => {
})
it('个人默认页签:与系统默认一致时不产生覆盖', () => {
expect(viewCodeDelta('all', 'all')).toBeNull()
expect(viewCodeDelta('', 'all')).toBeNull()
expect(viewCodeDelta('pending', 'all')).toEqual({
schemaVersion: 1,
defaultViewCode: 'pending',
expect(viewCodeDelta({}, {})).toBeNull()
expect(viewCodeDelta({ 状态: '' }, { 状态: 'all' })).toBeNull()
expect(viewCodeDelta({ 状态: 'all' }, { 状态: 'all' })).toBeNull()
expect(viewCodeDelta({ 状态: 'pending' }, { 状态: 'all' })).toEqual({
schemaVersion: 2,
defaultViewCodes: { 状态: 'pending' },
})
})
it('个人默认页签必须仍是当前可用页签,否则回落系统默认', () => {
expect(mergeDefaultViewCode('all', { defaultViewCode: 'pending' }, ['all', 'pending'])).toBe(
'pending',
)
expect(mergeDefaultViewCode('all', { defaultViewCode: 'deleted' }, ['all', 'pending'])).toBe(
'all',
)
expect(mergeDefaultViewCode('all', null, ['all'])).toBe('all')
it('个人默认页签只记与系统默认不同的分组', () => {
expect(viewCodeDelta({ 状态: 'pending', 审核状态: 'audited' }, { 状态: 'all' })).toEqual({
schemaVersion: 2,
defaultViewCodes: { 状态: 'pending', 审核状态: 'audited' },
})
// 该分组系统没有默认:个人选了即产生覆盖
expect(viewCodeDelta({ 状态: 'all' }, {})).toEqual({
schemaVersion: 2,
defaultViewCodes: { 状态: 'all' },
})
})
it('个人默认页签必须仍是本组可用页签,否则回落系统默认', () => {
const allowed = { 状态: new Set(['all', 'pending']) }
expect(
mergeDefaultViewCodes({ 状态: 'all' }, { defaultViewCodes: { 状态: 'pending' } }, allowed),
).toEqual({ 状态: 'pending' })
expect(
mergeDefaultViewCodes({ 状态: 'all' }, { defaultViewCodes: { 状态: 'deleted' } }, allowed),
).toEqual({ 状态: 'all' })
expect(mergeDefaultViewCodes({ 状态: 'all' }, null, allowed)).toEqual({ 状态: 'all' })
})
it('兼容 v1 个人层:单一 defaultViewCode 视作默认组的覆盖', () => {
const allowed = { '': new Set(['all', 'pending']) }
expect(mergeDefaultViewCodes({ '': 'all' }, { defaultViewCode: 'pending' }, allowed)).toEqual({
'': 'pending',
})
expect(mergeDefaultViewCodes({ '': 'all' }, { defaultViewCode: 'deleted' }, allowed)).toEqual({
'': 'all',
})
})
it('读取个人偏好时按用户/模块/schema 类型过滤,解析失败返回 null', async () => {