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:
parent
c986135905
commit
311b69f365
@ -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", () => {
|
||||
|
||||
@ -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 }),
|
||||
|
||||
@ -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;
|
||||
},
|
||||
|
||||
|
||||
@ -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 }),
|
||||
|
||||
@ -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 });
|
||||
|
||||
|
||||
@ -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))
|
||||
));
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user