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

Fix unit tests failing on windows by using injectable verions of path functions

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-08-26 15:57:41 -04:00
parent bcb01acc12
commit f596a40204
4 changed files with 21 additions and 12 deletions

View File

@ -28,6 +28,7 @@ import getDirnameOfPathInjectable from "../../common/path/get-dirname.injectable
import getRelativePathInjectable from "../../common/path/get-relative-path.injectable";
import joinPathsInjectable from "../../common/path/join-paths.injectable";
import removePathInjectable from "../../common/fs/remove-path.injectable";
import homeDirectoryPathInjectable from "../../common/os/home-directory-path.injectable";
const extensionDiscoveryInjectable = getInjectable({
id: "extension-discovery",
@ -57,6 +58,7 @@ const extensionDiscoveryInjectable = getInjectable({
getDirnameOfPath: di.inject(getDirnameOfPathInjectable),
getRelativePath: di.inject(getRelativePathInjectable),
joinPaths: di.inject(joinPathsInjectable),
homeDirectoryPath: di.inject(homeDirectoryPathInjectable),
}),
});

View File

@ -4,8 +4,6 @@
*/
import type { FSWatcher } from "chokidar";
import path from "path";
import os from "os";
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
import extensionDiscoveryInjectable from "../extension-discovery/extension-discovery.injectable";
import type { ExtensionDiscovery } from "../extension-discovery/extension-discovery";
@ -18,20 +16,28 @@ import pathExistsInjectable from "../../common/fs/path-exists.injectable";
import watchInjectable from "../../common/fs/watch/watch.injectable";
import extensionApiVersionInjectable from "../../common/vars/extension-api-version.injectable";
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";
describe("ExtensionDiscovery", () => {
let extensionDiscovery: ExtensionDiscovery;
let readJsonFileMock: jest.Mock;
let pathExistsMock: jest.Mock;
let watchMock: jest.Mock;
let joinPaths: JoinPaths;
let homeDirectoryPath: string;
beforeEach(() => {
const di = getDiForUnitTesting({ doGeneralOverrides: true });
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
di.override(directoryForUserDataInjectable, () => "/some-directory-for-user-data");
di.override(installExtensionInjectable, () => () => Promise.resolve());
di.override(extensionApiVersionInjectable, () => "5.0.0");
joinPaths = di.inject(joinPathsInjectable);
homeDirectoryPath = di.inject(homeDirectoryPathInjectable);
readJsonFileMock = jest.fn();
di.override(readJsonFileInjectable, () => readJsonFileMock);
@ -51,7 +57,7 @@ describe("ExtensionDiscovery", () => {
let addHandler!: (filePath: string) => void;
readJsonFileMock.mockImplementation((p) => {
expect(p).toBe(path.join(os.homedir(), ".k8slens/extensions/my-extension/package.json"));
expect(p).toBe(joinPaths(homeDirectoryPath, ".k8slens/extensions/my-extension/package.json"));
return {
name: "my-extension",
@ -82,7 +88,7 @@ describe("ExtensionDiscovery", () => {
extensionDiscovery.events.on("add", extension => {
expect(extension).toEqual({
absolutePath: expect.any(String),
id: path.normalize("some-directory-for-user-data/node_modules/my-extension/package.json"),
id: "/some-directory-for-user-data/node_modules/my-extension/package.json",
isBundled: false,
isEnabled: false,
isCompatible: true,
@ -93,12 +99,12 @@ describe("ExtensionDiscovery", () => {
lens: "5.0.0",
},
},
manifestPath: path.normalize("some-directory-for-user-data/node_modules/my-extension/package.json"),
manifestPath: "/some-directory-for-user-data/node_modules/my-extension/package.json",
});
letTestFinish.set(true);
});
addHandler(path.join(extensionDiscovery.localFolderPath, "/my-extension/package.json"));
addHandler(joinPaths(extensionDiscovery.localFolderPath, "/my-extension/package.json"));
await when(() => letTestFinish.get());
});
@ -126,7 +132,7 @@ describe("ExtensionDiscovery", () => {
extensionDiscovery.events.on("add", onAdd);
addHandler(path.join(extensionDiscovery.localFolderPath, "/my-extension/node_modules/dep/package.json"));
addHandler(joinPaths(extensionDiscovery.localFolderPath, "/my-extension/node_modules/dep/package.json"));
await delay(10);

View File

@ -6,7 +6,6 @@
import { ipcRenderer } from "electron";
import { EventEmitter } from "events";
import { makeObservable, observable, reaction, when } from "mobx";
import os from "os";
import { broadcastMessage, ipcMainHandle, ipcRendererOn } from "../../common/ipc";
import { isErrnoException, toJS } from "../../common/utils";
import type { ExtensionsStore } from "../extensions-store/extensions-store";
@ -42,6 +41,7 @@ interface Dependencies {
readonly logger: Logger;
readonly isProduction: boolean;
readonly fileSystemSeparator: string;
readonly homeDirectoryPath: string;
isCompatibleExtension: (manifest: LensExtensionManifest) => boolean;
installExtension: (name: string) => Promise<void>;
installExtensions: (packageJsonPath: string, packagesJson: PackageJson) => Promise<void>;
@ -124,7 +124,7 @@ export class ExtensionDiscovery {
}
get localFolderPath(): string {
return this.dependencies.joinPaths(os.homedir(), ".k8slens", "extensions");
return this.dependencies.joinPaths(this.dependencies.homeDirectoryPath, ".k8slens", "extensions");
}
get packageJsonPath(): string {

View File

@ -18,8 +18,8 @@ import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-c
import type { Cluster } from "../../../common/cluster/cluster";
import navigateToCatalogInjectable from "../../../common/front-end-routing/routes/catalog/navigate-to-catalog.injectable";
import appEventBusInjectable from "../../../common/app-event-bus/app-event-bus.injectable";
import path from "path";
import directoryForKubeConfigsInjectable from "../../../common/app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
import joinPathsInjectable from "../../../common/path/join-paths.injectable";
const currentClusterServerUrl = "https://localhost";
const nonCurrentClusterServerUrl = "http://localhost";
@ -208,6 +208,7 @@ describe("Deleting a cluster", () => {
config.loadFromString(singleClusterConfig);
const directoryForKubeConfigs = builder.applicationWindow.only.di.inject(directoryForKubeConfigsInjectable);
const joinPaths = builder.applicationWindow.only.di.inject(joinPathsInjectable);
currentCluster = createCluster({
id: "some-cluster",
@ -215,7 +216,7 @@ describe("Deleting a cluster", () => {
preferences: {
clusterName: "some-cluster",
},
kubeConfigPath: path.join(directoryForKubeConfigs, "some-cluster.json"),
kubeConfigPath: joinPaths(directoryForKubeConfigs, "some-cluster.json"),
}, {
clusterServerUrl: singleClusterServerUrl,
});