Files
MyGoNavi/frontend/src/utils/sidebarTableMetadata.test.ts
Syngnat 9b5e785d67 feat(sidebar): 支持表元数据拖拽排序
- 设置中心元数据项支持拖拽调整展示顺序
- 新增 sidebarTableMetadataFieldOrder 持久化并按顺序渲染
- 保持表注释旧配置迁移与元数据开关兼容
- 补充排序、持久化和侧栏渲染回归测试
2026-07-02 15:19:44 +08:00

50 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
applySidebarTableMetadataFieldOrder,
resolveSidebarTableMetadataFieldOrder,
resolveSidebarTableMetadataFields,
sanitizeSidebarTableMetadataFields,
setSidebarTableMetadataFieldSelected,
} from './sidebarTableMetadata';
describe('sidebarTableMetadata', () => {
it('keeps the default sidebar table metadata to row counts when no value is provided', () => {
expect(resolveSidebarTableMetadataFields(undefined, false)).toEqual(['rows']);
});
it('migrates the legacy sidebar table comment toggle into the metadata field list', () => {
expect(resolveSidebarTableMetadataFields(undefined, true)).toEqual(['comment', 'rows']);
});
it('preserves an explicit empty metadata selection while filtering unknown fields', () => {
expect(sanitizeSidebarTableMetadataFields([], [])).toEqual([]);
expect(sanitizeSidebarTableMetadataFields(['updatedAt', 'unknown', 'rows'], [])).toEqual(['updatedAt', 'rows']);
});
it('toggles metadata fields while preserving the configured order', () => {
expect(setSidebarTableMetadataFieldSelected(['rows'], 'size', true)).toEqual(['rows', 'size']);
expect(setSidebarTableMetadataFieldSelected(['comment', 'rows', 'size'], 'comment', false)).toEqual(['rows', 'size']);
expect(setSidebarTableMetadataFieldSelected(
['rows'],
'size',
true,
['size', 'comment', 'rows', 'createdAt', 'updatedAt'],
)).toEqual(['size', 'rows']);
});
it('resolves a complete metadata field order and applies it to selected fields', () => {
expect(resolveSidebarTableMetadataFieldOrder(['updatedAt', 'rows', 'unknown', 'rows'])).toEqual([
'updatedAt',
'rows',
'comment',
'size',
'createdAt',
]);
expect(applySidebarTableMetadataFieldOrder(
['comment', 'rows', 'updatedAt'],
['updatedAt', 'rows', 'comment', 'size', 'createdAt'],
)).toEqual(['updatedAt', 'rows', 'comment']);
});
});