This commit is contained in:
2026-10-21 14:42:59 +08:00
commit 954236d3f9
399 changed files with 85885 additions and 0 deletions

50
tests/unit/smoke.test.ts Normal file
View File

@@ -0,0 +1,50 @@
// tests/unit/smoke.test.ts
//
// Smoke:验证 vitest setup + module resolution 走通 —— 拉几个常用工具 import,
// 保证 build 链路路径别名 / tsconfig 投影都对得上。真正的业务契约由各
// 专题 .test.ts 文件守,这里只查 import 能解析 + 基础形状不漂。
import { describe, expect, it } from 'vitest';
import { errMsg, AppError, ValidationError } from '../../src/main/utils/error';
import { normalizeAndValidateNoteFilename } from '../../src/main/notes/filename-validator';
import { readMovePayload, writeMovePayload, hasMovePayload } from '../../src/renderer/src/lib/folder-dnd';
describe('smoke', () => {
it('error util 导出正常', () => {
expect(typeof errMsg).toBe('function');
expect(new AppError('NOT_FOUND', 'x').code).toBe('NOT_FOUND');
});
it('filename-validator 抛空字符串 ValidationError,合法名补 .md', () => {
expect(() => normalizeAndValidateNoteFilename('', 'filename')).toThrow(ValidationError);
expect(normalizeAndValidateNoteFilename('hello', 'filename')).toBe('hello.md');
});
it('folder-dnd 序列化 + 反序列化 round-trip', () => {
const types: string[] = [];
const store = new Map<string, string>();
const dt = {
get types() {
return types;
},
get effectAllowed() {
return 'move' as const;
},
set effectAllowed(_v: 'move' | 'copy' | 'none' | 'link') {
/* ignore */
},
setData(mime: string, val: string) {
if (!store.has(mime)) types.push(mime);
store.set(mime, val);
},
getData(mime: string) {
return store.get(mime) ?? '';
},
} as unknown as DataTransfer;
writeMovePayload(dt, { type: 'items', kind: 'note', ids: ['a', 'b'], relPaths: [] });
expect(hasMovePayload(dt)).toBe(true);
const payload = readMovePayload(dt);
expect(payload).not.toBeNull();
expect(payload?.kind).toBe('note');
expect(payload?.ids).toEqual(['a', 'b']);
});
});