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

Simplify overriding of platform in a unit test

Also make typing of platforms more strict, and remove some magic strings.
Also add a TODO for further OCP-ification.

Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
Iku-turso 2022-10-26 11:34:55 +03:00
parent 155f4dfeb3
commit b93bea359b
3 changed files with 49 additions and 66 deletions

View File

@ -4,9 +4,12 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
// Todo: OCP by creating distinct injectables for platforms.
export const allPlatforms = ["win32", "darwin", "linux"] as const;
const platformInjectable = getInjectable({
id: "platform",
instantiate: () => process.platform,
instantiate: () => process.platform as typeof allPlatforms[number],
causesSideEffects: true,
});

View File

@ -1,46 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`application-menu, given environment is 'linux' given enough time passes populates application menu 1`] = `
Array [
"root",
"root -> file",
"root -> file -> add-cluster",
"root -> file -> navigate-to-preferences",
"root -> file -> navigate-to-extensions",
"root -> file -> quit",
"root -> edit",
"root -> edit -> undo",
"root -> edit -> redo",
"root -> edit -> separator-1-in-edit",
"root -> edit -> cut",
"root -> edit -> copy",
"root -> edit -> paste",
"root -> edit -> delete",
"root -> edit -> separator-2-in-edit",
"root -> edit -> selectAll",
"root -> view",
"root -> view -> navigate-to-catalog",
"root -> view -> open-command-palette",
"root -> view -> separator-1-for-view",
"root -> view -> go-back",
"root -> view -> go-forward",
"root -> view -> reload",
"root -> view -> toggle-dev-tools",
"root -> view -> separator-2-for-view",
"root -> view -> reset-zoom",
"root -> view -> zoom-in",
"root -> view -> zoom-out",
"root -> view -> separator-3-for-view",
"root -> view -> toggle-full-screen",
"root -> help",
"root -> help -> navigate-to-welcome",
"root -> help -> open-documentation",
"root -> help -> open-support",
"root -> help -> about",
]
`;
exports[`application-menu, given environment is 'mac' given enough time passes populates application menu 1`] = `
exports[`application-menu, given platform is 'darwin' given enough time passes populates application menu 1`] = `
Array [
"root",
"root -> mac",
@ -91,7 +51,47 @@ Array [
]
`;
exports[`application-menu, given environment is 'win' given enough time passes populates application menu 1`] = `
exports[`application-menu, given platform is 'linux' given enough time passes populates application menu 1`] = `
Array [
"root",
"root -> file",
"root -> file -> add-cluster",
"root -> file -> navigate-to-preferences",
"root -> file -> navigate-to-extensions",
"root -> file -> quit",
"root -> edit",
"root -> edit -> undo",
"root -> edit -> redo",
"root -> edit -> separator-1-in-edit",
"root -> edit -> cut",
"root -> edit -> copy",
"root -> edit -> paste",
"root -> edit -> delete",
"root -> edit -> separator-2-in-edit",
"root -> edit -> selectAll",
"root -> view",
"root -> view -> navigate-to-catalog",
"root -> view -> open-command-palette",
"root -> view -> separator-1-for-view",
"root -> view -> go-back",
"root -> view -> go-forward",
"root -> view -> reload",
"root -> view -> toggle-dev-tools",
"root -> view -> separator-2-for-view",
"root -> view -> reset-zoom",
"root -> view -> zoom-in",
"root -> view -> zoom-out",
"root -> view -> separator-3-for-view",
"root -> view -> toggle-full-screen",
"root -> help",
"root -> help -> navigate-to-welcome",
"root -> help -> open-documentation",
"root -> help -> open-support",
"root -> help -> about",
]
`;
exports[`application-menu, given platform is 'win32' given enough time passes populates application menu 1`] = `
Array [
"root",
"root -> file",

View File

@ -7,11 +7,9 @@ import { getApplicationBuilder } from "../../renderer/components/test-utils/get-
import populateApplicationMenuInjectable from "./main/populate-application-menu.injectable";
import { advanceFakeTime, useFakeTime } from "../../common/test-utils/use-fake-time";
import { getCompositePaths } from "../../common/utils/composite/get-composite-paths/get-composite-paths";
import isMacInjectable from "../../common/vars/is-mac.injectable";
import isWindowsInjectable from "../../common/vars/is-windows.injectable";
import isLinuxInjectable from "../../common/vars/is-linux.injectable";
import platformInjectable, { allPlatforms } from "../../common/vars/platform.injectable";
describe.each(["win", "mac", "linux"])("application-menu, given environment is '%s'", (environment) => {
describe.each(allPlatforms)("application-menu, given platform is '%s'", (platform) => {
let builder: ApplicationBuilder;
let populateApplicationMenuMock: jest.Mock;
@ -23,25 +21,7 @@ describe.each(["win", "mac", "linux"])("application-menu, given environment is '
builder = getApplicationBuilder();
builder.beforeApplicationStart((mainDi) => {
switch (environment) {
case "mac":
mainDi.override(isMacInjectable, () => true);
mainDi.override(isWindowsInjectable, () => false);
mainDi.override(isLinuxInjectable, () => false);
break;
case "win":
mainDi.override(isMacInjectable, () => false);
mainDi.override(isWindowsInjectable, () => true);
mainDi.override(isLinuxInjectable, () => false);
break;
case "linux":
mainDi.override(isMacInjectable, () => false);
mainDi.override(isWindowsInjectable, () => false);
mainDi.override(isLinuxInjectable, () => true);
break;
}
mainDi.override(platformInjectable, () => platform);
mainDi.override(
populateApplicationMenuInjectable,