import type { DmsPersonalFolderFile } from '#/api/x/dms/personalFolder';
|
|
import { describe, expect, it } from 'vitest';
|
|
import { personalFileDisplayName, personalFileExpired, personalFileSize, personalFileTone } from '../personalFolderRules';
|
|
function file(values: Partial<DmsPersonalFolderFile> = {}): DmsPersonalFolderFile {
|
return {
|
createdAt: '2026-09-01T00:00:00Z',
|
id: 'file-1',
|
name: '文档',
|
resourceType: 'DOCUMENT',
|
sourceId: 'source-1',
|
sourceType: 'WORKFLOW',
|
...values,
|
};
|
}
|
|
describe('personal folder file presentation', () => {
|
it('prefers the current file name over document labels', () => {
|
expect(personalFileDisplayName(file({ documentName: '质量标准', fileName: '质量标准.pdf' }))).toBe('质量标准.pdf');
|
expect(personalFileDisplayName(file({ documentName: '质量标准' }))).toBe('质量标准');
|
});
|
|
it('formats stable file sizes', () => {
|
expect(personalFileSize()).toBe('—');
|
expect(personalFileSize(512)).toBe('512 B');
|
expect(personalFileSize(1536)).toBe('1.5 KB');
|
expect(personalFileSize(2 * 1024 ** 2)).toBe('2.0 MB');
|
});
|
|
it('assigns recognizable icon tones by extension', () => {
|
expect(personalFileTone('记录.PDF')).toBe('pdf');
|
expect(personalFileTone('台账.xlsx')).toBe('excel');
|
expect(personalFileTone('照片.png')).toBe('image');
|
expect(personalFileTone('归档.bin')).toBe('file');
|
});
|
|
it('keeps permanent and future files available, and expires elapsed validity', () => {
|
const now = Date.parse('2026-09-16T10:00:00Z');
|
expect(personalFileExpired(file(), now)).toBe(false);
|
expect(personalFileExpired(file({ validTo: '2026-09-16T10:00:01Z' }), now)).toBe(false);
|
expect(personalFileExpired(file({ validTo: '2026-09-16T10:00:00Z' }), now)).toBe(true);
|
expect(personalFileExpired(file({ validTo: '2026-09-16T09:59:59Z' }), now)).toBe(true);
|
});
|
|
it('disables files with malformed validity data', () => {
|
expect(personalFileExpired(file({ validTo: 'not-a-date' }))).toBe(true);
|
});
|
});
|