mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Add custom jest resolver to fix requiring "uuid" module Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Update dependencies Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Introduce test utils for rendering and running with thrown mobx reactions Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Extract startable-stoppable to NPM package Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Extract messaging to NPM package Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Switch to using startable-stoppable from NPM package Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Switch to using messaging from the Feature Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Remove old implementation of messaging Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make setupping app paths happen earlier in renderer Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Fix typo Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add kludge to make testing-library work properly from test-utils package Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Fix code style Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add lint:fix -root script Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Fix unrelated failing unit tests Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Turn of no-floating-promises from typescript linting for being broken Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make linting not happen for dist -directories Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make linting failures appear as failure Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Stop running prettier twice It already gets ran as eslint-plugin. Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Make CI run unit tests for all packages by consolidating name of NPM script Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add missing unit tests for coverage Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Skip coverage for test utils Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Remove check for coverage in packages which are not ready for it Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Stop collecting coverage from index.ts files them being indirections to the implementation Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com> Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Implement sending message to channel in main Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add missing feature dependencies Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add dummy implementations for requesting in main from renderer Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Re-enable communicating from main to cluster frames Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Ignore trivial files from coverage Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Update package-lock Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Extract message-bridge to separate NPM package to prevent dev dependencies being in the production bundle Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Extract computed channel to own NPM package for clear dependencies Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Consolidate electron related stuff to a directory Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Add missing publish configurations Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> * Ignore test implementation from coverage being not interesting Signed-off-by: Janne Savolainen <janne.savolainen@live.fi> --------- Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
75 lines
2.9 KiB
TypeScript
75 lines
2.9 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
|
|
import { noop, chunk } from "lodash/fp";
|
|
import { createContainer, isInjectable } from "@ogre-tools/injectable";
|
|
import { getOverrideFsWithFakes } from "../test-utils/override-fs-with-fakes";
|
|
import terminalSpawningPoolInjectable from "./components/dock/terminal/terminal-spawning-pool.injectable";
|
|
import hostedClusterIdInjectable from "./cluster-frame-context/hosted-cluster-id.injectable";
|
|
import { runInAction } from "mobx";
|
|
import requestAnimationFrameInjectable from "./components/animate/request-animation-frame.injectable";
|
|
import startTopbarStateSyncInjectable from "./components/layout/top-bar/start-state-sync.injectable";
|
|
import watchHistoryStateInjectable from "./remote-helpers/watch-history-state.injectable";
|
|
import legacyOnChannelListenInjectable from "./ipc/legacy-channel-listen.injectable";
|
|
import type { GlobalOverride } from "@k8slens/test-utils";
|
|
import { setLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
|
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
|
|
import { registerInjectableReact } from "@ogre-tools/injectable-react";
|
|
import { registerFeature } from "@k8slens/feature-core";
|
|
import { messagingFeature, testUtils as messagingTestUtils } from "@k8slens/messaging";
|
|
|
|
export const getDiForUnitTesting = () => {
|
|
const environment = "renderer";
|
|
const di = createContainer(environment);
|
|
|
|
registerMobX(di);
|
|
registerInjectableReact(di);
|
|
setLegacyGlobalDiForExtensionApi(di, environment);
|
|
|
|
runInAction(() => {
|
|
registerFeature(di, messagingFeature, messagingTestUtils.messagingFeatureForUnitTesting);
|
|
});
|
|
|
|
di.preventSideEffects();
|
|
|
|
runInAction(() => {
|
|
const injectables = global.injectablePaths.renderer.paths
|
|
.map(path => require(path))
|
|
.flatMap(Object.values)
|
|
.filter(isInjectable);
|
|
|
|
for (const block of chunk(100)(injectables)) {
|
|
di.register(...block);
|
|
}
|
|
});
|
|
|
|
for (const globalOverridePath of global.injectablePaths.renderer.globalOverridePaths) {
|
|
const globalOverride = require(globalOverridePath).default as GlobalOverride<unknown, unknown>;
|
|
|
|
di.override(globalOverride.injectable, globalOverride.overridingInstantiate);
|
|
}
|
|
|
|
[
|
|
startTopbarStateSyncInjectable,
|
|
].forEach((injectable) => {
|
|
di.override(injectable, () => ({
|
|
id: injectable.id,
|
|
run: () => {},
|
|
}));
|
|
});
|
|
|
|
di.override(terminalSpawningPoolInjectable, () => document.createElement("div"));
|
|
di.override(hostedClusterIdInjectable, () => undefined);
|
|
|
|
di.override(legacyOnChannelListenInjectable, () => () => noop);
|
|
|
|
di.override(requestAnimationFrameInjectable, () => (callback) => callback());
|
|
di.override(watchHistoryStateInjectable, () => () => () => {});
|
|
|
|
getOverrideFsWithFakes()(di);
|
|
|
|
return di;
|
|
};
|