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

Fix behavioural tests using wrong assumptions on paths

- Add default directories to memfs volume

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2022-04-29 10:28:38 -04:00
parent c986135905
commit 311b69f365
6 changed files with 61 additions and 44 deletions

View File

@ -7,7 +7,6 @@ import type { RenderResult } from "@testing-library/react";
import { fireEvent } from "@testing-library/react";
import { getRendererExtensionFake } from "../../renderer/components/test-utils/get-renderer-extension-fake";
import type { LensRendererExtension } from "../../extensions/lens-renderer-extension";
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";
@ -30,13 +29,6 @@ describe("cluster - sidebar and tab navigation for extensions", () => {
rendererDi = applicationBuilder.dis.rendererDi;
applicationBuilder.setEnvironmentToClusterFrame();
applicationBuilder.beforeSetups(({ rendererDi }) => {
rendererDi.override(
directoryForLensLocalStorageInjectable,
() => "/some-directory-for-lens-local-storage",
);
});
});
describe("given extension with cluster pages and cluster page menus", () => {

View File

@ -12,9 +12,6 @@ import getElectronAppPathInjectable from "./app-paths/get-electron-app-path/get-
import setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
import appNameInjectable from "./app-paths/app-name/app-name.injectable";
import registerChannelInjectable from "./app-paths/register-channel/register-channel.injectable";
import writeJsonFileInjectable from "../common/fs/write-json-file.injectable";
import readJsonFileInjectable from "../common/fs/read-json-file.injectable";
import readFileInjectable from "../common/fs/read-file.injectable";
import directoryForBundledBinariesInjectable from "../common/app-paths/directory-for-bundled-binaries/directory-for-bundled-binaries.injectable";
import spawnInjectable from "./child-process/spawn.injectable";
import extensionsStoreInjectable from "../extensions/extensions-store/extensions-store.injectable";
@ -35,10 +32,19 @@ import joinPathsInjectable from "../common/path/join-paths.injectable";
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
import loggerInjectable from "./logger/logger.injectable";
import type { Volume } from "memfs/lib/volume";
import { overrideFsWithFakes } from "../test-utils/override-fs-with-fakes";
export const getDiForUnitTesting = (
{ doGeneralOverrides } = { doGeneralOverrides: false },
) => {
export interface GetDiForUnitTestingOptions {
doGeneralOverrides?: boolean;
memFsVolume?: Volume;
}
export function getDiForUnitTesting(opts?: GetDiForUnitTestingOptions) {
const {
doGeneralOverrides = false,
memFsVolume,
} = opts ?? {};
const di = createContainer();
setLegacyGlobalDiForExtensionApi(di, Environments.main);
@ -92,17 +98,7 @@ export const getDiForUnitTesting = (
} as any;
});
di.override(writeJsonFileInjectable, () => () => {
throw new Error("Tried to write JSON file to file system without specifying explicit override.");
});
di.override(readJsonFileInjectable, () => () => {
throw new Error("Tried to read JSON file from file system without specifying explicit override.");
});
di.override(readFileInjectable, () => () => {
throw new Error("Tried to read file from file system without specifying explicit override.");
});
overrideFsWithFakes(di, memFsVolume);
di.override(loggerInjectable, () => ({
warn: noop,
@ -113,7 +109,7 @@ export const getDiForUnitTesting = (
}
return di;
};
}
const getInjectableFilePaths = memoize(() => [
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),

View File

@ -118,8 +118,9 @@ export const getApplicationBuilder = () => {
let environment = environments.application;
rendererDi.override( currentlyInClusterFrameInjectable, () => environment === environments.clusterFrame);
rendererDi.override(currentlyInClusterFrameInjectable, () => environment === environments.clusterFrame);
rendererDi.override(rendererExtensionsInjectable, () => computed(() => extensionsState));
rendererDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
mainDi.override(mainExtensionsInjectable, () => computed((): LensMainExtension[] => []));
mainDi.override(exitAppInjectable, () => exit);
@ -204,11 +205,6 @@ export const getApplicationBuilder = () => {
computed(() => new Set([...allowedResourcesState])),
);
rendererDi.override(
directoryForLensLocalStorageInjectable,
() => "/irrelevant",
);
return builder;
},

View File

@ -33,10 +33,18 @@ import joinPathsInjectable from "../common/path/join-paths.injectable";
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
import loggerInjectable from "./logger/logger.injectable";
import type { Volume } from "memfs/lib/volume";
export const getDiForUnitTesting = (
{ doGeneralOverrides } = { doGeneralOverrides: false },
) => {
export interface GetDiForUnitTestingOptions {
doGeneralOverrides?: boolean;
memFsVolume?: Volume;
}
export function getDiForUnitTesting(opts?: GetDiForUnitTestingOptions) {
const {
doGeneralOverrides = false,
memFsVolume,
} = opts ?? {};
const di = createContainer();
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
@ -74,7 +82,7 @@ export const getDiForUnitTesting = (
di.override(getValueFromRegisteredChannelInjectable, () => () => undefined);
di.override(registerIpcChannelListenerInjectable, () => () => undefined);
overrideFsWithFakes(di);
overrideFsWithFakes(di, memFsVolume);
di.override(observableHistoryInjectable, () => {
const historyFake = createMemoryHistory();
@ -84,7 +92,7 @@ export const getDiForUnitTesting = (
});
});
di.override(focusWindowInjectable, () => () => {});
di.override(focusWindowInjectable, () => () => { });
di.override(loggerInjectable, () => ({
warn: noop,
@ -95,7 +103,7 @@ export const getDiForUnitTesting = (
}
return di;
};
}
const getInjectableFilePaths = memoize(() => [
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),

View File

@ -5,10 +5,35 @@
import { getDiForUnitTesting as getRendererDi } from "../renderer/getDiForUnitTesting";
import { getDiForUnitTesting as getMainDi } from "../main/getDiForUnitTesting";
import { overrideIpcBridge } from "./override-ipc-bridge";
import { Volume } from "memfs";
export const getDisForUnitTesting = ({ doGeneralOverrides } = { doGeneralOverrides: false }) => {
const rendererDi = getRendererDi({ doGeneralOverrides });
const mainDi = getMainDi({ doGeneralOverrides });
export interface GetDisForUnitTestingOptions {
doGeneralOverrides?: boolean;
}
export const getDisForUnitTesting = (opts: GetDisForUnitTestingOptions = {}) => {
const memFsVolume = Volume.fromNestedJSON({
"some-bin-directory": {},
"some-directory-for-lens-local-storage": {},
"some-electron-app-path-for-home": {},
"some-electron-app-path-for-app-data": {},
"some-electron-app-path-for-cache": {},
"some-electron-app-path-for-temp": {},
"some-electron-app-path-for-exe": {},
"some-electron-app-path-for-module": {},
"some-electron-app-path-for-desktop": {},
"some-electron-app-path-for-documents": {},
"some-electron-app-path-for-downloads": {},
"some-electron-app-path-for-music": {},
"some-electron-app-path-for-pictures": {},
"some-electron-app-path-for-videos": {},
"some-electron-app-path-for-logs": {},
"some-electron-app-path-for-crash-dumps": {},
"some-electron-app-path-for-crash-recent": {},
}, "/");
const rendererDi = getRendererDi({ ...opts, memFsVolume });
const mainDi = getMainDi({ ...opts, memFsVolume });
overrideIpcBridge({ rendererDi, mainDi });

View File

@ -10,8 +10,8 @@ import pathExistsInjectable from "../common/fs/path-exists.injectable";
import { createFsFromVolume, Volume } from "memfs";
import statInjectable from "../common/fs/stat.injectable";
export const overrideFsWithFakes = (di: DiContainer) => {
const inMemoryFs = createFsFromVolume(Volume.fromJSON({}));
export function overrideFsWithFakes(di: DiContainer, memFsVolume = Volume.fromJSON({})) {
const inMemoryFs = createFsFromVolume(memFsVolume);
di.override(readFileInjectable, () => (
(filePath) => Promise.resolve(inMemoryFs.readFileSync(filePath, { encoding: "utf-8" }))
@ -28,4 +28,4 @@ export const overrideFsWithFakes = (di: DiContainer) => {
di.override(statInjectable, () => (
(filePath) => Promise.resolve(inMemoryFs.statSync(filePath))
));
};
}