chore: 版本 0.1.2 更新 修复嵌套组误跳与 LIKE 缺 %,新增 e2e 脚本
Node.js Build / build (push) Successful in 6s

This commit is contained in:
2026-08-07 16:25:34 +08:00
parent 0ae29e9c09
commit a39e5e1b8e
5 changed files with 297 additions and 5 deletions
+35
View File
@@ -139,6 +139,14 @@ describe('toFindOptionsWhere', () => {
expect(out[0].b.type).toBe('lessThanOrEqual');
expect(out[0].c.type).toBe('like');
});
it('LIKE 自动加 %(与 QueryBuilder 一致)', () => {
const out = toFindOptionsWhere([{ field: 'c', query: 'LIKE', value: 'sqlite' }]);
expect(out[0].c.value).toBe('%sqlite%');
// 已有 % 不再重复加
const out2 = toFindOptionsWhere([{ field: 'c', query: 'LIKE', value: 'sqlite%' }]);
expect(out2[0].c.value).toBe('sqlite%');
});
});
describe('toFindOptionsWhere 深层 OR 嵌套', () => {
@@ -331,6 +339,33 @@ describe('applyToQueryBuilder', () => {
expect(groupExpr).toContain('c = :p3');
});
it('嵌套组作为 children 时不被空值检查误跳(回归: 2026-08-07 e2e 抓出)', () => {
// toTree 输出形态: 顶层 {logic, children}, 内层还有 {logic, children}
const tree = [
{
logic: 'OR',
children: [
{
logic: 'AND',
children: [
{ field: 'a', query: 'EQ', value: 1 },
{ field: 'b', query: 'EQ', value: 2, logic: 'AND' },
],
},
{ field: 'c', query: 'EQ', value: 3, logic: 'OR' },
],
},
];
const qb = createMockQb();
applyToQueryBuilder(qb, tree);
// 内层 AND 组必须被保留(曾因 shouldSkipEmptyValue 误判整组丢失,只剩 c)
const expr = qb.andWhere.mock.calls[0][0];
expect(expr).toContain('a = :p1');
expect(expr).toContain('b = :p2');
expect(expr).toContain('OR');
expect(expr).toContain('c = :p3');
});
it('参数递增 p1/p2', () => {
const qb = createMockQb();
const { parameters } = applyToQueryBuilder(qb, [