diff --git a/src/common/vars/platform.injectable.ts b/src/common/vars/platform.injectable.ts index 11939a7f06..f2c681d657 100644 --- a/src/common/vars/platform.injectable.ts +++ b/src/common/vars/platform.injectable.ts @@ -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, }); diff --git a/src/features/application-menu/__snapshots__/application-menu.test.ts.snap b/src/features/application-menu/__snapshots__/application-menu.test.ts.snap index 4607a70fd4..25ee762fea 100644 --- a/src/features/application-menu/__snapshots__/application-menu.test.ts.snap +++ b/src/features/application-menu/__snapshots__/application-menu.test.ts.snap @@ -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", diff --git a/src/features/application-menu/application-menu.test.ts b/src/features/application-menu/application-menu.test.ts index 8a37be26e5..e0128b83fb 100644 --- a/src/features/application-menu/application-menu.test.ts +++ b/src/features/application-menu/application-menu.test.ts @@ -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,