mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-16 03:18:11 +00:00
489 lines
9.9 KiB
TypeScript
489 lines
9.9 KiB
TypeScript
import '../fixtures/window';
|
|
import { Node, Designer, getConvertedExtraKey } from '@ali/lowcode-designer';
|
|
import { Editor, globalContext } from '@ali/lowcode-editor-core';
|
|
import { initNodeReducer } from '../../src/props-reducers/init-node-reducer';
|
|
import formSchema from '../fixtures/schema/form';
|
|
|
|
describe('initNodeReducer 测试', () => {
|
|
it('initNodeReducer 测试 - 有 initials', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [
|
|
{
|
|
name: 'propA',
|
|
initial: () => '111',
|
|
},
|
|
{
|
|
name: 'propB',
|
|
initial: () => '111',
|
|
},
|
|
{
|
|
name: 'propC',
|
|
initial: () => {
|
|
throw new Error('111');
|
|
},
|
|
},
|
|
{
|
|
name: 'propD',
|
|
initial: () => '111',
|
|
},
|
|
{
|
|
name: 'propE',
|
|
initial: () => '111',
|
|
},
|
|
{
|
|
name: 'propF',
|
|
initial: () => '111',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
prototype: {
|
|
options: {
|
|
configure: [
|
|
{
|
|
name: 'propF',
|
|
setter: {
|
|
type: {
|
|
displayName: 'I18nSetter',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
settingEntry: {
|
|
getProp(propName) {
|
|
return { name: propName };
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propA: '111',
|
|
propC: '222',
|
|
propD: {
|
|
type: 'JSExpression',
|
|
mock: '111',
|
|
},
|
|
propE: {
|
|
type: 'variable',
|
|
value: '111',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propA: '111',
|
|
propB: '111',
|
|
propC: '222',
|
|
propD: {
|
|
type: 'JSExpression',
|
|
mock: '111',
|
|
},
|
|
propE: {
|
|
type: 'variable',
|
|
value: '111',
|
|
},
|
|
propF: {
|
|
type: 'i18n',
|
|
use: 'zh_CN',
|
|
zh_CN: '111',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('filterReducer 测试 - 无 initials', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {},
|
|
};
|
|
},
|
|
},
|
|
settingEntry: {
|
|
getProp(propName) {
|
|
return { name: propName };
|
|
},
|
|
},
|
|
};
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propA: 111,
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propA: 111,
|
|
});
|
|
});
|
|
|
|
describe('i18n', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [
|
|
{
|
|
name: 'propF',
|
|
initial: () => 111,
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
},
|
|
prototype: {
|
|
options: {
|
|
configure: [
|
|
{
|
|
name: 'propF',
|
|
setter: {
|
|
type: {
|
|
displayName: 'I18nSetter',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
|
|
it('isI18NObject(ov): true', () => {
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'i18n',
|
|
zh_CN: '222',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'i18n',
|
|
zh_CN: '222',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isJSExpression(ov): true', () => {
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'JSExpression',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'JSExpression',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isJSBlock(ov): true', () => {
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'JSBlock',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'JSBlock',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isJSSlot(ov): true', () => {
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'JSSlot',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'JSSlot',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isVariable(ov): true', () => {
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isI18NObject(v): false', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [
|
|
{
|
|
name: 'propF',
|
|
initial: () => 111,
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
prototype: {
|
|
options: {
|
|
configure: [
|
|
{
|
|
name: 'propF',
|
|
setter: {
|
|
type: {
|
|
displayName: 'I18nSetter',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('isI18NObject(v): false', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [{
|
|
name: 'propF',
|
|
initial: () => 111,
|
|
}],
|
|
},
|
|
};
|
|
},
|
|
},
|
|
prototype: {
|
|
options: {
|
|
configure: [
|
|
{
|
|
name: 'propF',
|
|
setter: {
|
|
type: {
|
|
displayName: 'I18nSetter',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'variable',
|
|
value: 'state.a',
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
it('成功使用兼容后的 i18n 对象', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [{
|
|
name: 'propF',
|
|
initial: () => {
|
|
return {
|
|
type: 'i18n',
|
|
use: 'zh_CN',
|
|
zh_CN: '111',
|
|
};
|
|
},
|
|
}],
|
|
},
|
|
};
|
|
},
|
|
prototype: {
|
|
options: {
|
|
configure: [
|
|
{
|
|
name: 'propF',
|
|
setter: {
|
|
type: {
|
|
displayName: 'I18nSetter',
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
expect(
|
|
initNodeReducer(
|
|
{
|
|
propF: '111',
|
|
},
|
|
mockNode,
|
|
),
|
|
).toEqual({
|
|
propF: {
|
|
type: 'i18n',
|
|
use: 'zh_CN',
|
|
zh_CN: '111',
|
|
},
|
|
});
|
|
});
|
|
|
|
describe('fieldId', () => {
|
|
const mockNode = {
|
|
componentMeta: {
|
|
getMetadata() {
|
|
return {
|
|
experimental: {
|
|
initials: [
|
|
{
|
|
name: 'propA',
|
|
initial: () => '111',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
},
|
|
settingEntry: {
|
|
getProp(propName) {
|
|
return { name: propName };
|
|
},
|
|
},
|
|
props: {
|
|
has() {
|
|
return false;
|
|
},
|
|
add() {},
|
|
},
|
|
};
|
|
const editor = new Editor();
|
|
globalContext.register(editor, Editor);
|
|
const designer = new Designer({ editor });
|
|
editor.set('designer', designer);
|
|
designer.project.open(formSchema);
|
|
it('fieldId - 已存在', () => {
|
|
expect(initNodeReducer({
|
|
propA: '111',
|
|
fieldId: 'form',
|
|
}, mockNode)).toEqual({
|
|
propA: '111',
|
|
fieldId: undefined,
|
|
});
|
|
});
|
|
|
|
it('fieldId - 已存在,但有全局关闭标识', () => {
|
|
window.__disable_unique_id_checker__ = true;
|
|
expect(initNodeReducer({
|
|
propA: '111',
|
|
fieldId: 'form',
|
|
}, mockNode)).toEqual({
|
|
propA: '111',
|
|
fieldId: 'form',
|
|
});
|
|
});
|
|
});
|
|
});
|