test: 新增测试用例:嵌套跨节点表达式

This commit is contained in:
Pan Qiancheng 2026-01-13 15:04:08 +08:00
parent a5cb652468
commit c5456b3fcb
1 changed files with 86 additions and 0 deletions

View File

@ -1835,4 +1835,90 @@ export default (storeGetter: () => DbStore<EntityDict, TestContext>) => {
assert(r1.length === 1, `Deeply nested query failed`);
assert(r1[0].system?.platform?.name === 'test_platform', `Nested projection failed`);
});
it('[1.4.1]嵌套跨节点表达式', async () => {
const store = storeGetter();
const context = new TestContext(store);
await context.begin();
const platformId = v4();
await store.operate('platform', {
id: v4(),
action: 'create',
data: {
id: platformId,
name: 'test2'
}
}, context, {})
await store.operate('application', {
id: v4(),
action: 'create',
data: [{
id: v4(),
name: 'test',
description: 'ttttt',
type: 'web',
system: {
id: v4(),
action: 'create',
data: {
id: v4(),
name: 'systest',
folder: 'systest',
platformId,
}
},
}, {
id: v4(),
name: 'test222',
description: 'ttttt2',
type: 'web',
system: {
id: v4(),
action: 'create',
data: {
id: v4(),
name: 'test2222',
folder: 'test2',
platformId,
}
},
}]
}, context, {});
process.env.NODE_ENV = 'development';
// 查询所有的application过滤条件是application->system.name = application->system->platform.name
const apps = await store.select('application', {
data: {
id: 1,
name: 1,
system: {
id: 1,
name: 1,
platform: {
id: 1,
name: 1,
}
}
},
filter: {
system: {
"#id": 'node-1',
platform: {
$expr: {
$eq: [
{ "#attr": 'name' },
{ "#refId": 'node-1', "#refAttr": 'folder' }
]
}
}
}
}
}, context, {});
process.env.NODE_ENV = undefined;
assert(apps.length === 1 && apps[0].name === 'test222');
await context.commit();
});
}