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 { 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({
|
||||
// Needed because we want to use jest.spyOn()
|
||||
// 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));
|
||||
|
||||
(global as any).rendererInjectablePaths = getInjectables("renderer", "*.{injectable,injectable.testing-env}.{ts,tsx}");
|
||||
(global as any).rendererGlobalOverridePaths = getInjectables("renderer", "*.global-override-for-injectable.{ts,tsx}");
|
||||
(global as any).mainInjectablePaths = getInjectables("main", "*.{injectable,injectable.testing-env}.{ts,tsx}");
|
||||
(global as any).mainGlobalOverridePaths = getInjectables("main", "*.global-override-for-injectable.{ts,tsx}");
|
||||
global.injectablePaths = {
|
||||
renderer: {
|
||||
globalOverridePaths: getInjectables("renderer", "*.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();
|
||||
|
||||
const injectables: Injectable<any, any, any>[] = (
|
||||
global as any
|
||||
).mainInjectablePaths.flatMap((filePath: string) =>
|
||||
Object.values(require(filePath)).filter(
|
||||
(maybeInjectable: any) => isInjectable(maybeInjectable),
|
||||
),
|
||||
);
|
||||
const injectables = (
|
||||
global.injectablePaths.main.paths
|
||||
.map(path => require(path))
|
||||
.flatMap(Object.values)
|
||||
.filter(isInjectable)
|
||||
) as Injectable<any, any, any>[];
|
||||
|
||||
runInAction(() => {
|
||||
registerMobX(di);
|
||||
@ -95,13 +94,11 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {})
|
||||
});
|
||||
|
||||
if (doGeneralOverrides) {
|
||||
const globalOverrides: GlobalOverride[] = (global as any).mainGlobalOverridePaths.map(
|
||||
(filePath: string) => require(filePath).default,
|
||||
);
|
||||
for (const globalOverridePath of global.injectablePaths.main.globalOverridePaths) {
|
||||
const globalOverride = require(globalOverridePath).default as GlobalOverride;
|
||||
|
||||
globalOverrides.forEach(globalOverride => {
|
||||
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
||||
});
|
||||
}
|
||||
|
||||
di.override(electronInjectable, () => ({}));
|
||||
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 { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
|
||||
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 { asyncComputed } from "@ogre-tools/injectable-react";
|
||||
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
|
||||
@ -47,13 +46,12 @@ export const getDiForUnitTesting = (
|
||||
|
||||
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
||||
|
||||
const injectables: Injectable<any, any, any>[] = (
|
||||
global as any
|
||||
).rendererInjectablePaths.flatMap((filePath: string) =>
|
||||
Object.values(require(filePath)).filter(
|
||||
(maybeInjectable: any) => isInjectable(maybeInjectable),
|
||||
),
|
||||
);
|
||||
const injectables = (
|
||||
global.injectablePaths.renderer.paths
|
||||
.map(path => require(path))
|
||||
.flatMap(Object.values)
|
||||
.filter(isInjectable)
|
||||
) as Injectable<any, any, any>[];
|
||||
|
||||
runInAction(() => {
|
||||
registerMobX(di);
|
||||
@ -65,20 +63,17 @@ export const getDiForUnitTesting = (
|
||||
});
|
||||
|
||||
if (doGeneralOverrides) {
|
||||
const globalOverrides: GlobalOverride[] = (global as any).rendererGlobalOverridePaths.map(
|
||||
(filePath: string) => require(filePath).default,
|
||||
);
|
||||
for (const globalOverridePath of global.injectablePaths.renderer.globalOverridePaths) {
|
||||
const globalOverride = require(globalOverridePath).default as GlobalOverride;
|
||||
|
||||
globalOverrides.forEach(globalOverride => {
|
||||
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
||||
});
|
||||
}
|
||||
|
||||
di.override(getRandomIdInjectable, () => () => "some-irrelevant-random-id");
|
||||
di.override(platformInjectable, () => "darwin");
|
||||
|
||||
[
|
||||
startTopbarStateSyncInjectable,
|
||||
setupSystemCaInjectable,
|
||||
].forEach((injectable) => {
|
||||
di.override(injectable, () => ({
|
||||
id: injectable.id,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user