tmagic-editor/packages/editor/tests/unit/editorProps.spec.ts
roymondchen e6cf694a03 feat(editor,stage): 新增 containerHighlightAddOnly 配置
开启后仅新增组件(从组件列表拖入)时才识别容器,画布中拖动已有组件不再被加入其他容器,避免误操作
2026-07-27 17:33:29 +08:00

72 lines
2.9 KiB
TypeScript

/*
* Tencent is pleased to support the open source community by making TMagicEditor available.
*
* Copyright (C) 2025 Tencent.
*/
import { describe, expect, test } from 'vitest';
import { defaultEditorProps } from '@editor/editorProps';
describe('defaultEditorProps', () => {
test('提供 RenderType 与基础布尔默认值', () => {
expect(defaultEditorProps.disabledMultiSelect).toBe(false);
expect(defaultEditorProps.alwaysMultiSelect).toBe(false);
expect(defaultEditorProps.disabledPageFragment).toBe(false);
expect(defaultEditorProps.disabledStageOverlay).toBe(false);
expect(defaultEditorProps.disabledShowSrc).toBe(false);
expect(defaultEditorProps.disabledDataSource).toBe(false);
expect(defaultEditorProps.disabledCodeBlock).toBe(false);
});
test('containerHighlight 默认值', () => {
expect(defaultEditorProps.containerHighlightDuration).toBe(800);
expect(typeof defaultEditorProps.containerHighlightClassName).toBe('string');
expect(defaultEditorProps.containerHighlightAddOnly).toBe(false);
});
test('数组/对象工厂函数返回空值', () => {
expect(defaultEditorProps.componentGroupList()).toEqual([]);
expect(defaultEditorProps.datasourceList()).toEqual([]);
expect(defaultEditorProps.layerContentMenu()).toEqual([]);
expect(defaultEditorProps.stageContentMenu()).toEqual([]);
expect(defaultEditorProps.menu()).toEqual({ left: [], right: [] });
expect(defaultEditorProps.propsConfigs()).toEqual({});
expect(defaultEditorProps.propsValues()).toEqual({});
expect(defaultEditorProps.eventMethodList()).toEqual({});
expect(defaultEditorProps.datasourceValues()).toEqual({});
expect(defaultEditorProps.datasourceConfigs()).toEqual({});
expect(defaultEditorProps.codeOptions()).toEqual({});
});
test('canSelect - 元素含 tmagic-id 且不是 page fragment 容器时可选中', () => {
const div = document.createElement('div');
div.dataset.tmagicId = 'a';
expect(defaultEditorProps.canSelect(div)).toBe(true);
});
test('canSelect - 缺少 id 不可选中', () => {
const div = document.createElement('div');
expect(defaultEditorProps.canSelect(div)).toBe(false);
});
test('canSelect - 是 page fragment 容器不可选中', () => {
const div = document.createElement('div');
div.dataset.tmagicId = 'a';
div.dataset.tmagicPageFragmentContainerId = 'p';
expect(defaultEditorProps.canSelect(div)).toBe(false);
});
test('isContainer - magic-ui-container className', () => {
const div = document.createElement('div');
div.classList.add('magic-ui-container');
expect(defaultEditorProps.isContainer(div)).toBe(true);
const div2 = document.createElement('div');
expect(defaultEditorProps.isContainer(div2)).toBe(false);
});
test('customContentMenu 直接返回原 menus', () => {
const menus = [{ id: 'a' }] as any;
expect(defaultEditorProps.customContentMenu(menus)).toBe(menus);
});
});