mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-12 11:20:11 +00:00
182 lines
5.3 KiB
TypeScript
182 lines
5.3 KiB
TypeScript
import '../fixtures/window';
|
|
import { Editor } from '@alilc/lowcode-editor-core';
|
|
import { Project } from '../../src/project/project';
|
|
import { DocumentModel } from '../../src/document/document-model';
|
|
import { Designer } from '../../src/designer/designer';
|
|
import formSchema from '../fixtures/schema/form';
|
|
import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory';
|
|
|
|
describe.only('Project 方法测试', () => {
|
|
let editor: Editor;
|
|
let designer: Designer;
|
|
let project: Project;
|
|
let doc: DocumentModel;
|
|
|
|
beforeEach(() => {
|
|
editor = new Editor();
|
|
designer = new Designer({ editor, shellModelFactory });
|
|
project = designer.project;
|
|
doc = new DocumentModel(project, formSchema);
|
|
});
|
|
|
|
afterEach(() => {
|
|
project.unload();
|
|
designer.purge();
|
|
editor = null;
|
|
designer = null;
|
|
project = null;
|
|
});
|
|
|
|
it('simulator', () => {
|
|
const mockSimulator = { isSimulator: true, a: 1 };
|
|
project.mountSimulator(mockSimulator);
|
|
expect(project.simulator).toEqual(mockSimulator);
|
|
});
|
|
|
|
it('config / get / set', () => {
|
|
const mockConfig = { version: '1.0.0', componentsTree: [] };
|
|
project.config = mockConfig;
|
|
expect(project.config).toEqual(mockConfig);
|
|
const mockConfig2 = { version: '2.0.0', componentsTree: [] };
|
|
project.set('config', mockConfig2);
|
|
expect(project.get('config')).toEqual(mockConfig2);
|
|
|
|
project.set('version', '2.0.0');
|
|
expect(project.get('version')).toBe('2.0.0');
|
|
});
|
|
|
|
it('load', () => {
|
|
project.load({
|
|
componentsTree: [{
|
|
componentName: 'Page',
|
|
fileName: 'f1',
|
|
}],
|
|
}, 'f1');
|
|
expect(project.currentDocument?.fileName).toBe('f1');
|
|
});
|
|
|
|
it.skip('setSchema', () => {
|
|
project.load({
|
|
componentsTree: [{
|
|
componentName: 'Page',
|
|
fileName: 'f1',
|
|
}],
|
|
}, true);
|
|
project.setSchema({
|
|
componentsTree: [{
|
|
componentName: 'Page',
|
|
props: { a: 1 },
|
|
}],
|
|
});
|
|
expect(project.currentDocument?.rootNode?.propsData).toEqual({ a: 1 });
|
|
});
|
|
|
|
it('open / getDocument / checkExclusive', () => {
|
|
project.load({
|
|
componentsTree: [{
|
|
componentName: 'Page',
|
|
fileName: 'f1',
|
|
}],
|
|
});
|
|
const doc1 = project.createDocument({
|
|
componentName: 'Page',
|
|
fileName: 'f2',
|
|
});
|
|
const doc2 = project.createDocument({
|
|
componentName: 'Page',
|
|
fileName: 'f3',
|
|
});
|
|
|
|
project.open();
|
|
|
|
project.open('f2');
|
|
expect(project.currentDocument).toBe(doc1);
|
|
project.open('f3');
|
|
expect(project.currentDocument).toBe(doc2);
|
|
|
|
project.open('f1');
|
|
expect(project.currentDocument?.fileName).toBe('f1');
|
|
|
|
expect(project.open('not-existing')).toBeNull();
|
|
|
|
project.open(doc2);
|
|
expect(project.currentDocument).toBe(doc2);
|
|
|
|
const doc3 = project.open({
|
|
componentName: 'Page',
|
|
fileName: 'f4',
|
|
});
|
|
expect(project.currentDocument).toBe(doc3);
|
|
expect(project.documents.length).toBe(4);
|
|
|
|
expect(project.getDocument(project.currentDocument?.id)).toBe(doc3);
|
|
expect(project.getDocumentByFileName(project.currentDocument?.fileName)).toBe(doc3);
|
|
expect(project.getDocumentByFileName('unknown')).toBeNull();
|
|
expect(project.checkExclusive(project.currentDocument));
|
|
|
|
expect(project.documents[0].opened).toBeTruthy();
|
|
expect(project.documents[1].opened).toBeTruthy();
|
|
expect(project.documents[2].opened).toBeTruthy();
|
|
expect(project.documents[3].opened).toBeTruthy();
|
|
expect(project.documents[0].suspensed).toBeTruthy();
|
|
expect(project.documents[1].suspensed).toBeTruthy();
|
|
expect(project.documents[2].suspensed).toBeTruthy();
|
|
expect(project.documents[3].suspensed).toBeFalsy();
|
|
|
|
project.closeOthers(project.currentDocument);
|
|
expect(project.documents[0].opened).toBeFalsy();
|
|
expect(project.documents[1].opened).toBeFalsy();
|
|
expect(project.documents[2].opened).toBeFalsy();
|
|
expect(project.documents[3].opened).toBeTruthy();
|
|
expect(project.documents[0].suspensed).toBeTruthy();
|
|
expect(project.documents[1].suspensed).toBeTruthy();
|
|
expect(project.documents[2].suspensed).toBeTruthy();
|
|
expect(project.documents[3].suspensed).toBeFalsy();
|
|
});
|
|
|
|
it('removeDocument', () => {
|
|
const doc1 = project.createDocument({
|
|
componentName: 'Page',
|
|
fileName: 'f1',
|
|
});
|
|
project.removeDocument({});
|
|
expect(project.documents.length).toBe(1);
|
|
});
|
|
|
|
it('simulatorProps', () => {
|
|
designer._simulatorProps = { a: 1 };
|
|
expect(designer.simulatorProps.a).toBe(1);
|
|
designer._simulatorProps = () => ({ a: 1 });
|
|
expect(designer.simulatorProps.a).toBe(1);
|
|
});
|
|
|
|
it('onCurrentDocumentChange', () => {
|
|
const mockFn = jest.fn();
|
|
const off = project.onCurrentDocumentChange(mockFn);
|
|
|
|
project.open({
|
|
componentName: 'Page',
|
|
});
|
|
|
|
expect(mockFn).toHaveBeenCalled();
|
|
|
|
off();
|
|
mockFn.mockClear();
|
|
project.open({
|
|
componentName: 'Page',
|
|
});
|
|
expect(mockFn).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it('setRendererReady / onRendererReady', () => {
|
|
const mockFn = jest.fn();
|
|
const off = project.onRendererReady(mockFn);
|
|
project.setRendererReady({ a: 1 });
|
|
expect(mockFn).toHaveBeenCalledWith({ a: 1 });
|
|
off();
|
|
mockFn.mockClear();
|
|
project.setRendererReady({ a: 1 });
|
|
expect(mockFn).not.toHaveBeenCalled();
|
|
});
|
|
});
|