mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Cleanup typing around getting injectables within jest
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
5725da72b1
commit
41d90ca75a
@ -10,6 +10,16 @@ import glob from "glob";
|
|||||||
import path from "path";
|
import path from "path";
|
||||||
import { enableMapSet, setAutoFreeze } from "immer";
|
import { enableMapSet, setAutoFreeze } from "immer";
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface InjectablePaths {
|
||||||
|
paths: string[];
|
||||||
|
globalOverridePaths: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-var
|
||||||
|
var injectablePaths: Record<"main" | "renderer", InjectablePaths>;
|
||||||
|
}
|
||||||
|
|
||||||
configure({
|
configure({
|
||||||
// Needed because we want to use jest.spyOn()
|
// Needed because we want to use jest.spyOn()
|
||||||
// ref https://github.com/mobxjs/mobx/issues/2784
|
// ref https://github.com/mobxjs/mobx/issues/2784
|
||||||
@ -57,7 +67,13 @@ const getInjectables = (environment: "renderer" | "main", filePathGlob: string)
|
|||||||
}),
|
}),
|
||||||
].map(x => path.resolve(__dirname, x));
|
].map(x => path.resolve(__dirname, x));
|
||||||
|
|
||||||
(global as any).rendererInjectablePaths = getInjectables("renderer", "*.{injectable,injectable.testing-env}.{ts,tsx}");
|
global.injectablePaths = {
|
||||||
(global as any).rendererGlobalOverridePaths = getInjectables("renderer", "*.global-override-for-injectable.{ts,tsx}");
|
renderer: {
|
||||||
(global as any).mainInjectablePaths = getInjectables("main", "*.{injectable,injectable.testing-env}.{ts,tsx}");
|
globalOverridePaths: getInjectables("renderer", "*.global-override-for-injectable.{ts,tsx}"),
|
||||||
(global as any).mainGlobalOverridePaths = getInjectables("main", "*.global-override-for-injectable.{ts,tsx}");
|
paths: getInjectables("renderer", "*.{injectable,injectable.testing-env}.{ts,tsx}"),
|
||||||
|
},
|
||||||
|
main: {
|
||||||
|
globalOverridePaths: getInjectables("main", "*.global-override-for-injectable.{ts,tsx}"),
|
||||||
|
paths: getInjectables("main", "*.{injectable,injectable.testing-env}.{ts,tsx}"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|||||||
@ -77,13 +77,12 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
|
|||||||
|
|
||||||
di.preventSideEffects();
|
di.preventSideEffects();
|
||||||
|
|
||||||
const injectables: Injectable<any, any, any>[] = (
|
const injectables = (
|
||||||
global as any
|
global.injectablePaths.main.paths
|
||||||
).mainInjectablePaths.flatMap((filePath: string) =>
|
.map(path => require(path))
|
||||||
Object.values(require(filePath)).filter(
|
.flatMap(Object.values)
|
||||||
(maybeInjectable: any) => isInjectable(maybeInjectable),
|
.filter(isInjectable)
|
||||||
),
|
) as Injectable<any, any, any>[];
|
||||||
);
|
|
||||||
|
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
registerMobX(di);
|
registerMobX(di);
|
||||||
@ -95,13 +94,11 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (doGeneralOverrides) {
|
if (doGeneralOverrides) {
|
||||||
const globalOverrides: GlobalOverride[] = (global as any).mainGlobalOverridePaths.map(
|
for (const globalOverridePath of global.injectablePaths.main.globalOverridePaths) {
|
||||||
(filePath: string) => require(filePath).default,
|
const globalOverride = require(globalOverridePath).default as GlobalOverride;
|
||||||
);
|
|
||||||
|
|
||||||
globalOverrides.forEach(globalOverride => {
|
|
||||||
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
||||||
});
|
}
|
||||||
|
|
||||||
di.override(electronInjectable, () => ({}));
|
di.override(electronInjectable, () => ({}));
|
||||||
di.override(waitUntilBundledExtensionsAreLoadedInjectable, () => async () => {});
|
di.override(waitUntilBundledExtensionsAreLoadedInjectable, () => async () => {});
|
||||||
|
|||||||
@ -20,7 +20,6 @@ import platformInjectable from "../common/vars/platform.injectable";
|
|||||||
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
|
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
|
||||||
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
|
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
|
||||||
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
|
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
|
||||||
import setupSystemCaInjectable from "./frames/root-frame/setup-system-ca.injectable";
|
|
||||||
import extensionShouldBeEnabledForClusterFrameInjectable from "./extension-loader/extension-should-be-enabled-for-cluster-frame.injectable";
|
import extensionShouldBeEnabledForClusterFrameInjectable from "./extension-loader/extension-should-be-enabled-for-cluster-frame.injectable";
|
||||||
import { asyncComputed } from "@ogre-tools/injectable-react";
|
import { asyncComputed } from "@ogre-tools/injectable-react";
|
||||||
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
|
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
|
||||||
@ -47,13 +46,12 @@ export const getDiForUnitTesting = (
|
|||||||
|
|
||||||
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
||||||
|
|
||||||
const injectables: Injectable<any, any, any>[] = (
|
const injectables = (
|
||||||
global as any
|
global.injectablePaths.renderer.paths
|
||||||
).rendererInjectablePaths.flatMap((filePath: string) =>
|
.map(path => require(path))
|
||||||
Object.values(require(filePath)).filter(
|
.flatMap(Object.values)
|
||||||
(maybeInjectable: any) => isInjectable(maybeInjectable),
|
.filter(isInjectable)
|
||||||
),
|
) as Injectable<any, any, any>[];
|
||||||
);
|
|
||||||
|
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
registerMobX(di);
|
registerMobX(di);
|
||||||
@ -65,20 +63,17 @@ export const getDiForUnitTesting = (
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (doGeneralOverrides) {
|
if (doGeneralOverrides) {
|
||||||
const globalOverrides: GlobalOverride[] = (global as any).rendererGlobalOverridePaths.map(
|
for (const globalOverridePath of global.injectablePaths.renderer.globalOverridePaths) {
|
||||||
(filePath: string) => require(filePath).default,
|
const globalOverride = require(globalOverridePath).default as GlobalOverride;
|
||||||
);
|
|
||||||
|
|
||||||
globalOverrides.forEach(globalOverride => {
|
|
||||||
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
||||||
});
|
}
|
||||||
|
|
||||||
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
|
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
|
||||||
di.override(platformInjectable, () => "darwin");
|
di.override(platformInjectable, () => "darwin");
|
||||||
|
|
||||||
[
|
[
|
||||||
startTopbarStateSyncInjectable,
|
startTopbarStateSyncInjectable,
|
||||||
setupSystemCaInjectable,
|
|
||||||
].forEach((injectable) => {
|
].forEach((injectable) => {
|
||||||
di.override(injectable, () => ({
|
di.override(injectable, () => ({
|
||||||
id: injectable.id,
|
id: injectable.id,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user