- 删除根目录重复的 server.js (830行),统一使用模块化的 server/index.js - 修复 ESLint 错误: 移除未使用变量、修复 const 声明、处理未使用参数 - 修复 React Hooks 依赖警告: 使用 useCallback 包装函数并添加正确依赖项 - SQL LIKE 查询添加特殊字符转义,防止注入风险 - 移除 CSS 中重复的 @keyframes spin 定义 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
const {
|
|
isNonEmptyString,
|
|
isValidMonth,
|
|
validateRecordPayload,
|
|
} = require('../utils/validators');
|
|
|
|
describe('Validators', () => {
|
|
describe('isNonEmptyString', () => {
|
|
test('returns true for non-empty string', () => {
|
|
expect(isNonEmptyString('hello')).toBe(true);
|
|
});
|
|
|
|
test('returns false for empty string', () => {
|
|
expect(isNonEmptyString('')).toBe(false);
|
|
});
|
|
|
|
test('returns false for non-string', () => {
|
|
expect(isNonEmptyString(123)).toBe(false);
|
|
expect(isNonEmptyString(null)).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('isValidMonth', () => {
|
|
test('returns true for valid month format', () => {
|
|
expect(isValidMonth('2024-01')).toBe(true);
|
|
});
|
|
|
|
test('returns false for invalid month format', () => {
|
|
expect(isValidMonth('2024-1')).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('validateRecordPayload', () => {
|
|
test('returns null for valid payload', () => {
|
|
const payload = {
|
|
type: 'expense',
|
|
amount: 100,
|
|
category: '餐饮',
|
|
date: '2024-01-15',
|
|
};
|
|
expect(validateRecordPayload(payload)).toBeNull();
|
|
});
|
|
|
|
test('returns error for invalid type', () => {
|
|
const payload = {
|
|
type: 'invalid',
|
|
amount: 100,
|
|
category: '餐饮',
|
|
date: '2024-01-15',
|
|
};
|
|
expect(validateRecordPayload(payload)).toBe('账目类型错误');
|
|
});
|
|
});
|
|
});
|