This commit is contained in:
@@ -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, [
|
||||
|
||||
Reference in New Issue
Block a user