1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Extract injectable with side-effect for exact overriding

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2022-05-05 09:40:00 +03:00
parent ff87f627aa
commit 12839c7784
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
5 changed files with 36 additions and 12 deletions

View File

@ -3,11 +3,16 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import platformInjectable from "./platform.injectable";
const isLinuxInjectable = getInjectable({
id: "is-linux",
instantiate: () => process.platform === "linux",
causesSideEffects: true,
instantiate: (di) => {
const platform = di.inject(platformInjectable);
return platform === "linux";
},
});
export default isLinuxInjectable;

View File

@ -3,11 +3,16 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import platformInjectable from "./platform.injectable";
const isMacInjectable = getInjectable({
id: "is-mac",
instantiate: () => process.platform === "darwin",
causesSideEffects: true,
instantiate: (di) => {
const platform = di.inject(platformInjectable);
return platform === "darwin";
},
});
export default isMacInjectable;

View File

@ -3,11 +3,16 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import platformInjectable from "./platform.injectable";
const isWindowsInjectable = getInjectable({
id: "is-windows",
instantiate: () => process.platform === "win32",
causesSideEffects: true,
instantiate: (di) => {
const platform = di.inject(platformInjectable);
return platform === "win32";
},
});
export default isWindowsInjectable;

View File

@ -0,0 +1,13 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
const platformInjectable = getInjectable({
id: "platform",
instantiate: () => process.platform,
causesSideEffects: true,
});
export default platformInjectable;

View File

@ -25,9 +25,6 @@ import type { ClusterStore } from "../common/cluster-store/cluster-store";
import type { Cluster } from "../common/cluster/cluster";
import userStoreInjectable from "../common/user-store/user-store.injectable";
import type { UserStore } from "../common/user-store";
import isMacInjectable from "../common/vars/is-mac.injectable";
import isWindowsInjectable from "../common/vars/is-windows.injectable";
import isLinuxInjectable from "../common/vars/is-linux.injectable";
import getAbsolutePathInjectable from "../common/path/get-absolute-path.injectable";
import { getAbsolutePathFake } from "../common/test-utils/get-absolute-path-fake";
import joinPathsInjectable from "../common/path/join-paths.injectable";
@ -80,6 +77,7 @@ import sendToChannelInElectronBrowserWindowInjectable from "./start-main-applica
import broadcastMessageInjectable from "../common/ipc/broadcast-message.injectable";
import getElectronThemeInjectable from "./electron-app/features/get-electron-theme.injectable";
import syncThemeFromOperatingSystemInjectable from "./electron-app/features/sync-theme-from-operating-system.injectable";
import platformInjectable from "../common/vars/platform.injectable";
export const getDiForUnitTesting = (
{ doGeneralOverrides } = { doGeneralOverrides: false },
@ -197,9 +195,7 @@ const overrideRunnablesHavingSideEffects = (di: DiContainer) => {
};
const overrideOperatingSystem = (di: DiContainer) => {
di.override(isMacInjectable, () => true);
di.override(isWindowsInjectable, () => false);
di.override(isLinuxInjectable, () => false);
di.override(platformInjectable, () => "darwin");
di.override(getAbsolutePathInjectable, () => getAbsolutePathFake);
di.override(joinPathsInjectable, () => joinPathsFake);
};