112 lines
3.3 KiB
TypeScript

import '../fixtures/window';
// import { Project } from '../../src/project/project';
// import { Node } from '../../src/document/node/node';
// import { Designer } from '../../src/designer/designer';
import env from '../../src/env';
import { autorun } from '@ali/lowcode-editor-core';
describe('env 测试', () => {
describe('常规 API 测试', () => {
it('setEnv / getEnv / setEnvMap / set / get', () => {
expect(env.getEnv('xxx')).toBeUndefined;
const mockFn1 = jest.fn();
const off1 = env.onEnvChange(mockFn1);
const envData = { a: 1 };
env.setEnv('xxx', envData);
expect(env.getEnv('xxx')).toEqual(envData);
expect(env.get('xxx')).toEqual(envData);
expect(mockFn1).toHaveBeenCalled();
expect(mockFn1).toHaveBeenCalledWith(env.envs, 'xxx', envData);
mockFn1.mockClear();
// 设置相同的值
env.setEnv('xxx', envData);
expect(env.getEnv('xxx')).toEqual(envData);
expect(env.get('xxx')).toEqual(envData);
expect(mockFn1).not.toHaveBeenCalled();
mockFn1.mockClear();
// 设置另一个 envName
const envData2 = { b: 1 };
env.set('yyy', envData2);
expect(env.getEnv('yyy')).toEqual(envData2);
expect(env.get('yyy')).toEqual(envData2);
expect(mockFn1).toHaveBeenCalled();
expect(mockFn1).toHaveBeenCalledWith(env.envs, 'yyy', envData2);
mockFn1.mockClear();
env.setEnvMap({
zzz: { a: 1, b: 1 },
});
expect(env.getEnv('xxx')).toBeUndefined;
expect(env.getEnv('yyy')).toBeUndefined;
expect(env.getEnv('zzz')).toEqual({ a: 1, b: 1 });
expect(mockFn1).toHaveBeenCalled();
expect(mockFn1).toHaveBeenCalledWith(env.envs);
mockFn1.mockClear();
// 解绑事件
off1();
env.setEnvMap({
zzz: { a: 1, b: 1 },
});
expect(mockFn1).not.toHaveBeenCalled();
mockFn1.mockClear();
});
it('setLocale / getLocale', () => {
expect(env.getLocale()).toBe('zh_CN');
env.setLocale('en_US');
expect(env.getLocale()).toBe('en_US');
});
it('setExpertMode / isExpertMode', () => {
expect(env.isExpertMode()).toBeFalsy;
env.setExpertMode('truthy value');
expect(env.isExpertMode()).toBeTruthy;
});
it('getSupportFeatures / setSupportFeatures / supports', () => {
expect(env.getSupportFeatures()).toEqual({});
env.setSupportFeatures({
mobile: true,
pc: true,
});
expect(env.getSupportFeatures()).toEqual({
mobile: true,
pc: true,
});
expect(env.supports('mobile')).toBeTruthy;
expect(env.supports('pc')).toBeTruthy;
expect(env.supports('iot')).toBeFalsy;
});
it('getAliSchemaVersion', () => {
expect(env.getAliSchemaVersion()).toBe('1.0.0');
});
it('envs obx 测试', async () => {
const mockFn = jest.fn();
env.clear();
autorun(() => {
mockFn(env.envs);
env.envs;
});
await new Promise(resolve => setTimeout(resolve, 16));
expect(mockFn).toHaveBeenCalledTimes(1);
expect(mockFn).toHaveBeenLastCalledWith({});
env.setEnv('abc', { a: 1 });
await new Promise(resolve => setTimeout(resolve, 16));
expect(mockFn).toHaveBeenCalledTimes(2);
expect(mockFn).toHaveBeenLastCalledWith({ abc: { a: 1 } });
});
});
});