刘光辉
3 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);
  });
});