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 { fireEvent } from "@testing-library/react";
|
||||||
import { getRendererExtensionFake } from "../../renderer/components/test-utils/get-renderer-extension-fake";
|
import { getRendererExtensionFake } from "../../renderer/components/test-utils/get-renderer-extension-fake";
|
||||||
import type { LensRendererExtension } from "../../extensions/lens-renderer-extension";
|
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 routesInjectable from "../../renderer/routes/routes.injectable";
|
||||||
import { matches } from "lodash/fp";
|
import { matches } from "lodash/fp";
|
||||||
import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder";
|
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;
|
rendererDi = applicationBuilder.dis.rendererDi;
|
||||||
|
|
||||||
applicationBuilder.setEnvironmentToClusterFrame();
|
applicationBuilder.setEnvironmentToClusterFrame();
|
||||||
|
|
||||||
applicationBuilder.beforeSetups(({ rendererDi }) => {
|
|
||||||
rendererDi.override(
|
|
||||||
directoryForLensLocalStorageInjectable,
|
|
||||||
() => "/some-directory-for-lens-local-storage",
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("given extension with cluster pages and cluster page menus", () => {
|
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 setElectronAppPathInjectable from "./app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
||||||
import appNameInjectable from "./app-paths/app-name/app-name.injectable";
|
import appNameInjectable from "./app-paths/app-name/app-name.injectable";
|
||||||
import registerChannelInjectable from "./app-paths/register-channel/register-channel.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 directoryForBundledBinariesInjectable from "../common/app-paths/directory-for-bundled-binaries/directory-for-bundled-binaries.injectable";
|
||||||
import spawnInjectable from "./child-process/spawn.injectable";
|
import spawnInjectable from "./child-process/spawn.injectable";
|
||||||
import extensionsStoreInjectable from "../extensions/extensions-store/extensions-store.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 { joinPathsFake } from "../common/test-utils/join-paths-fake";
|
||||||
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
||||||
import loggerInjectable from "./logger/logger.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 = (
|
export interface GetDiForUnitTestingOptions {
|
||||||
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
doGeneralOverrides?: boolean;
|
||||||
) => {
|
memFsVolume?: Volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDiForUnitTesting(opts?: GetDiForUnitTestingOptions) {
|
||||||
|
const {
|
||||||
|
doGeneralOverrides = false,
|
||||||
|
memFsVolume,
|
||||||
|
} = opts ?? {};
|
||||||
const di = createContainer();
|
const di = createContainer();
|
||||||
|
|
||||||
setLegacyGlobalDiForExtensionApi(di, Environments.main);
|
setLegacyGlobalDiForExtensionApi(di, Environments.main);
|
||||||
@ -92,17 +98,7 @@ export const getDiForUnitTesting = (
|
|||||||
} as any;
|
} as any;
|
||||||
});
|
});
|
||||||
|
|
||||||
di.override(writeJsonFileInjectable, () => () => {
|
overrideFsWithFakes(di, memFsVolume);
|
||||||
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.");
|
|
||||||
});
|
|
||||||
|
|
||||||
di.override(loggerInjectable, () => ({
|
di.override(loggerInjectable, () => ({
|
||||||
warn: noop,
|
warn: noop,
|
||||||
@ -113,7 +109,7 @@ export const getDiForUnitTesting = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
return di;
|
return di;
|
||||||
};
|
}
|
||||||
|
|
||||||
const getInjectableFilePaths = memoize(() => [
|
const getInjectableFilePaths = memoize(() => [
|
||||||
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
||||||
|
|||||||
@ -118,8 +118,9 @@ export const getApplicationBuilder = () => {
|
|||||||
|
|
||||||
let environment = environments.application;
|
let environment = environments.application;
|
||||||
|
|
||||||
rendererDi.override( currentlyInClusterFrameInjectable, () => environment === environments.clusterFrame);
|
rendererDi.override(currentlyInClusterFrameInjectable, () => environment === environments.clusterFrame);
|
||||||
rendererDi.override(rendererExtensionsInjectable, () => computed(() => extensionsState));
|
rendererDi.override(rendererExtensionsInjectable, () => computed(() => extensionsState));
|
||||||
|
rendererDi.override(directoryForLensLocalStorageInjectable, () => "/some-directory-for-lens-local-storage");
|
||||||
mainDi.override(mainExtensionsInjectable, () => computed((): LensMainExtension[] => []));
|
mainDi.override(mainExtensionsInjectable, () => computed((): LensMainExtension[] => []));
|
||||||
mainDi.override(exitAppInjectable, () => exit);
|
mainDi.override(exitAppInjectable, () => exit);
|
||||||
|
|
||||||
@ -204,11 +205,6 @@ export const getApplicationBuilder = () => {
|
|||||||
computed(() => new Set([...allowedResourcesState])),
|
computed(() => new Set([...allowedResourcesState])),
|
||||||
);
|
);
|
||||||
|
|
||||||
rendererDi.override(
|
|
||||||
directoryForLensLocalStorageInjectable,
|
|
||||||
() => "/irrelevant",
|
|
||||||
);
|
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -33,10 +33,18 @@ import joinPathsInjectable from "../common/path/join-paths.injectable";
|
|||||||
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
|
import { joinPathsFake } from "../common/test-utils/join-paths-fake";
|
||||||
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
import hotbarStoreInjectable from "../common/hotbar-store.injectable";
|
||||||
import loggerInjectable from "./logger/logger.injectable";
|
import loggerInjectable from "./logger/logger.injectable";
|
||||||
|
import type { Volume } from "memfs/lib/volume";
|
||||||
|
|
||||||
export const getDiForUnitTesting = (
|
export interface GetDiForUnitTestingOptions {
|
||||||
{ doGeneralOverrides } = { doGeneralOverrides: false },
|
doGeneralOverrides?: boolean;
|
||||||
) => {
|
memFsVolume?: Volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDiForUnitTesting(opts?: GetDiForUnitTestingOptions) {
|
||||||
|
const {
|
||||||
|
doGeneralOverrides = false,
|
||||||
|
memFsVolume,
|
||||||
|
} = opts ?? {};
|
||||||
const di = createContainer();
|
const di = createContainer();
|
||||||
|
|
||||||
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
setLegacyGlobalDiForExtensionApi(di, Environments.renderer);
|
||||||
@ -74,7 +82,7 @@ export const getDiForUnitTesting = (
|
|||||||
di.override(getValueFromRegisteredChannelInjectable, () => () => undefined);
|
di.override(getValueFromRegisteredChannelInjectable, () => () => undefined);
|
||||||
di.override(registerIpcChannelListenerInjectable, () => () => undefined);
|
di.override(registerIpcChannelListenerInjectable, () => () => undefined);
|
||||||
|
|
||||||
overrideFsWithFakes(di);
|
overrideFsWithFakes(di, memFsVolume);
|
||||||
|
|
||||||
di.override(observableHistoryInjectable, () => {
|
di.override(observableHistoryInjectable, () => {
|
||||||
const historyFake = createMemoryHistory();
|
const historyFake = createMemoryHistory();
|
||||||
@ -84,7 +92,7 @@ export const getDiForUnitTesting = (
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
di.override(focusWindowInjectable, () => () => {});
|
di.override(focusWindowInjectable, () => () => { });
|
||||||
|
|
||||||
di.override(loggerInjectable, () => ({
|
di.override(loggerInjectable, () => ({
|
||||||
warn: noop,
|
warn: noop,
|
||||||
@ -95,7 +103,7 @@ export const getDiForUnitTesting = (
|
|||||||
}
|
}
|
||||||
|
|
||||||
return di;
|
return di;
|
||||||
};
|
}
|
||||||
|
|
||||||
const getInjectableFilePaths = memoize(() => [
|
const getInjectableFilePaths = memoize(() => [
|
||||||
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
...glob.sync("./**/*.injectable.{ts,tsx}", { cwd: __dirname }),
|
||||||
|
|||||||
@ -5,10 +5,35 @@
|
|||||||
import { getDiForUnitTesting as getRendererDi } from "../renderer/getDiForUnitTesting";
|
import { getDiForUnitTesting as getRendererDi } from "../renderer/getDiForUnitTesting";
|
||||||
import { getDiForUnitTesting as getMainDi } from "../main/getDiForUnitTesting";
|
import { getDiForUnitTesting as getMainDi } from "../main/getDiForUnitTesting";
|
||||||
import { overrideIpcBridge } from "./override-ipc-bridge";
|
import { overrideIpcBridge } from "./override-ipc-bridge";
|
||||||
|
import { Volume } from "memfs";
|
||||||
|
|
||||||
export const getDisForUnitTesting = ({ doGeneralOverrides } = { doGeneralOverrides: false }) => {
|
export interface GetDisForUnitTestingOptions {
|
||||||
const rendererDi = getRendererDi({ doGeneralOverrides });
|
doGeneralOverrides?: boolean;
|
||||||
const mainDi = getMainDi({ doGeneralOverrides });
|
}
|
||||||
|
|
||||||
|
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 });
|
overrideIpcBridge({ rendererDi, mainDi });
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import pathExistsInjectable from "../common/fs/path-exists.injectable";
|
|||||||
import { createFsFromVolume, Volume } from "memfs";
|
import { createFsFromVolume, Volume } from "memfs";
|
||||||
import statInjectable from "../common/fs/stat.injectable";
|
import statInjectable from "../common/fs/stat.injectable";
|
||||||
|
|
||||||
export const overrideFsWithFakes = (di: DiContainer) => {
|
export function overrideFsWithFakes(di: DiContainer, memFsVolume = Volume.fromJSON({})) {
|
||||||
const inMemoryFs = createFsFromVolume(Volume.fromJSON({}));
|
const inMemoryFs = createFsFromVolume(memFsVolume);
|
||||||
|
|
||||||
di.override(readFileInjectable, () => (
|
di.override(readFileInjectable, () => (
|
||||||
(filePath) => Promise.resolve(inMemoryFs.readFileSync(filePath, { encoding: "utf-8" }))
|
(filePath) => Promise.resolve(inMemoryFs.readFileSync(filePath, { encoding: "utf-8" }))
|
||||||
@ -28,4 +28,4 @@ export const overrideFsWithFakes = (di: DiContainer) => {
|
|||||||
di.override(statInjectable, () => (
|
di.override(statInjectable, () => (
|
||||||
(filePath) => Promise.resolve(inMemoryFs.statSync(filePath))
|
(filePath) => Promise.resolve(inMemoryFs.statSync(filePath))
|
||||||
));
|
));
|
||||||
};
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user