From fe9f585b71ad06c5f74283b4b4a10c1d5637a79a Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Wed, 2 Nov 2022 11:29:18 -0400 Subject: [PATCH] Fix tests by making the setup more like the real application Signed-off-by: Sebastian Malton --- src/common/__tests__/cluster-store.test.ts | 26 +++++---- src/common/__tests__/user-store.test.ts | 46 +++++++++------ src/common/app-paths/app-paths-channel.ts | 13 ----- src/common/initializable-state/create.test.ts | 12 ++-- src/common/runnable/run-many-sync-for.ts | 3 +- .../extension-discovery.test.ts | 58 ++++++++++--------- .../edit-namespace-from-new-tab.test.tsx | 10 +--- ...espace-from-previously-opened-tab.test.tsx | 10 +--- ...debar-and-tab-navigation-for-core.test.tsx | 17 +++--- ...and-tab-navigation-for-extensions.test.tsx | 15 ++--- ...installing-helm-chart-from-new-tab.test.ts | 14 ++--- ...m-chart-from-previously-opened-tab.test.ts | 8 +-- ...dock-tab-for-installing-helm-chart.test.ts | 6 -- ...ths-request-channel-listener.injectable.ts | 2 +- .../__test__/kubeconfig-sync.test.ts | 20 ++++--- src/main/router/router.test.ts | 16 +++-- .../local-shell-session/techincal.test.ts | 21 ++++--- src/main/stores/init-user-store.injectable.ts | 4 +- .../dock/__test__/dock-tabs.test.tsx | 49 ++++++++++++++-- .../components/status-bar/status-bar.test.tsx | 4 -- 20 files changed, 187 insertions(+), 167 deletions(-) delete mode 100644 src/common/app-paths/app-paths-channel.ts diff --git a/src/common/__tests__/cluster-store.test.ts b/src/common/__tests__/cluster-store.test.ts index 0e81ed67fa..29a33b3bc0 100644 --- a/src/common/__tests__/cluster-store.test.ts +++ b/src/common/__tests__/cluster-store.test.ts @@ -15,16 +15,18 @@ import clusterStoreInjectable from "../cluster-store/cluster-store.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; import type { CreateCluster } from "../cluster/create-cluster-injection-token"; import { createClusterInjectionToken } from "../cluster/create-cluster-injection-token"; -import directoryForUserDataInjectable from "../app-paths/directory-for-user-data.injectable"; import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; import getConfigurationFileModelInjectable from "../get-configuration-file-model/get-configuration-file-model.injectable"; import assert from "assert"; -import directoryForTempInjectable from "../app-paths/directory-for-temp.injectable"; import kubectlBinaryNameInjectable from "../../main/kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../../main/kubectl/normalized-arch.injectable"; import normalizedPlatformInjectable from "../vars/normalized-platform.injectable"; import fsInjectable from "../fs/fs.injectable"; import storeMigrationVersionInjectable from "../vars/store-migration-version.injectable"; +import { beforeApplicationIsLoadingInjectionToken } from "../../main/start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../../main/start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; +import { runManyFor } from "../runnable/run-many-for"; +import { runManySyncFor } from "../runnable/run-many-sync-for"; console = new Console(stdout, stderr); @@ -86,12 +88,14 @@ describe("cluster-store", () => { mockFs(); - mainDi.override(directoryForUserDataInjectable, () => ({ - get: () => "some-directory-for-user-data", - })); - mainDi.override(directoryForTempInjectable, () => ({ - get: () => "some-directory-for-temp", - })); + const runManySync = runManySyncFor(mainDi); + const runMany = runManyFor(mainDi); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + runAllBeforeElectronIsReady(); + await runAllBeforeApplicationIsLoading(); + mainDi.override(kubectlBinaryNameInjectable, () => "kubectl"); mainDi.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); mainDi.override(normalizedPlatformInjectable, () => "darwin"); @@ -213,7 +217,7 @@ describe("cluster-store", () => { beforeEach(() => { const mockOpts = { "temp-kube-config": kubeconfig, - "some-directory-for-user-data": { + "/some-electron-app-path-for-user-data": { "lens-cluster-store.json": JSON.stringify({ __internal__: { migrations: { @@ -304,7 +308,7 @@ users: const mockOpts = { "invalid-kube-config": invalidKubeconfig, "valid-kube-config": kubeconfig, - "some-directory-for-user-data": { + "/some-electron-app-path-for-user-data": { "lens-cluster-store.json": JSON.stringify({ __internal__: { migrations: { @@ -352,7 +356,7 @@ users: describe("pre 3.6.0-beta.1 config with an existing cluster", () => { beforeEach(() => { const mockOpts = { - "some-directory-for-user-data": { + "/some-electron-app-path-for-user-data": { "lens-cluster-store.json": JSON.stringify({ __internal__: { migrations: { diff --git a/src/common/__tests__/user-store.test.ts b/src/common/__tests__/user-store.test.ts index c60f454bcd..454f827499 100644 --- a/src/common/__tests__/user-store.test.ts +++ b/src/common/__tests__/user-store.test.ts @@ -26,14 +26,16 @@ import { Console } from "console"; import { stdout, stderr } from "process"; import userStoreInjectable from "../user-store/user-store.injectable"; import type { DiContainer } from "@ogre-tools/injectable"; -import directoryForUserDataInjectable from "../app-paths/directory-for-user-data.injectable"; import type { ClusterStoreModel } from "../cluster-store/cluster-store"; import { defaultThemeId } from "../vars"; import writeFileInjectable from "../fs/write-file.injectable"; 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 { beforeApplicationIsLoadingInjectionToken } from "../../main/start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../../main/start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; +import { runManyFor } from "../runnable/run-many-for"; +import { runManySyncFor } from "../runnable/run-many-sync-for"; console = new Console(stdout, stderr); @@ -47,18 +49,16 @@ describe("user store tests", () => { mockFs(); di.override(writeFileInjectable, () => () => Promise.resolve()); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "some-directory-for-user-data", - })); + di.permitSideEffects(getConfigurationFileModelInjectable); di.permitSideEffects(userStoreInjectable); - di.override(releaseChannelInjectable, () => ({ - get: () => "latest" as const, - init: async () => {}, - })); - di.unoverride(userStoreInjectable); + + const runManySync = runManySyncFor(di); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + + runAllBeforeElectronIsReady(); }); afterEach(() => { @@ -66,11 +66,15 @@ describe("user store tests", () => { }); describe("for an empty config", () => { - beforeEach(() => { - mockFs({ "some-directory-for-user-data": { "config.json": "{}", "kube_config": "{}" }}); + beforeEach(async () => { + mockFs({ "/some-electron-app-path-for-user-data": { "config.json": "{}", "kube_config": "{}" }}); userStore = di.inject(userStoreInjectable); - userStore.load(); + + const runMany = runManyFor(di); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + await runAllBeforeApplicationIsLoading(); }); it("allows setting and retrieving lastSeenAppVersion", () => { @@ -96,9 +100,9 @@ describe("user store tests", () => { }); describe("migrations", () => { - beforeEach(() => { + beforeEach(async () => { mockFs({ - "some-directory-for-user-data": { + "/some-electron-app-path-for-user-data": { "config.json": JSON.stringify({ user: { username: "foobar" }, preferences: { colorTheme: "light" }, @@ -108,7 +112,7 @@ describe("user store tests", () => { clusters: [ { id: "foobar", - kubeConfigPath: "some-directory-for-user-data/extension_data/foo/bar", + kubeConfigPath: "/some-electron-app-path-for-user-data/extension_data/foo/bar", }, { id: "barfoo", @@ -128,15 +132,19 @@ describe("user store tests", () => { di.override(storeMigrationVersionInjectable, () => "10.0.0"); userStore = di.inject(userStoreInjectable); - userStore.load(); + + const runMany = runManyFor(di); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + await runAllBeforeApplicationIsLoading(); }); it("sets last seen app version to 0.0.0", () => { expect(userStore.lastSeenAppVersion).toBe("0.0.0"); }); - it.only("skips clusters for adding to kube-sync with files under extension_data/", () => { - expect(userStore.syncKubeconfigEntries.has("some-directory-for-user-data/extension_data/foo/bar")).toBe(false); + it("skips clusters for adding to kube-sync with files under extension_data/", () => { + expect(userStore.syncKubeconfigEntries.has("/some-electron-app-path-for-user-data/extension_data/foo/bar")).toBe(false); expect(userStore.syncKubeconfigEntries.has("some/other/path")).toBe(true); }); }); diff --git a/src/common/app-paths/app-paths-channel.ts b/src/common/app-paths/app-paths-channel.ts deleted file mode 100644 index d266a0cb60..0000000000 --- a/src/common/app-paths/app-paths-channel.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * 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-listener-injection-token"; - -export type AppPathsChannel = RequestChannel; - -export const appPathsChannel: AppPathsChannel = { - id: "app-paths", -}; - diff --git a/src/common/initializable-state/create.test.ts b/src/common/initializable-state/create.test.ts index 7db3237864..7f3f538719 100644 --- a/src/common/initializable-state/create.test.ts +++ b/src/common/initializable-state/create.test.ts @@ -32,7 +32,9 @@ describe("InitializableState tests", () => { } = createInitializableState({ id: "my-state", init: initMock, - when: null as any, + when: { + id: "some-id", + } as any, })); runInAction(() => { @@ -49,14 +51,14 @@ describe("InitializableState tests", () => { }); it("when get is called, throw", () => { - expect(() => state.get()).toThrowError("InitializableState(my-state) has not been initialized yet"); + expect(() => state.get()).toThrowError("Cannot get value from \"my-state\"; it is currently in state=uninitialized"); }); describe("when init is called", () => { beforeEach(async () => { const initState = di.inject(initStateInjectable); - await initState.run(); + initState.run(); }); it("should call provided initialization function", () => { @@ -64,7 +66,7 @@ describe("InitializableState tests", () => { }); it("when get is called, throw", () => { - expect(() => state.get()).toThrowError("InitializableState(my-state) has not finished initializing"); + expect(() => state.get()).toThrowError("Cannot get value from \"my-state\"; it is currently in state=initializing"); }); describe("when initialization resolves", () => { @@ -79,7 +81,7 @@ describe("InitializableState tests", () => { it("when init is called again, throws", async () => { const initState = di.inject(initStateInjectable); - await expect(() => initState.run()).rejects.toThrow("Cannot initialize InitializableState(my-state) more than once"); + await expect(async () => initState.run()).rejects.toThrow("Cannot start initializing value for \"my-state\"; it is currently in state=initialized"); }); }); }); diff --git a/src/common/runnable/run-many-sync-for.ts b/src/common/runnable/run-many-sync-for.ts index 5156b7c2e1..e59ab0a871 100644 --- a/src/common/runnable/run-many-sync-for.ts +++ b/src/common/runnable/run-many-sync-for.ts @@ -6,6 +6,7 @@ import type { DiContainerForInjection, InjectionToken } from "@ogre-tools/inject import type { Composite } from "../utils/composite/get-composite/get-composite"; import { getCompositeFor } from "../utils/composite/get-composite/get-composite"; import * as uuid from "uuid"; +import assert from "assert"; export interface RunnableSync { id: string; @@ -18,7 +19,7 @@ type RunSync = (parameter: Param) => void; export type RunManySync = (injectionToken: InjectionToken, void>) => RunSync; function runCompositeRunnableSyncs(param: Param, composite: Composite>) { - composite.value.run(param); + assert(!((composite.value.run(param) as any) instanceof Promise), "Cannot be an async function for runnable sync"); composite.children.map(composite => runCompositeRunnableSyncs(param, composite)); } diff --git a/src/extensions/extension-discovery/extension-discovery.test.ts b/src/extensions/extension-discovery/extension-discovery.test.ts index d373b15a36..ca8b4a0df7 100644 --- a/src/extensions/extension-discovery/extension-discovery.test.ts +++ b/src/extensions/extension-discovery/extension-discovery.test.ts @@ -8,9 +8,7 @@ import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; import extensionDiscoveryInjectable from "../extension-discovery/extension-discovery.injectable"; import type { ExtensionDiscovery } from "../extension-discovery/extension-discovery"; import installExtensionInjectable from "../extension-installer/install-extension/install-extension.injectable"; -import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; import { delay } from "../../renderer/utils"; -import { observable, runInAction, when } from "mobx"; import readJsonFileInjectable from "../../common/fs/read-json-file.injectable"; import pathExistsInjectable from "../../common/fs/path-exists.injectable"; import watchInjectable from "../../common/fs/watch/watch.injectable"; @@ -19,6 +17,10 @@ import removePathInjectable from "../../common/fs/remove-path.injectable"; import type { JoinPaths } from "../../common/path/join-paths.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable"; import homeDirectoryPathInjectable from "../../common/os/home-directory-path.injectable"; +import { runManyFor } from "../../common/runnable/run-many-for"; +import { runManySyncFor } from "../../common/runnable/run-many-sync-for"; +import { beforeApplicationIsLoadingInjectionToken } from "../../main/start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../../main/start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; describe("ExtensionDiscovery", () => { let extensionDiscovery: ExtensionDiscovery; @@ -28,15 +30,20 @@ describe("ExtensionDiscovery", () => { let joinPaths: JoinPaths; let homeDirectoryPath: string; - beforeEach(() => { + beforeEach(async () => { const di = getDiForUnitTesting({ doGeneralOverrides: true }); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "/some-directory-for-user-data", - })); di.override(installExtensionInjectable, () => () => Promise.resolve()); di.override(extensionApiVersionInjectable, () => "5.0.0"); + const runManySync = runManySyncFor(di); + const runMany = runManyFor(di); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + runAllBeforeElectronIsReady(); + await runAllBeforeApplicationIsLoading(); + joinPaths = di.inject(joinPathsInjectable); homeDirectoryPath = di.inject(homeDirectoryPathInjectable); @@ -55,7 +62,6 @@ describe("ExtensionDiscovery", () => { }); it("emits add for added extension", async () => { - const letTestFinish = observable.box(false); let addHandler!: (filePath: string) => void; readJsonFileMock.mockImplementation((p) => { @@ -87,27 +93,27 @@ describe("ExtensionDiscovery", () => { await extensionDiscovery.watchExtensions(); - extensionDiscovery.events.on("add", extension => { - expect(extension).toEqual({ - absolutePath: expect.any(String), - id: "/some-directory-for-user-data/node_modules/my-extension/package.json", - isBundled: false, - isEnabled: false, - isCompatible: true, - manifest: { - name: "my-extension", - version: "1.0.0", - engines: { - lens: "5.0.0", - }, - }, - manifestPath: "/some-directory-for-user-data/node_modules/my-extension/package.json", - }); - runInAction(() => letTestFinish.set(true)); - }); + const onAdd = jest.fn(); + + extensionDiscovery.events.on("add", onAdd); addHandler(joinPaths(extensionDiscovery.localFolderPath, "/my-extension/package.json")); - await when(() => letTestFinish.get()); + await delay(10); + expect(onAdd).toBeCalledWith({ + absolutePath: "/some-home-directory/.k8slens/extensions/my-extension", + id: "/some-electron-app-path-for-user-data/node_modules/my-extension/package.json", + isBundled: false, + isEnabled: false, + isCompatible: true, + manifest: { + name: "my-extension", + version: "1.0.0", + engines: { + lens: "5.0.0", + }, + }, + manifestPath: "/some-electron-app-path-for-user-data/node_modules/my-extension/package.json", + }); }); it("doesn't emit add for added file under extension", async () => { diff --git a/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx b/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx index 02ed57f6bd..29c883ee73 100644 --- a/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx +++ b/src/features/cluster/namespaces/edit-namespace-from-new-tab.test.tsx @@ -21,8 +21,6 @@ import { Namespace } from "../../../common/k8s-api/endpoints"; import showSuccessNotificationInjectable from "../../../renderer/components/notifications/show-success-notification.injectable"; import showErrorNotificationInjectable from "../../../renderer/components/notifications/show-error-notification.injectable"; import readJsonFileInjectable from "../../../common/fs/read-json-file.injectable"; -import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; -import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import { controlWhenStoragesAreReady } from "../../../renderer/utils/create-storage/storages-are-ready"; describe("cluster/namespaces - edit namespace from new tab", () => { @@ -45,12 +43,6 @@ describe("cluster/namespaces - edit namespace from new tab", () => { showErrorNotificationMock = jest.fn(); builder.beforeWindowStart((windowDi) => { - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); - - windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id"); - storagesAreReady = controlWhenStoragesAreReady(windowDi); windowDi.override( @@ -514,7 +506,7 @@ metadata: ); const actual = (await readJsonFile( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", )) as any; expect( diff --git a/src/features/cluster/namespaces/edit-namespace-from-previously-opened-tab.test.tsx b/src/features/cluster/namespaces/edit-namespace-from-previously-opened-tab.test.tsx index 05e4558979..1509ea53d8 100644 --- a/src/features/cluster/namespaces/edit-namespace-from-previously-opened-tab.test.tsx +++ b/src/features/cluster/namespaces/edit-namespace-from-previously-opened-tab.test.tsx @@ -10,8 +10,6 @@ import type { AsyncFnMock } from "@async-fn/jest"; import asyncFn from "@async-fn/jest"; import type { CallForResource } from "../../../renderer/components/dock/edit-resource/edit-resource-model/call-for-resource/call-for-resource.injectable"; import callForResourceInjectable from "../../../renderer/components/dock/edit-resource/edit-resource-model/call-for-resource/call-for-resource.injectable"; -import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; -import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import { controlWhenStoragesAreReady } from "../../../renderer/utils/create-storage/storages-are-ready"; import writeJsonFileInjectable from "../../../common/fs/write-json-file.injectable"; import { TabKind } from "../../../renderer/components/dock/dock/store"; @@ -30,12 +28,6 @@ describe("cluster/namespaces - edit namespaces from previously opened tab", () = callForNamespaceMock = asyncFn(); builder.beforeWindowStart((windowDi) => { - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); - - windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id"); - storagesAreReady = controlWhenStoragesAreReady(windowDi); windowDi.override(callForResourceInjectable, () => callForNamespaceMock); @@ -52,7 +44,7 @@ describe("cluster/namespaces - edit namespaces from previously opened tab", () = const writeJsonFile = windowDi.inject(writeJsonFileInjectable); await writeJsonFile( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { dock: { height: 300, diff --git a/src/features/cluster/sidebar-and-tab-navigation-for-core.test.tsx b/src/features/cluster/sidebar-and-tab-navigation-for-core.test.tsx index 026e76adc2..6a3a6b5cad 100644 --- a/src/features/cluster/sidebar-and-tab-navigation-for-core.test.tsx +++ b/src/features/cluster/sidebar-and-tab-navigation-for-core.test.tsx @@ -7,7 +7,6 @@ import { getInjectable } from "@ogre-tools/injectable"; import React from "react"; import type { RenderResult } from "@testing-library/react"; import { fireEvent } from "@testing-library/react"; -import directoryForLensLocalStorageInjectable from "../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; import { routeSpecificComponentInjectionToken } from "../../renderer/routes/route-specific-component-injection-token"; import type { SidebarItemRegistration } from "../../renderer/components/layout/sidebar-items.injectable"; import { sidebarItemsInjectionToken } from "../../renderer/components/layout/sidebar-items.injectable"; @@ -38,10 +37,6 @@ describe("cluster - sidebar and tab navigation for core", () => { builder.beforeWindowStart((windowDi) => { windowDi.override(storageSaveDelayInjectable, () => 250); - - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); }); }); @@ -95,7 +90,7 @@ describe("cluster - sidebar and tab navigation for core", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { sidebar: { expanded: { "some-parent-id": true }, @@ -103,7 +98,9 @@ describe("cluster - sidebar and tab navigation for core", () => { }, }, ); + }); + builder.afterWindowStart(async (windowDi) => { const sidebarStorage = windowDi.inject(sidebarStorageInjectable); await sidebarStorage.whenReady; @@ -135,7 +132,7 @@ describe("cluster - sidebar and tab navigation for core", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-hosted-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-hosted-cluster-id.json", { sidebar: { expanded: { "some-unknown-parent-id": true }, @@ -165,7 +162,7 @@ describe("cluster - sidebar and tab navigation for core", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-hosted-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-hosted-cluster-id.json", { someThingButSidebar: {}, }, @@ -271,7 +268,7 @@ describe("cluster - sidebar and tab navigation for core", () => { const pathExistsFake = windowDi.inject(pathExistsInjectable); const actual = await pathExistsFake( - "/some-directory-for-lens-local-storage/some-hosted-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-hosted-cluster-id.json", ); expect(actual).toBe(false); @@ -283,7 +280,7 @@ describe("cluster - sidebar and tab navigation for core", () => { const readJsonFileFake = windowDi.inject(readJsonFileInjectable); const actual = await readJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", ); expect(actual).toEqual({ diff --git a/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx b/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx index 279de90ee0..e0a20780fe 100644 --- a/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx +++ b/src/features/cluster/sidebar-and-tab-navigation-for-extensions.test.tsx @@ -5,7 +5,6 @@ import React from "react"; import type { RenderResult } from "@testing-library/react"; import { fireEvent } from "@testing-library/react"; -import directoryForLensLocalStorageInjectable from "../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; import routesInjectable from "../../renderer/routes/routes.injectable"; import { matches } from "lodash/fp"; import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; @@ -34,10 +33,6 @@ describe("cluster - sidebar and tab navigation for extensions", () => { applicationBuilder.beforeWindowStart((windowDi) => { windowDi.override(storageSaveDelayInjectable, () => 250); - - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); }); }); @@ -175,7 +170,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { sidebar: { expanded: { "some-extension-name-some-parent-id": true }, @@ -211,7 +206,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { sidebar: { expanded: { "some-extension-name-some-unknown-parent-id": true }, @@ -241,7 +236,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { const writeJsonFileFake = windowDi.inject(writeJsonFileInjectable); await writeJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { someThingButSidebar: {}, }, @@ -387,7 +382,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { const pathExistsFake = windowDi.inject(pathExistsInjectable); const actual = await pathExistsFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", ); expect(actual).toBe(false); @@ -399,7 +394,7 @@ describe("cluster - sidebar and tab navigation for extensions", () => { const readJsonFileFake = windowDi.inject(readJsonFileInjectable); const actual = await readJsonFileFake( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", ); expect(actual).toEqual({ diff --git a/src/features/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts b/src/features/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts index 3f139ca14d..af1d640197 100644 --- a/src/features/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts +++ b/src/features/helm-charts/installing-chart/installing-helm-chart-from-new-tab.test.ts @@ -14,7 +14,6 @@ import type { RequestCreateHelmRelease } from "../../../common/k8s-api/endpoints import requestCreateHelmReleaseInjectable from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable"; import currentPathInjectable from "../../../renderer/routes/current-path.injectable"; 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"; @@ -52,9 +51,6 @@ describe("installing helm chart from new tab", () => { requestCreateHelmReleaseMock = asyncFn(); builder.beforeWindowStart((windowDi) => { - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); windowDi.override(requestDetailedHelmReleaseInjectable, () => requestDetailedHelmReleaseMock); windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock); windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock); @@ -88,7 +84,7 @@ describe("installing helm chart from new tab", () => { const writeJsonFile = windowDi.inject(writeJsonFileInjectable); await writeJsonFile( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { dock: { height: 300, @@ -688,7 +684,7 @@ describe("installing helm chart from new tab", () => { }); it("stores the selected version", async () => { - const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json"); + const actual = await readJsonFile("/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json"); expect(actual).toMatchObject({ install_charts: { @@ -765,7 +761,7 @@ describe("installing helm chart from new tab", () => { }); it("stores the selected namespace", async () => { - const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json"); + const actual = await readJsonFile("/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json"); expect(actual).toMatchObject({ install_charts: { @@ -878,7 +874,7 @@ describe("installing helm chart from new tab", () => { }); it("stores the changed configuration", async () => { - const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json"); + const actual = await readJsonFile("/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json"); expect(actual).toMatchObject({ install_charts: { @@ -946,7 +942,7 @@ describe("installing helm chart from new tab", () => { }); it("stores the changed custom name", async () => { - const actual = await readJsonFile("/some-directory-for-lens-local-storage/some-cluster-id.json"); + const actual = await readJsonFile("/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json"); expect(actual).toMatchObject({ install_charts: { diff --git a/src/features/helm-charts/installing-chart/installing-helm-chart-from-previously-opened-tab.test.ts b/src/features/helm-charts/installing-chart/installing-helm-chart-from-previously-opened-tab.test.ts index c5109375e2..fcdccd171e 100644 --- a/src/features/helm-charts/installing-chart/installing-helm-chart-from-previously-opened-tab.test.ts +++ b/src/features/helm-charts/installing-chart/installing-helm-chart-from-previously-opened-tab.test.ts @@ -12,8 +12,6 @@ import getRandomInstallChartTabIdInjectable from "../../../renderer/components/d import namespaceStoreInjectable from "../../../renderer/components/+namespaces/store.injectable"; import type { NamespaceStore } from "../../../renderer/components/+namespaces/store"; 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 hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import { TabKind } from "../../../renderer/components/dock/dock/store"; import { controlWhenStoragesAreReady } from "../../../renderer/utils/create-storage/storages-are-ready"; import requestCreateHelmReleaseInjectable from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable"; @@ -39,10 +37,6 @@ describe("installing helm chart from previously opened tab", () => { builder.beforeWindowStart((windowDi) => { storagesAreReady = controlWhenStoragesAreReady(windowDi); - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); - windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id"); windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock); windowDi.override(requestHelmChartValuesInjectable, () => requestHelmChartValuesMock); windowDi.override(requestCreateHelmReleaseInjectable, () => jest.fn()); @@ -77,7 +71,7 @@ describe("installing helm chart from previously opened tab", () => { const writeJsonFile = windowDi.inject(writeJsonFileInjectable); await writeJsonFile( - "/some-directory-for-lens-local-storage/some-cluster-id.json", + "/some-electron-app-path-for-user-data/lens-local-storage/some-cluster-id.json", { dock: { height: 300, diff --git a/src/features/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts b/src/features/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts index 10ec2ccdb9..be452176b5 100644 --- a/src/features/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts +++ b/src/features/helm-charts/installing-chart/opening-dock-tab-for-installing-helm-chart.test.ts @@ -12,8 +12,6 @@ import { HelmChart } from "../../../common/k8s-api/endpoints/helm-charts.api"; import getRandomInstallChartTabIdInjectable from "../../../renderer/components/dock/install-chart/get-random-install-chart-tab-id.injectable"; import requestCreateHelmReleaseInjectable from "../../../common/k8s-api/endpoints/helm-releases.api/request-create.injectable"; import { flushPromises } from "../../../common/test-utils/flush-promises"; -import directoryForLensLocalStorageInjectable from "../../../common/directory-for-lens-local-storage/directory-for-lens-local-storage.injectable"; -import hostedClusterIdInjectable from "../../../renderer/cluster-frame-context/hosted-cluster-id.injectable"; import dockStoreInjectable from "../../../renderer/components/dock/dock/store.injectable"; import type { RequestHelmCharts } from "../../../common/k8s-api/endpoints/helm-charts.api/request-charts.injectable"; import type { RequestHelmChartVersions } from "../../../common/k8s-api/endpoints/helm-charts.api/request-versions.injectable"; @@ -39,10 +37,6 @@ describe("opening dock tab for installing helm chart", () => { requestHelmChartValuesMock = jest.fn(); builder.beforeWindowStart((windowDi) => { - windowDi.override(directoryForLensLocalStorageInjectable, () => ({ - get: () => "/some-directory-for-lens-local-storage", - })); - windowDi.override(hostedClusterIdInjectable, () => "some-cluster-id"); windowDi.override(requestHelmChartsInjectable, () => requestHelmChartsMock); windowDi.override(requestHelmChartVersionsInjectable, () => requestHelmChartVersionsMock); windowDi.override(requestHelmChartReadmeInjectable, () => requestHelmChartReadmeMock); diff --git a/src/main/app-paths/app-paths-request-channel-listener.injectable.ts b/src/main/app-paths/app-paths-request-channel-listener.injectable.ts index 436f9f7082..51f1770473 100644 --- a/src/main/app-paths/app-paths-request-channel-listener.injectable.ts +++ b/src/main/app-paths/app-paths-request-channel-listener.injectable.ts @@ -2,7 +2,7 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { appPathsChannel } from "../../common/app-paths/app-paths-channel"; +import { appPathsChannel } from "../../common/app-paths/channel"; import { getRequestChannelListenerInjectable } from "../utils/channel/channel-listeners/listener-tokens"; import appPathsInjectable from "./impl.injectable"; diff --git a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts index 224d420a7a..e0ee8b537b 100644 --- a/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts +++ b/src/main/catalog-sources/__test__/kubeconfig-sync.test.ts @@ -8,8 +8,6 @@ import type { CatalogEntity } from "../../../common/catalog"; import { loadFromOptions } from "../../../common/kube-helpers"; import type { Cluster } from "../../../common/cluster/cluster"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; -import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data.injectable"; -import directoryForTempInjectable from "../../../common/app-paths/directory-for-temp.injectable"; import { iter, strictGet } from "../../../common/utils"; import type { ComputeKubeconfigDiff } from "../kubeconfig-sync/compute-diff.injectable"; import computeKubeconfigDiffInjectable from "../kubeconfig-sync/compute-diff.injectable"; @@ -33,6 +31,10 @@ import createReadFileStreamInjectable from "../../../common/fs/create-read-file- import kubectlBinaryNameInjectable from "../../kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../../kubectl/normalized-arch.injectable"; import normalizedPlatformInjectable from "../../../common/vars/normalized-platform.injectable"; +import { runManyFor } from "../../../common/runnable/run-many-for"; +import { runManySyncFor } from "../../../common/runnable/run-many-sync-for"; +import { beforeApplicationIsLoadingInjectionToken } from "../../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../../start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; describe("kubeconfig-sync.source tests", () => { let computeKubeconfigDiff: ComputeKubeconfigDiff; @@ -46,16 +48,18 @@ describe("kubeconfig-sync.source tests", () => { clusters = new Map(); di.override(getClusterByIdInjectable, () => id => clusters.get(id)); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "some-directory-for-user-data", - })); - di.override(directoryForTempInjectable, () => ({ - get: () => "some-directory-for-temp", - })); di.override(kubectlBinaryNameInjectable, () => "kubectl"); di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); di.override(normalizedPlatformInjectable, () => "darwin"); + const runManySync = runManySyncFor(di); + const runMany = runManyFor(di); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + runAllBeforeElectronIsReady(); + await runAllBeforeApplicationIsLoading(); + kubeconfigSyncs = observable.map(); di.override(kubeconfigSyncsInjectable, () => kubeconfigSyncs); diff --git a/src/main/router/router.test.ts b/src/main/router/router.test.ts index 98684c52ce..f0f897ad68 100644 --- a/src/main/router/router.test.ts +++ b/src/main/router/router.test.ts @@ -14,7 +14,6 @@ import asyncFn from "@async-fn/jest"; import parseRequestInjectable from "./parse-request.injectable"; import { contentTypes } from "./router-content-types"; import mockFs from "mock-fs"; -import directoryForUserDataInjectable from "../../common/app-paths/directory-for-user-data.injectable"; import type { Route } from "./route"; import type { SetRequired } from "type-fest"; import normalizedPlatformInjectable from "../../common/vars/normalized-platform.injectable"; @@ -22,6 +21,10 @@ import kubectlBinaryNameInjectable from "../kubectl/binary-name.injectable"; import kubectlDownloadingNormalizedArchInjectable from "../kubectl/normalized-arch.injectable"; import fsInjectable from "../../common/fs/fs.injectable"; import { runInAction } from "mobx"; +import { runManyFor } from "../../common/runnable/run-many-for"; +import { runManySyncFor } from "../../common/runnable/run-many-sync-for"; +import { beforeApplicationIsLoadingInjectionToken } from "../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; describe("router", () => { let router: Router; @@ -39,13 +42,18 @@ describe("router", () => { payload: "some-payload", mime: "some-mime", })); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "some-directory-for-user-data", - })); di.override(kubectlBinaryNameInjectable, () => "kubectl"); di.override(kubectlDownloadingNormalizedArchInjectable, () => "amd64"); di.override(normalizedPlatformInjectable, () => "darwin"); + const runManySync = runManySyncFor(di); + const runMany = runManyFor(di); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + runAllBeforeElectronIsReady(); + await runAllBeforeApplicationIsLoading(); + const injectable = getInjectable({ id: "some-route", diff --git a/src/main/shell-session/local-shell-session/techincal.test.ts b/src/main/shell-session/local-shell-session/techincal.test.ts index a5b5823de2..704c68c6d6 100644 --- a/src/main/shell-session/local-shell-session/techincal.test.ts +++ b/src/main/shell-session/local-shell-session/techincal.test.ts @@ -5,13 +5,15 @@ import type { DiContainer } from "@ogre-tools/injectable"; import { WebSocket } from "ws"; -import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data.injectable"; import type { Cluster } from "../../../common/cluster/cluster"; +import { runManyFor } from "../../../common/runnable/run-many-for"; +import { runManySyncFor } from "../../../common/runnable/run-many-sync-for"; import platformInjectable from "../../../common/vars/platform.injectable"; import { getDiForUnitTesting } from "../../getDiForUnitTesting"; import createKubectlInjectable from "../../kubectl/create-kubectl.injectable"; import type { Kubectl } from "../../kubectl/kubectl"; -import buildVersionInjectable from "../../vars/build-version/build-version.injectable"; +import { beforeApplicationIsLoadingInjectionToken } from "../../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; +import { beforeElectronIsReadyInjectionToken } from "../../start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; import type { OpenShellSession } from "../create-shell-session.injectable"; import type { SpawnPty } from "../spawn-pty.injectable"; import spawnPtyInjectable from "../spawn-pty.injectable"; @@ -20,17 +22,18 @@ import openLocalShellSessionInjectable from "./open.injectable"; describe("technical unit tests for local shell sessions", () => { let di: DiContainer; - beforeEach(() => { + beforeEach(async () => { di = getDiForUnitTesting({ doGeneralOverrides: true, }); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "/some-directory-for-user-data", - })); - di.override(buildVersionInjectable, () => ({ - get: () => "1.1.1", - })); + const runManySync = runManySyncFor(di); + const runMany = runManyFor(di); + const runAllBeforeElectronIsReady = runManySync(beforeElectronIsReadyInjectionToken); + const runAllBeforeApplicationIsLoading = runMany(beforeApplicationIsLoadingInjectionToken); + + runAllBeforeElectronIsReady(); + await runAllBeforeApplicationIsLoading(); }); describe("when on windows", () => { diff --git a/src/main/stores/init-user-store.injectable.ts b/src/main/stores/init-user-store.injectable.ts index e2dd85a52d..8c782383e1 100644 --- a/src/main/stores/init-user-store.injectable.ts +++ b/src/main/stores/init-user-store.injectable.ts @@ -5,8 +5,8 @@ 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 { initDefaultUpdateChannelOnMainInjectable } from "../../features/application-update/common/selected-update-channel/default-update-channel.injectable"; import { beforeApplicationIsLoadingInjectionToken } from "../start-main-application/runnable-tokens/before-application-is-loading-injection-token"; -import { initializeBuildVersionOnMainInjectable } from "../vars/build-version/build-version.injectable"; const initUserStoreInjectable = getInjectable({ id: "init-user-store", @@ -20,7 +20,7 @@ const initUserStoreInjectable = getInjectable({ await userStoreFileNameMigration(); userStore.load(); }, - runAfter: di.inject(initializeBuildVersionOnMainInjectable), + runAfter: di.inject(initDefaultUpdateChannelOnMainInjectable), }; }, injectionToken: beforeApplicationIsLoadingInjectionToken, diff --git a/src/renderer/components/dock/__test__/dock-tabs.test.tsx b/src/renderer/components/dock/__test__/dock-tabs.test.tsx index 0aaa5a7c7b..bc12b98529 100644 --- a/src/renderer/components/dock/__test__/dock-tabs.test.tsx +++ b/src/renderer/components/dock/__test__/dock-tabs.test.tsx @@ -14,9 +14,16 @@ import { getDiForUnitTesting } from "../../../getDiForUnitTesting"; 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 assert from "assert"; import hostedClusterIdInjectable from "../../../cluster-frame-context/hosted-cluster-id.injectable"; +import { beforeFrameStartsInjectionToken } from "../../../before-frame-starts/before-frame-starts-injection-token"; +import requestFromChannelInjectable from "../../../utils/channel/request-from-channel.injectable"; +import { appPathsChannel } from "../../../../common/app-paths/channel"; +import type { AppPaths } from "../../../../common/app-paths/token"; +import type { RequestChannel } from "../../../../common/utils/channel/request-channel-listener-injection-token"; +import { runManyFor } from "../../../../common/runnable/run-many-for"; +import { syncBoxInitialValueChannel } from "../../../../common/utils/sync-box/channels"; +import { buildVersionChannel } from "../../../../common/vars/build-version/channel"; jest.mock("electron", () => ({ app: { @@ -75,9 +82,43 @@ describe("", () => { render = renderFor(di); di.override(hostedClusterIdInjectable, () => "some-cluster-id"); - di.override(directoryForUserDataInjectable, () => ({ - get: () => "/some-test-suite-specific-directory-for-user-data", - })); + di.override(requestFromChannelInjectable, () => async (channel: RequestChannel) => { + if (channel === appPathsChannel) { + return { + appData: `/some-electron-app-path-for-app-data`, + home: `/some-electron-app-path-for-home`, + userData: `/some-electron-app-path-for-user-data`, + cache: `/some-electron-app-path-for-cache`, + temp: `/some-electron-app-path-for-temp`, + exe: `/some-electron-app-path-for-exe`, + module: `/some-electron-app-path-for-module`, + desktop: `/some-electron-app-path-for-desktop`, + documents: `/some-electron-app-path-for-documents`, + downloads: `/some-electron-app-path-for-downloads`, + music: `/some-electron-app-path-for-music`, + pictures: `/some-electron-app-path-for-pictures`, + videos: `/some-electron-app-path-for-videos`, + logs: `/some-electron-app-path-for-logs`, + crashDumps: `/some-electron-app-path-for-crash-dumps`, + recent: `/some-electron-app-path-for-recent`, + } as AppPaths; + } + + if (channel === syncBoxInitialValueChannel) { + return []; + } + + if (channel === buildVersionChannel) { + return "1.1.1"; + } + + throw new Error(`tried to request data from id="${channel.id}" without override`); + }); + + const runMany = runManyFor(di); + const runAllBeforeFrameStarts = runMany(beforeFrameStartsInjectionToken); + + await runAllBeforeFrameStarts(); dockStore = di.inject(dockStoreInjectable); diff --git a/src/renderer/components/status-bar/status-bar.test.tsx b/src/renderer/components/status-bar/status-bar.test.tsx index a77b11782d..4533d297e9 100644 --- a/src/renderer/components/status-bar/status-bar.test.tsx +++ b/src/renderer/components/status-bar/status-bar.test.tsx @@ -9,7 +9,6 @@ import type { IObservableArray } from "mobx"; import { computed, observable } from "mobx"; import type { StatusBarItems } from "./status-bar-items.injectable"; import statusBarItemsInjectable from "./status-bar-items.injectable"; -import directoryForUserDataInjectable from "../../../common/app-paths/directory-for-user-data.injectable"; import type { ApplicationBuilder } from "../test-utils/get-application-builder"; import { getApplicationBuilder } from "../test-utils/get-application-builder"; import getRandomIdInjectable from "../../../common/utils/get-random-id.injectable"; @@ -26,9 +25,6 @@ describe("", () => { builder.beforeWindowStart((windowDi) => { windowDi.unoverride(getRandomIdInjectable); windowDi.permitSideEffects(getRandomIdInjectable); - windowDi.override(directoryForUserDataInjectable, () => ({ - get: () => "some-directory-for-user-data", - })); }); builder.extensions.enable({