mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix usages of LazyInitializableState
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
dbcef82ad2
commit
7b7d9d286d
@ -34,7 +34,6 @@ import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||
import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable";
|
||||
import storeMigrationVersionInjectable from "../vars/store-migration-version.injectable";
|
||||
import releaseChannelInjectable from "../vars/release-channel.injectable";
|
||||
import defaultUpdateChannelInjectable from "../../features/application-update/common/selected-update-channel/default-update-channel.injectable";
|
||||
|
||||
console = new Console(stdout, stderr);
|
||||
|
||||
@ -58,7 +57,6 @@ describe("user store tests", () => {
|
||||
get: () => "latest" as const,
|
||||
init: async () => {},
|
||||
}));
|
||||
await di.inject(defaultUpdateChannelInjectable).init();
|
||||
|
||||
di.unoverride(userStoreInjectable);
|
||||
});
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import type { AppPaths } from "./app-path-injection-token";
|
||||
import type { AppPaths } from "./token";
|
||||
import type { RequestChannel } from "../utils/channel/request-channel-listener-injection-token";
|
||||
|
||||
export type AppPathsChannel = RequestChannel<void, AppPaths>;
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import type { AppPaths } from "./token";
|
||||
import type { RequestChannel } from "../utils/channel/request-channel-injection-token";
|
||||
import type { RequestChannel } from "../utils/channel/request-channel-listener-injection-token";
|
||||
|
||||
export type AppPathsChannel = RequestChannel<void, AppPaths>;
|
||||
|
||||
|
||||
@ -6,11 +6,11 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import type { JsonValue } from "type-fest";
|
||||
import fsInjectable from "./fs.injectable";
|
||||
|
||||
export type ReadJson = (filePath: string) => Promise<JsonValue>;
|
||||
export type ReadJsonFile = (filePath: string) => Promise<JsonValue>;
|
||||
|
||||
const readJsonFileInjectable = getInjectable({
|
||||
id: "read-json-file",
|
||||
instantiate: (di): ReadJson => di.inject(fsInjectable).readJson,
|
||||
instantiate: (di): ReadJsonFile => di.inject(fsInjectable).readJson,
|
||||
});
|
||||
|
||||
export default readJsonFileInjectable;
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { createInitializableState } from "../initializable-state/create";
|
||||
import { createLazyInitializableState } from "../initializable-state/create-lazy";
|
||||
import buildSemanticVersionInjectable from "./build-semantic-version.injectable";
|
||||
import type { ReleaseChannel } from "../../features/application-update/common/update-channels";
|
||||
|
||||
const releaseChannelInjectable = createInitializableState({
|
||||
const releaseChannelInjectable = createLazyInitializableState({
|
||||
id: "release-channel",
|
||||
init: (di): ReleaseChannel => {
|
||||
const buildSemanticVersion = di.inject(buildSemanticVersionInjectable);
|
||||
|
||||
@ -15,7 +15,7 @@ import type { ExtensionInstallationStateStore } from "../extension-installation-
|
||||
import type { PackageJson } from "type-fest";
|
||||
import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling";
|
||||
import { requestInitialExtensionDiscovery } from "../../renderer/ipc";
|
||||
import type { ReadJson } from "../../common/fs/read-json-file.injectable";
|
||||
import type { ReadJsonFile } from "../../common/fs/read-json-file.injectable";
|
||||
import type { Logger } from "../../common/logger";
|
||||
import type { PathExists } from "../../common/fs/path-exists.injectable";
|
||||
import type { Watch } from "../../common/fs/watch/watch.injectable";
|
||||
@ -47,7 +47,7 @@ interface Dependencies {
|
||||
isCompatibleExtension: (manifest: LensExtensionManifest) => boolean;
|
||||
installExtension: (name: string) => Promise<void>;
|
||||
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
|
||||
readJsonFile: ReadJson;
|
||||
readJsonFile: ReadJsonFile;
|
||||
pathExists: PathExists;
|
||||
removePath: RemovePath;
|
||||
lstat: LStat;
|
||||
|
||||
@ -11,13 +11,14 @@ import path from "path";
|
||||
import { BaseStore } from "../../../common/base-store";
|
||||
import type { LensExtensionId } from "../../lens-extension";
|
||||
import { getOrInsertWith, toJS } from "../../../common/utils";
|
||||
import type { LazyInitializableState } from "../../../common/initializable-state/create-lazy";
|
||||
|
||||
interface FSProvisionModel {
|
||||
extensions: Record<string, string>; // extension names to paths
|
||||
}
|
||||
|
||||
interface Dependencies {
|
||||
directoryForExtensionData: string;
|
||||
readonly directoryForExtensionData: LazyInitializableState<string>;
|
||||
}
|
||||
|
||||
export class FileSystemProvisionerStore extends BaseStore<FSProvisionModel> {
|
||||
@ -45,7 +46,7 @@ export class FileSystemProvisionerStore extends BaseStore<FSProvisionModel> {
|
||||
const salt = randomBytes(32).toString("hex");
|
||||
const hashedName = SHA256(`${extensionName}/${salt}`).toString();
|
||||
|
||||
return path.resolve(this.dependencies.directoryForExtensionData, hashedName);
|
||||
return path.resolve(this.dependencies.directoryForExtensionData.get(), hashedName);
|
||||
});
|
||||
|
||||
await fse.ensureDir(dirPath);
|
||||
|
||||
@ -17,7 +17,7 @@ import { type ApplicationBuilder, getApplicationBuilder } from "../../../rendere
|
||||
import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
import navigateToCatalogInjectable from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
|
||||
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
|
||||
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs.injectable";
|
||||
import joinPathsInjectable from "../../../common/path/join-paths.injectable";
|
||||
|
||||
const currentClusterServerUrl = "https://localhost";
|
||||
@ -212,7 +212,7 @@ describe("Deleting a cluster", () => {
|
||||
preferences: {
|
||||
clusterName: "some-cluster",
|
||||
},
|
||||
kubeConfigPath: joinPaths(directoryForKubeConfigs, "some-cluster.json"),
|
||||
kubeConfigPath: joinPaths(directoryForKubeConfigs.get(), "some-cluster.json"),
|
||||
}, {
|
||||
clusterServerUrl: singleClusterServerUrl,
|
||||
});
|
||||
|
||||
@ -38,7 +38,7 @@ const deleteClusterChannelListenerInjectable = getRequestChannelListenerInjectab
|
||||
clusterStore.clusters.delete(cluster.id);
|
||||
|
||||
// remove the local storage file
|
||||
const localStorageFilePath = joinPaths(directoryForLensLocalStorage, `${cluster.id}.json`);
|
||||
const localStorageFilePath = joinPaths(directoryForLensLocalStorage.get(), `${cluster.id}.json`);
|
||||
|
||||
await deleteFile(localStorageFilePath).catch(noop);
|
||||
};
|
||||
|
||||
@ -45,10 +45,9 @@ describe("cluster/namespaces - edit namespace from new tab", () => {
|
||||
showErrorNotificationMock = jest.fn();
|
||||
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(
|
||||
directoryForLensLocalStorageInjectable,
|
||||
() => "/some-directory-for-lens-local-storage",
|
||||
);
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
|
||||
windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||
|
||||
|
||||
@ -30,10 +30,9 @@ describe("cluster/namespaces - edit namespaces from previously opened tab", () =
|
||||
callForNamespaceMock = asyncFn();
|
||||
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(
|
||||
directoryForLensLocalStorageInjectable,
|
||||
() => "/some-directory-for-lens-local-storage",
|
||||
);
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
|
||||
windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||
|
||||
|
||||
@ -39,10 +39,9 @@ describe("cluster - sidebar and tab navigation for core", () => {
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(storageSaveDelayInjectable, () => 250);
|
||||
|
||||
windowDi.override(
|
||||
directoryForLensLocalStorageInjectable,
|
||||
() => "/some-directory-for-lens-local-storage",
|
||||
);
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -35,10 +35,9 @@ describe("cluster - sidebar and tab navigation for extensions", () => {
|
||||
applicationBuilder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(storageSaveDelayInjectable, () => 250);
|
||||
|
||||
windowDi.override(
|
||||
directoryForLensLocalStorageInjectable,
|
||||
() => "/some-directory-for-lens-local-storage",
|
||||
);
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ import currentPathInjectable from "../../../renderer/routes/current-path.injecta
|
||||
import writeJsonFileInjectable from "../../../common/fs/write-json-file.injectable";
|
||||
import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable";
|
||||
import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable";
|
||||
import type { ReadJsonFile } from "../../../common/fs/read-json-file.injectable";
|
||||
import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable";
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import type { RequestHelmCharts } from "../../../common/k8s-api/endpoints/helm-charts.api/request-charts.injectable";
|
||||
@ -51,7 +52,9 @@ describe("installing helm chart from new tab", () => {
|
||||
requestCreateHelmReleaseMock = asyncFn();
|
||||
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
windowDi.override(requestDetailedHelmReleaseInjectable, () => requestDetailedHelmReleaseMock);
|
||||
windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock);
|
||||
windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock);
|
||||
@ -74,11 +77,13 @@ describe("installing helm chart from new tab", () => {
|
||||
describe("given tab for installing chart was not previously opened and application is started", () => {
|
||||
let rendered: RenderResult;
|
||||
let windowDi: DiContainer;
|
||||
let readJsonFile: ReadJsonFile;
|
||||
|
||||
beforeEach(async () => {
|
||||
rendered = await builder.render();
|
||||
|
||||
windowDi = builder.applicationWindow.only.di;
|
||||
readJsonFile = windowDi.inject(readJsonFileInjectable);
|
||||
|
||||
const writeJsonFile = windowDi.inject(writeJsonFileInjectable);
|
||||
|
||||
@ -683,15 +688,15 @@ describe("installing helm chart from new tab", () => {
|
||||
});
|
||||
|
||||
it("stores the selected version", async () => {
|
||||
const readJsonFile = windowDi.inject(readJsonFileInjectable);
|
||||
const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json");
|
||||
|
||||
const actual = await readJsonFile(
|
||||
"/some-directory-for-lens-local-storage/some-cluster-id.json",
|
||||
) as any;
|
||||
|
||||
const version = actual.install_charts["some-first-tab-id"].version;
|
||||
|
||||
expect(version).toBe("some-other-version");
|
||||
expect(actual).toMatchObject({
|
||||
install_charts: {
|
||||
"some-first-tab-id": {
|
||||
version: "some-other-version",
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
describe("when default configuration resolves", () => {
|
||||
@ -760,15 +765,15 @@ describe("installing helm chart from new tab", () => {
|
||||
});
|
||||
|
||||
it("stores the selected namespace", async () => {
|
||||
const readJsonFile = windowDi.inject(readJsonFileInjectable);
|
||||
const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json");
|
||||
|
||||
const actual = await readJsonFile(
|
||||
"/some-directory-for-lens-local-storage/some-cluster-id.json",
|
||||
) as any;
|
||||
|
||||
const namespace = actual.install_charts["some-first-tab-id"].namespace;
|
||||
|
||||
expect(namespace).toBe("some-other-namespace");
|
||||
expect(actual).toMatchObject({
|
||||
install_charts: {
|
||||
"some-first-tab-id": {
|
||||
namespace: "some-other-namespace",
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("when installing the chart, calls for installation with changed namespace", () => {
|
||||
@ -873,15 +878,15 @@ describe("installing helm chart from new tab", () => {
|
||||
});
|
||||
|
||||
it("stores the changed configuration", async () => {
|
||||
const readJsonFile = windowDi.inject(readJsonFileInjectable);
|
||||
const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json");
|
||||
|
||||
const actual = await readJsonFile(
|
||||
"/some-directory-for-lens-local-storage/some-cluster-id.json",
|
||||
) as any;
|
||||
|
||||
const configuration = actual.install_charts["some-first-tab-id"].values;
|
||||
|
||||
expect(configuration).toBe("some-valid-configuration");
|
||||
expect(actual).toMatchObject({
|
||||
install_charts: {
|
||||
"some-first-tab-id": {
|
||||
values: "some-valid-configuration",
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("does not show spinner", () => {
|
||||
@ -941,15 +946,15 @@ describe("installing helm chart from new tab", () => {
|
||||
});
|
||||
|
||||
it("stores the changed custom name", async () => {
|
||||
const readJsonFile = windowDi.inject(readJsonFileInjectable);
|
||||
const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json");
|
||||
|
||||
const actual = await readJsonFile(
|
||||
"/some-directory-for-lens-local-storage/some-cluster-id.json",
|
||||
) as any;
|
||||
|
||||
const customName = actual.install_charts["some-first-tab-id"].releaseName;
|
||||
|
||||
expect(customName).toBe("some-custom-name");
|
||||
expect(actual).toMatchObject({
|
||||
install_charts: {
|
||||
"some-first-tab-id": {
|
||||
releaseName: "some-custom-name",
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("renders", () => {
|
||||
|
||||
@ -39,7 +39,9 @@ describe("installing helm chart from previously opened tab", () => {
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
storagesAreReady = controlWhenStoragesAreReady(windowDi);
|
||||
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||
windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock);
|
||||
windowDi.override(requestHelmChartValuesInjectable, () => requestHelmChartValuesMock);
|
||||
|
||||
@ -39,7 +39,9 @@ describe("opening dock tab for installing helm chart", () => {
|
||||
requestHelmChartValuesMock = jest.fn();
|
||||
|
||||
builder.beforeWindowStart((windowDi) => {
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
||||
windowDi.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "/some-directory-for-lens-local-storage",
|
||||
}));
|
||||
windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||
windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock);
|
||||
windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock);
|
||||
|
||||
@ -7,7 +7,7 @@ import { createHash } from "crypto";
|
||||
import type { ObservableMap } from "mobx";
|
||||
import { action } from "mobx";
|
||||
import { homedir } from "os";
|
||||
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
|
||||
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs.injectable";
|
||||
import type { CatalogEntity } from "../../../common/catalog";
|
||||
import getClusterByIdInjectable from "../../../common/cluster-store/get-by-id.injectable";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
@ -79,7 +79,7 @@ const computeKubeconfigDiffInjectable = getInjectable({
|
||||
|
||||
const entity = catalogEntityFromCluster(cluster);
|
||||
|
||||
if (!filePath.startsWith(directoryForKubeConfigs)) {
|
||||
if (!filePath.startsWith(directoryForKubeConfigs.get())) {
|
||||
entity.metadata.labels.file = filePath.replace(homedir(), "~");
|
||||
}
|
||||
source.set(contextName, [cluster, entity]);
|
||||
|
||||
@ -10,9 +10,10 @@ import type { ModifyTerminalShellEnv } from "../shell-env-modifier/modify-termin
|
||||
import type { JoinPaths } from "../../../common/path/join-paths.injectable";
|
||||
import type { GetDirnameOfPath } from "../../../common/path/get-dirname.injectable";
|
||||
import type { GetBasenameOfPath } from "../../../common/path/get-basename.injectable";
|
||||
import type { LazyInitializableState } from "../../../common/initializable-state/create-lazy";
|
||||
|
||||
export interface LocalShellSessionDependencies extends ShellSessionDependencies {
|
||||
readonly directoryForBinaries: string;
|
||||
readonly directoryForBinaries: LazyInitializableState<string>;
|
||||
readonly userStore: UserStore;
|
||||
modifyTerminalShellEnv: ModifyTerminalShellEnv;
|
||||
joinPaths: JoinPaths;
|
||||
@ -28,7 +29,7 @@ export class LocalShellSession extends ShellSession {
|
||||
}
|
||||
|
||||
protected getPathEntries(): string[] {
|
||||
return [this.dependencies.directoryForBinaries];
|
||||
return [this.dependencies.directoryForBinaries.get()];
|
||||
}
|
||||
|
||||
protected get cwd(): string | undefined {
|
||||
|
||||
@ -7,7 +7,7 @@ import type { LocalShellSessionDependencies } from "./local-shell-session";
|
||||
import { LocalShellSession } from "./local-shell-session";
|
||||
import createKubectlInjectable from "../../kubectl/create-kubectl.injectable";
|
||||
import modifyTerminalShellEnvInjectable from "../shell-env-modifier/modify-terminal-shell-env.injectable";
|
||||
import directoryForBinariesInjectable from "../../../common/app-paths/directory-for-binaries/directory-for-binaries.injectable";
|
||||
import directoryForBinariesInjectable from "../../../common/app-paths/directory-for-binaries.injectable";
|
||||
import isMacInjectable from "../../../common/vars/is-mac.injectable";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
import { WebSocket } from "ws";
|
||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||
import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data.injectable";
|
||||
import type { Cluster } from "../../../common/cluster/cluster";
|
||||
import platformInjectable from "../../../common/vars/platform.injectable";
|
||||
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
||||
@ -25,7 +25,9 @@ describe("technical unit tests for local shell sessions", () => {
|
||||
doGeneralOverrides: true,
|
||||
});
|
||||
|
||||
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
|
||||
di.override(directoryForUserDataInjectable, () => ({
|
||||
get: () => "/some-directory-for-user-data",
|
||||
}));
|
||||
di.override(buildVersionInjectable, () => ({
|
||||
get: () => "1.1.1",
|
||||
}));
|
||||
|
||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
||||
import userStoreFileNameMigrationInjectable from "../../common/user-store/file-name-migration.injectable";
|
||||
import userStoreInjectable from "../../common/user-store/user-store.injectable";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "../start-main-application/runnable-tokens/before-application-is-loading-injection-token";
|
||||
import initDefaultUpdateChannelInjectable from "../vars/default-update-channel/init.injectable";
|
||||
import initializeBuildVersionInjectable from "../vars/build-version/init.injectable";
|
||||
|
||||
const initUserStoreInjectable = getInjectable({
|
||||
id: "init-user-store",
|
||||
@ -20,7 +20,7 @@ const initUserStoreInjectable = getInjectable({
|
||||
await userStoreFileNameMigration();
|
||||
userStore.load();
|
||||
},
|
||||
runAfter: di.inject(initDefaultUpdateChannelInjectable),
|
||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
/**
|
||||
* 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";
|
||||
import releaseChannelInjectable from "../../../common/vars/release-channel.injectable";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "../../start-main-application/runnable-tokens/before-application-is-loading-injection-token";
|
||||
import initSemanticBuildVersionInjectable from "../semantic-build-version/init.injectable";
|
||||
|
||||
const initReleaseChannelInjectable = getInjectable({
|
||||
id: "init-release-channel",
|
||||
instantiate: (di) => {
|
||||
const releaseChannel = di.inject(releaseChannelInjectable);
|
||||
|
||||
return {
|
||||
id: "init-release-channel",
|
||||
run: () => releaseChannel.init(),
|
||||
runAfter: di.inject(initSemanticBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
injectionToken: beforeApplicationIsLoadingInjectionToken,
|
||||
});
|
||||
|
||||
export default initReleaseChannelInjectable;
|
||||
@ -40,7 +40,9 @@ describe("<PodTolerations />", () => {
|
||||
beforeEach(() => {
|
||||
const di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||
|
||||
di.override(directoryForLensLocalStorageInjectable, () => "some-directory-for-lens-local-storage" );
|
||||
di.override(directoryForLensLocalStorageInjectable, () => ({
|
||||
get: () => "some-directory-for-lens-local-storage",
|
||||
}));
|
||||
|
||||
render = renderFor(di);
|
||||
});
|
||||
|
||||
@ -6,7 +6,6 @@
|
||||
import React from "react";
|
||||
import { fireEvent } from "@testing-library/react";
|
||||
import "@testing-library/jest-dom/extend-expect";
|
||||
import fse from "fs-extra";
|
||||
import { DockTabs } from "../dock-tabs";
|
||||
import type { DockStore, DockTab } from "../dock/store";
|
||||
import { TabKind } from "../dock/store";
|
||||
@ -16,7 +15,6 @@ import dockStoreInjectable from "../dock/store.injectable";
|
||||
import type { DiRender } from "../../test-utils/renderFor";
|
||||
import { renderFor } from "../../test-utils/renderFor";
|
||||
import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data.injectable";
|
||||
import getConfigurationFileModelInjectable from "../../../../common/get-configuration-file-model/get-configuration-file-model.injectable";
|
||||
import assert from "assert";
|
||||
import hostedClusterIdInjectable from "../../../cluster-frame-context/hosted-cluster-id.injectable";
|
||||
|
||||
@ -78,22 +76,15 @@ describe("<DockTabs />", () => {
|
||||
|
||||
di.override(hostedClusterIdInjectable, () => "some-cluster-id");
|
||||
di.override(directoryForUserDataInjectable, () => ({
|
||||
get: () => "some-test-suite-specific-directory-for-user-data",
|
||||
get: () => "/some-test-suite-specific-directory-for-user-data",
|
||||
}));
|
||||
|
||||
di.permitSideEffects(getConfigurationFileModelInjectable);
|
||||
|
||||
dockStore = di.inject(dockStoreInjectable);
|
||||
|
||||
await dockStore.whenReady;
|
||||
dockStore.tabs = initialTabs;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// TODO: A unit test may not cause side effects. Here accessing file system is a side effect.
|
||||
fse.remove("some-test-suite-specific-directory-for-user-data");
|
||||
});
|
||||
|
||||
it("renders w/o errors", () => {
|
||||
const { container } = render(getComponent(dockStore));
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import userStoreInjectable from "../../common/user-store/user-store.injectable";
|
||||
import { beforeFrameStartsInjectionToken } from "../before-frame-starts/before-frame-starts-injection-token";
|
||||
import initDefaultUpdateChannelInjectable from "../vars/default-update-channel/init.injectable";
|
||||
import initializeBuildVersionInjectable from "../vars/build-version/init.injectable";
|
||||
|
||||
const initUserStoreInjectable = getInjectable({
|
||||
id: "init-user-store",
|
||||
@ -15,7 +15,7 @@ const initUserStoreInjectable = getInjectable({
|
||||
return {
|
||||
id: "init-user-store",
|
||||
run: () => userStore.load(),
|
||||
runAfter: di.inject(initDefaultUpdateChannelInjectable),
|
||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
injectionToken: beforeFrameStartsInjectionToken,
|
||||
|
||||
@ -11,11 +11,12 @@ import { StorageHelper } from "../storageHelper";
|
||||
import type { JsonObject, JsonValue } from "type-fest";
|
||||
import type { Logger } from "../../../common/logger";
|
||||
import type { JoinPaths } from "../../../common/path/join-paths.injectable";
|
||||
import type { LazyInitializableState } from "../../../common/initializable-state/create-lazy";
|
||||
|
||||
interface Dependencies {
|
||||
storage: { initialized: boolean; loaded: boolean; data: Record<string, any> };
|
||||
logger: Logger;
|
||||
directoryForLensLocalStorage: string;
|
||||
directoryForLensLocalStorage: LazyInitializableState<string>;
|
||||
readJsonFile: (filePath: string) => Promise<JsonValue>;
|
||||
writeJsonFile: (filePath: string, contentObject: JsonObject) => Promise<void>;
|
||||
joinPaths: JoinPaths;
|
||||
@ -44,7 +45,7 @@ export const createStorage = ({
|
||||
storage.initialized = true;
|
||||
|
||||
(async () => {
|
||||
const filePath = joinPaths(directoryForLensLocalStorage, `${hostedClusterId || "app"}.json`);
|
||||
const filePath = joinPaths(directoryForLensLocalStorage.get(), `${hostedClusterId || "app"}.json`);
|
||||
|
||||
try {
|
||||
storage.data = (await readJsonFile(filePath)) as JsonObject;
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
/**
|
||||
* 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";
|
||||
import releaseChannelInjectable from "../../../common/vars/release-channel.injectable";
|
||||
import { beforeFrameStartsInjectionToken } from "../../before-frame-starts/before-frame-starts-injection-token";
|
||||
import initSemanticBuildVersionInjectable from "../semantic-build-version/init.injectable";
|
||||
|
||||
const initReleaseChannelInjectable = getInjectable({
|
||||
id: "init-release-channel",
|
||||
instantiate: (di) => {
|
||||
const releaseChannel = di.inject(releaseChannelInjectable);
|
||||
|
||||
return {
|
||||
id: "init-release-channel",
|
||||
run: () => releaseChannel.init(),
|
||||
runAfter: di.inject(initSemanticBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
injectionToken: beforeFrameStartsInjectionToken,
|
||||
});
|
||||
|
||||
export default initReleaseChannelInjectable;
|
||||
Loading…
Reference in New Issue
Block a user