mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-13 20:27:19 +00:00
fix: Improve code and simplify logic (#2651)
* fix: Improve code and simplify logic
This commit is contained in:
parent
394b56d0ce
commit
27e914cece
@ -440,23 +440,23 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private initialChildren(children: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined): IPublicTypeNodeData[] {
|
private initialChildren(children: IPublicTypeNodeData | IPublicTypeNodeData[] | undefined): IPublicTypeNodeData[] {
|
||||||
// FIXME! this is dirty code
|
const { initialChildren } = this.componentMeta.advanced;
|
||||||
|
|
||||||
if (children == null) {
|
if (children == null) {
|
||||||
const { initialChildren } = this.componentMeta.advanced;
|
|
||||||
if (initialChildren) {
|
if (initialChildren) {
|
||||||
if (typeof initialChildren === 'function') {
|
if (typeof initialChildren === 'function') {
|
||||||
return initialChildren(this.internalToShellNode()!) || [];
|
return initialChildren(this.internalToShellNode()!) || [];
|
||||||
}
|
}
|
||||||
return initialChildren;
|
return initialChildren;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (Array.isArray(children)) {
|
|
||||||
return children;
|
|
||||||
} else if (children) {
|
|
||||||
return [children];
|
|
||||||
} else {
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(children)) {
|
||||||
|
return children;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [children];
|
||||||
}
|
}
|
||||||
|
|
||||||
isContainer(): boolean {
|
isContainer(): boolean {
|
||||||
@ -1094,7 +1094,7 @@ export class Node<Schema extends IPublicTypeNodeSchema = IPublicTypeNodeSchema>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否可执行某action
|
* 是否可执行某 action
|
||||||
*/
|
*/
|
||||||
canPerformAction(actionName: string): boolean {
|
canPerformAction(actionName: string): boolean {
|
||||||
const availableActions =
|
const availableActions =
|
||||||
|
|||||||
@ -54,7 +54,60 @@ describe('Node 方法测试', () => {
|
|||||||
project = null;
|
project = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
it('condition group', () => {});
|
// Case 1: When children is null
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const result = node.initialChildren(null);
|
||||||
|
// 预期结果是一个空数组
|
||||||
|
expect(result).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Case 2: When children is undefined
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const result = node.initialChildren(undefined);
|
||||||
|
// 预期结果是一个空数组
|
||||||
|
expect(result).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Case 3: When children is array
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const childrenArray = [{ id: 1, name: 'Child 1' }, { id: 2, name: 'Child 2' }];
|
||||||
|
const result = node.initialChildren(childrenArray);
|
||||||
|
// 预期结果是一个数组
|
||||||
|
expect(result).toEqual(childrenArray);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Case 4: When children is not null and not an array
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const childObject = { id: 1, name: 'Child 1' };
|
||||||
|
const result = node.initialChildren(childObject);
|
||||||
|
// 预期结果是一个数组
|
||||||
|
expect(result).toEqual([childObject]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Case 5: When children 0
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const childObject = 0;
|
||||||
|
const result = node.initialChildren(childObject);
|
||||||
|
// 预期结果是一个数组
|
||||||
|
expect(result).toEqual([0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Case 6: When children false
|
||||||
|
test('initialChildren returns result of initialChildren function when children is null ', () => {
|
||||||
|
const node = new Node(doc, { componentName: 'Button', props: { a: 1 } });
|
||||||
|
const childObject = false;
|
||||||
|
const result = node.initialChildren(childObject);
|
||||||
|
// 预期结果是一个数组
|
||||||
|
expect(result).toEqual([false]);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('condition group', () => { });
|
||||||
|
|
||||||
it('getExtraProp / setExtraProp', () => {
|
it('getExtraProp / setExtraProp', () => {
|
||||||
const firstBtn = doc.getNode('node_k1ow3cbn')!;
|
const firstBtn = doc.getNode('node_k1ow3cbn')!;
|
||||||
@ -367,7 +420,7 @@ describe('Node 方法测试', () => {
|
|||||||
expect(mockFn).not.toHaveBeenCalled();
|
expect(mockFn).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('addSlot / unlinkSlot / removeSlot', () => {});
|
it('addSlot / unlinkSlot / removeSlot', () => { });
|
||||||
|
|
||||||
it('setProps', () => {
|
it('setProps', () => {
|
||||||
const firstBtn = doc.getNode('node_k1ow3cbn')!;
|
const firstBtn = doc.getNode('node_k1ow3cbn')!;
|
||||||
@ -407,7 +460,7 @@ describe('Node 方法测试', () => {
|
|||||||
designer.createComponentMeta(btnMetadata);
|
designer.createComponentMeta(btnMetadata);
|
||||||
const btn = doc.getNode('node_k1ow3cbn');
|
const btn = doc.getNode('node_k1ow3cbn');
|
||||||
// 从 componentMeta 中获取到 title 值
|
// 从 componentMeta 中获取到 title 值
|
||||||
expect(btn.title).toEqual({ type: 'i18n', 'zh-CN': '按钮', 'en-US': 'Button' } );
|
expect(btn.title).toEqual({ type: 'i18n', 'zh-CN': '按钮', 'en-US': 'Button' });
|
||||||
// 从 extraProp 中获取值
|
// 从 extraProp 中获取值
|
||||||
btn.setExtraProp('title', 'hello button');
|
btn.setExtraProp('title', 'hello button');
|
||||||
expect(btn.title).toBe('hello button');
|
expect(btn.title).toBe('hello button');
|
||||||
@ -546,7 +599,7 @@ describe('Node 方法测试', () => {
|
|||||||
expect(comparePosition(firstBtn, firstCard)).toBe(PositionNO.BeforeOrAfter);
|
expect(comparePosition(firstBtn, firstCard)).toBe(PositionNO.BeforeOrAfter);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('getZLevelTop', () => {});
|
it('getZLevelTop', () => { });
|
||||||
it('propsData', () => {
|
it('propsData', () => {
|
||||||
expect(new Node(doc, { componentName: 'Leaf' }).propsData).toBeNull();
|
expect(new Node(doc, { componentName: 'Leaf' }).propsData).toBeNull();
|
||||||
expect(new Node(doc, { componentName: 'Fragment' }).propsData).toBeNull();
|
expect(new Node(doc, { componentName: 'Fragment' }).propsData).toBeNull();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user