test: add ut for render-core/adapter

This commit is contained in:
JackLian 2022-06-14 14:54:55 +08:00 committed by 絮黎
parent bf2562e0e9
commit 567fd56cfe
2 changed files with 118 additions and 11 deletions

View File

@ -25,19 +25,19 @@ class Adapter {
setState() {}
forceUpdate() {}
render() {}
state: {};
props: {};
refs: {};
context: {};
state: Record<string, unknown>;
props: Record<string, unknown>;
refs: Record<string, unknown>;
context: Record<string, unknown>;
};
const PureComponent: IGeneralConstructor = class {
setState() {}
forceUpdate() {}
render() {}
state: {};
props: {};
refs: {};
context: {};
state: Record<string, unknown>;
props: Record<string, unknown>;
refs: Record<string, unknown>;
context: Record<string, unknown>;
};
const createElement = () => {};
const createContext = () => {};
@ -64,10 +64,10 @@ class Adapter {
return false;
}
return this.builtinModules.every(m => {
const flag = !!this.runtime[m];
return this.builtinModules.every((m) => {
const flag = !!runtime[m];
if (!flag) {
throw new Error(`runtime is inValid, module '${m}' is not existed`);
throw new Error(`runtime is invalid, module '${m}' does not exist`);
}
return flag;
});

View File

@ -0,0 +1,107 @@
// @ts-nocheck
import adapter, { Env } from '../../src/adapter';
import { IRuntime, IRendererModules, IGeneralConstructor } from '../../src/types';
describe('test src/adapter ', () => {
it('adapter basic use works', () => {
expect(adapter).toBeTruthy();
});
it('isValidRuntime works', () => {
expect(adapter.isValidRuntime([] as any)).toBeFalsy();
expect(adapter.isValidRuntime('' as any)).toBeFalsy();
let invalidRuntime = {};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/Component/);
invalidRuntime = {
Component: {},
};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/PureComponent/);
invalidRuntime = {
Component: {},
PureComponent: {},
};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/createElement/);
invalidRuntime = {
Component: {},
PureComponent: {},
createElement: {},
};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/createContext/);
invalidRuntime = {
Component: {},
PureComponent: {},
createElement: {},
createContext: {},
};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/forwardRef/);
invalidRuntime = {
Component: {},
PureComponent: {},
createElement: {},
createContext: {},
forwardRef: {},
};
expect(() => adapter.isValidRuntime(invalidRuntime as any)).toThrowError(/findDOMNode/);
const validRuntime = {
Component: {},
PureComponent: {},
createElement: {},
createContext: {},
forwardRef: {},
findDOMNode: {},
};
expect(adapter.isValidRuntime(validRuntime as any)).toBeTruthy();
});
it('setRuntime/getRuntime works', () => {
const validRuntime = {
Component: {},
PureComponent: {},
createElement: {},
createContext: {},
forwardRef: {},
findDOMNode: {},
};
adapter.setRuntime(validRuntime as any);
expect(adapter.getRuntime()).toBe(validRuntime);
// won`t work when invalid runtime paased in.
adapter.setRuntime([] as any);
expect(adapter.getRuntime()).toBe(validRuntime);
});
it('setEnv/.env/isReact/isRax works', () => {
adapter.setEnv(Env.React);
expect(adapter.env).toBe(Env.React);
expect(adapter.isReact()).toBeTruthy();
expect(adapter.isRax()).toBeFalsy();
adapter.setEnv(Env.Rax);
expect(adapter.env).toBe(Env.Rax);
expect(adapter.isRax()).toBeTruthy();
expect(adapter.isReact()).toBeFalsy();
});
it('setRenderers/getRenderers works', () => {
const mockRenderers = { BaseRenderer: {} as IBaseRenderComponent};
adapter.setRenderers(mockRenderers);
expect(adapter.getRenderers()).toBe(mockRenderers);
adapter.setRenderers(undefined);
expect(adapter.getRenderers()).toStrictEqual({});
});
it('setConfigProvider/getConfigProvider works', () => {
const mockConfigProvider = { a: 111 };
adapter.setConfigProvider(mockConfigProvider);
expect(adapter.getConfigProvider()).toBe(mockConfigProvider);
});
});