diff --git a/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap b/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap index 34fbe7daca..bb362ea546 100644 --- a/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap +++ b/src/behaviours/application-update/__snapshots__/installing-update-using-tray.test.ts.snap @@ -628,7 +628,7 @@ exports[`installing update using tray when started when user checks for updates > - - close - - - - -
-
- - - info_outline - - -
-
-
- - Update Available - -

- Version some-version of Lens IDE is available and ready to be installed. Would you like to update now? - -Lens should restart automatically, if it doesn't please restart manually. Installed extensions might require updating. -

-
- - -
-
-
-
- `; -exports[`installing update when started when user checks for updates when new update is discovered when download succeeds when user answers not to install the update renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - - -
-
-
-
-
-
-
-
-
- -`; - -exports[`installing update when started when user checks for updates when new update is discovered when download succeeds when user answers to install the update renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - - -
-
-
-
-
-
-
-
-
- -`; - exports[`installing update when started when user checks for updates when no new update is discovered renders 1`] = `
diff --git a/src/behaviours/application-update/installing-update.test.ts b/src/behaviours/application-update/installing-update.test.ts index 14cd107598..2d3516a6ed 100644 --- a/src/behaviours/application-update/installing-update.test.ts +++ b/src/behaviours/application-update/installing-update.test.ts @@ -15,8 +15,6 @@ import asyncFn from "@async-fn/jest"; import type { DownloadPlatformUpdate } from "../../main/application-update/download-platform-update/download-platform-update.injectable"; import downloadPlatformUpdateInjectable from "../../main/application-update/download-platform-update/download-platform-update.injectable"; import setUpdateOnQuitInjectable from "../../main/electron-app/features/set-update-on-quit.injectable"; -import type { AskBoolean } from "../../main/ask-boolean/ask-boolean.injectable"; -import askBooleanInjectable from "../../main/ask-boolean/ask-boolean.injectable"; import showInfoNotificationInjectable from "../../renderer/components/notifications/show-info-notification.injectable"; import processCheckingForUpdatesInjectable from "../../main/application-update/check-for-updates/process-checking-for-updates.injectable"; @@ -27,7 +25,6 @@ describe("installing update", () => { let downloadPlatformUpdateMock: AsyncFnMock; let setUpdateOnQuitMock: jest.Mock; let showInfoNotificationMock: jest.Mock; - let askBooleanMock: AsyncFnMock; beforeEach(() => { applicationBuilder = getApplicationBuilder(); @@ -38,11 +35,9 @@ describe("installing update", () => { downloadPlatformUpdateMock = asyncFn(); setUpdateOnQuitMock = jest.fn(); showInfoNotificationMock = jest.fn(() => () => {}); - askBooleanMock = asyncFn(); rendererDi.override(showInfoNotificationInjectable, () => showInfoNotificationMock); - mainDi.override(askBooleanInjectable, () => askBooleanMock); mainDi.override(setUpdateOnQuitInjectable, () => setUpdateOnQuitMock); mainDi.override( @@ -160,10 +155,6 @@ describe("installing update", () => { expect(showInfoNotificationMock).toHaveBeenCalledWith("Download of update failed"); }); - it("does not ask user to install update", () => { - expect(askBooleanMock).not.toHaveBeenCalled(); - }); - it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); @@ -181,43 +172,6 @@ describe("installing update", () => { it("renders", () => { expect(rendered.baseElement).toMatchSnapshot(); }); - - it("asks user to install update immediately", () => { - expect(askBooleanMock).toHaveBeenCalledWith({ - title: "Update Available", - question: - "Version some-version of Lens IDE is available and ready to be installed. Would you like to update now?\n\n" + - "Lens should restart automatically, if it doesn't please restart manually. Installed extensions might require updating.", - }); - }); - - describe("when user answers to install the update", () => { - beforeEach(async () => { - await askBooleanMock.resolve(true); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("quits application and installs the update", () => { - expect(quitAndInstallUpdateMock).toHaveBeenCalled(); - }); - }); - - describe("when user answers not to install the update", () => { - beforeEach(async () => { - await askBooleanMock.resolve(false); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("does not quit application and install the update", () => { - expect(quitAndInstallUpdateMock).not.toHaveBeenCalled(); - }); - }); }); }); }); diff --git a/src/behaviours/application-update/selection-of-update-stability.test.ts b/src/behaviours/application-update/selection-of-update-stability.test.ts index 1fd6e22dbd..c934e7fc43 100644 --- a/src/behaviours/application-update/selection-of-update-stability.test.ts +++ b/src/behaviours/application-update/selection-of-update-stability.test.ts @@ -19,8 +19,6 @@ import downloadPlatformUpdateInjectable from "../../main/application-update/down import selectedUpdateChannelInjectable from "../../common/application-update/selected-update-channel/selected-update-channel.injectable"; import type { IComputedValue } from "mobx"; import setUpdateOnQuitInjectable from "../../main/electron-app/features/set-update-on-quit.injectable"; -import type { AskBoolean } from "../../main/ask-boolean/ask-boolean.injectable"; -import askBooleanInjectable from "../../main/ask-boolean/ask-boolean.injectable"; import showInfoNotificationInjectable from "../../renderer/components/notifications/show-info-notification.injectable"; import processCheckingForUpdatesInjectable from "../../main/application-update/check-for-updates/process-checking-for-updates.injectable"; import appVersionInjectable from "../../common/get-configuration-file-model/app-version/app-version.injectable"; @@ -32,7 +30,6 @@ describe("selection of update stability", () => { let downloadPlatformUpdateMock: AsyncFnMock; let setUpdateOnQuitMock: jest.Mock; let showInfoNotificationMock: jest.Mock; - let askBooleanMock: AsyncFnMock; beforeEach(() => { applicationBuilder = getApplicationBuilder(); @@ -43,11 +40,9 @@ describe("selection of update stability", () => { downloadPlatformUpdateMock = asyncFn(); setUpdateOnQuitMock = jest.fn(); showInfoNotificationMock = jest.fn(() => () => {}); - askBooleanMock = asyncFn(); rendererDi.override(showInfoNotificationInjectable, () => showInfoNotificationMock); - mainDi.override(askBooleanInjectable, () => askBooleanMock); mainDi.override(setUpdateOnQuitInjectable, () => setUpdateOnQuitMock); mainDi.override( diff --git a/src/main/application-update/check-for-updates/process-checking-for-updates.injectable.ts b/src/main/application-update/check-for-updates/process-checking-for-updates.injectable.ts index a7066468da..bd3501b5d8 100644 --- a/src/main/application-update/check-for-updates/process-checking-for-updates.injectable.ts +++ b/src/main/application-update/check-for-updates/process-checking-for-updates.injectable.ts @@ -7,21 +7,17 @@ import selectedUpdateChannelInjectable from "../../../common/application-update/ import updatesAreBeingDiscoveredInjectable from "../../../common/application-update/updates-are-being-discovered/updates-are-being-discovered.injectable"; import discoveredUpdateVersionInjectable from "../../../common/application-update/discovered-update-version/discovered-update-version.injectable"; import { runInAction } from "mobx"; -import askBooleanInjectable from "../../ask-boolean/ask-boolean.injectable"; import downloadUpdateInjectable from "../download-update/download-update.injectable"; import broadcastChangeInUpdatingStatusInjectable from "./broadcast-change-in-updating-status.injectable"; import checkForUpdatesStartingFromChannelInjectable from "./check-for-updates-starting-from-channel.injectable"; import withOrphanPromiseInjectable from "../../../common/utils/with-orphan-promise/with-orphan-promise.injectable"; import emitEventInjectable from "../../../common/app-event-bus/emit-event.injectable"; import { getCurrentDateTime } from "../../../common/utils/date/get-current-date-time"; -import quitAndInstallUpdateInjectable from "../quit-and-install-update.injectable"; const processCheckingForUpdatesInjectable = getInjectable({ id: "process-checking-for-updates", instantiate: (di) => { - const askBoolean = di.inject(askBooleanInjectable); - const quitAndInstallUpdate = di.inject(quitAndInstallUpdateInjectable); const downloadUpdate = di.inject(downloadUpdateInjectable); const selectedUpdateChannel = di.inject(selectedUpdateChannelInjectable); const broadcastChangeInUpdatingStatus = di.inject(broadcastChangeInUpdatingStatusInjectable); @@ -86,19 +82,6 @@ const processCheckingForUpdatesInjectable = getInjectable({ broadcastChangeInUpdatingStatus({ eventId: "download-for-update-failed", }); - - return; - } - - const userWantsToInstallUpdate = await askBoolean({ - title: "Update Available", - - question: `Version ${version} of Lens IDE is available and ready to be installed. Would you like to update now?\n\n` + - `Lens should restart automatically, if it doesn't please restart manually. Installed extensions might require updating.`, - }); - - if (userWantsToInstallUpdate) { - quitAndInstallUpdate(); } })(); }; diff --git a/src/main/ask-boolean/__snapshots__/ask-boolean.test.ts.snap b/src/main/ask-boolean/__snapshots__/ask-boolean.test.ts.snap deleted file mode 100644 index 33b2ec4033..0000000000 --- a/src/main/ask-boolean/__snapshots__/ask-boolean.test.ts.snap +++ /dev/null @@ -1,666 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ask-boolean given started when asking multiple questions renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
-
- - - info_outline - - -
-
-
- - some-title - -

- Some question -

-
- - -
-
-
-
- - - close - - -
-
-
-
- - - info_outline - - -
-
-
- - some-other-title - -

- Some other question -

-
- - -
-
-
-
- - - close - - -
-
-
-
- -`; - -exports[`ask-boolean given started when asking multiple questions when answering to first question renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
-
- - - info_outline - - -
-
-
- - some-other-title - -

- Some other question -

-
- - -
-
-
-
- - - close - - -
-
-
-
- -`; - -exports[`ask-boolean given started when asking question renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
-
- - - info_outline - - -
-
-
- - some-title - -

- Some question -

-
- - -
-
-
-
- - - close - - -
-
-
-
- -`; - -exports[`ask-boolean given started when asking question when user answers "no" renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
- -`; - -exports[`ask-boolean given started when asking question when user answers "yes" renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
- -`; - -exports[`ask-boolean given started when asking question when user closes notification without answering the question renders 1`] = ` - -
-
-
- - - home - - - - - arrow_back - - - - - arrow_forward - - -
-
-
-
-
-
-
-
-
- -`; diff --git a/src/main/ask-boolean/ask-boolean-answer-channel-listener.injectable.ts b/src/main/ask-boolean/ask-boolean-answer-channel-listener.injectable.ts deleted file mode 100644 index 06bc3972eb..0000000000 --- a/src/main/ask-boolean/ask-boolean-answer-channel-listener.injectable.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable } from "@ogre-tools/injectable"; -import type { AskBooleanAnswerChannel } from "../../common/ask-boolean/ask-boolean-answer-channel.injectable"; -import askBooleanAnswerChannelInjectable from "../../common/ask-boolean/ask-boolean-answer-channel.injectable"; -import askBooleanPromiseInjectable from "./ask-boolean-promise.injectable"; -import type { MessageChannelListener } from "../../common/utils/channel/message-channel-listener-injection-token"; -import { messageChannelListenerInjectionToken } from "../../common/utils/channel/message-channel-listener-injection-token"; - - -const askBooleanAnswerChannelListenerInjectable = getInjectable({ - id: "ask-boolean-answer-channel-listener", - - instantiate: (di): MessageChannelListener => ({ - channel: di.inject(askBooleanAnswerChannelInjectable), - - handler: ({ id, value }) => { - const answerPromise = di.inject(askBooleanPromiseInjectable, id); - - answerPromise.resolve(value); - }, - }), - - injectionToken: messageChannelListenerInjectionToken, -}); - -export default askBooleanAnswerChannelListenerInjectable; diff --git a/src/main/ask-boolean/ask-boolean-promise.injectable.ts b/src/main/ask-boolean/ask-boolean-promise.injectable.ts deleted file mode 100644 index 827714084f..0000000000 --- a/src/main/ask-boolean/ask-boolean-promise.injectable.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; - -const askBooleanPromiseInjectable = getInjectable({ - id: "ask-boolean-promise", - - instantiate: (di, questionId: string) => { - void questionId; - - let resolve: (value: boolean) => void; - - const promise = new Promise(_resolve => { - resolve = _resolve; - }); - - return ({ - promise, - - resolve: (value: boolean) => { - resolve(value); - }, - }); - }, - - lifecycle: lifecycleEnum.keyedSingleton({ - getInstanceKey: (di, questionId: string) => questionId, - }), -}); - -export default askBooleanPromiseInjectable; diff --git a/src/main/ask-boolean/ask-boolean.injectable.ts b/src/main/ask-boolean/ask-boolean.injectable.ts deleted file mode 100644 index 1fa54629b2..0000000000 --- a/src/main/ask-boolean/ask-boolean.injectable.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable } from "@ogre-tools/injectable"; -import { messageToChannelInjectionToken } from "../../common/utils/channel/message-to-channel-injection-token"; -import askBooleanQuestionChannelInjectable from "../../common/ask-boolean/ask-boolean-question-channel.injectable"; -import askBooleanPromiseInjectable from "./ask-boolean-promise.injectable"; -import getRandomIdInjectable from "../../common/utils/get-random-id.injectable"; - -export type AskBoolean = ({ - title, - question, -}: { - title: string; - question: string; -}) => Promise; - -const askBooleanInjectable = getInjectable({ - id: "ask-boolean", - - instantiate: (di): AskBoolean => { - const messageToChannel = di.inject(messageToChannelInjectionToken); - const askBooleanChannel = di.inject(askBooleanQuestionChannelInjectable); - const getRandomId = di.inject(getRandomIdInjectable); - - return async ({ title, question }) => { - const id = getRandomId(); - - const returnValuePromise = di.inject(askBooleanPromiseInjectable, id); - - await messageToChannel(askBooleanChannel, { id, title, question }); - - return await returnValuePromise.promise; - }; - }, -}); - -export default askBooleanInjectable; diff --git a/src/main/ask-boolean/ask-boolean.test.ts b/src/main/ask-boolean/ask-boolean.test.ts deleted file mode 100644 index 79fecdceca..0000000000 --- a/src/main/ask-boolean/ask-boolean.test.ts +++ /dev/null @@ -1,206 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import type { ApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import { getApplicationBuilder } from "../../renderer/components/test-utils/get-application-builder"; -import type { AskBoolean } from "./ask-boolean.injectable"; -import askBooleanInjectable from "./ask-boolean.injectable"; -import { getPromiseStatus } from "../../common/test-utils/get-promise-status"; -import type { RenderResult } from "@testing-library/react"; -import { fireEvent } from "@testing-library/react"; -import getRandomIdInjectable from "../../common/utils/get-random-id.injectable"; - -describe("ask-boolean", () => { - let applicationBuilder: ApplicationBuilder; - let askBoolean: AskBoolean; - - beforeEach(() => { - applicationBuilder = getApplicationBuilder(); - - const getRandomIdFake = jest - .fn() - .mockReturnValueOnce("some-random-id-1") - .mockReturnValueOnce("some-random-id-2"); - - applicationBuilder.dis.mainDi.override(getRandomIdInjectable, () => getRandomIdFake); - - askBoolean = applicationBuilder.dis.mainDi.inject(askBooleanInjectable); - }); - - describe("given started", () => { - let rendered: RenderResult; - - beforeEach(async () => { - rendered = await applicationBuilder.render(); - }); - - describe("when asking question", () => { - let actualPromise: Promise; - - beforeEach(() => { - actualPromise = askBoolean({ - title: "some-title", - question: "Some question", - }); - }); - - it("does not resolve yet", async () => { - const promiseStatus = await getPromiseStatus(actualPromise); - - expect(promiseStatus.fulfilled).toBe(false); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("shows notification", () => { - const notification = rendered.getByTestId("ask-boolean-some-random-id-1"); - - expect(notification).not.toBeUndefined(); - }); - - describe('when user answers "yes"', () => { - beforeEach(() => { - const button = rendered.getByTestId("ask-boolean-some-random-id-1-button-yes"); - - fireEvent.click(button); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("does not show notification anymore", () => { - const notification = rendered.queryByTestId("ask-boolean-some-random-id-1"); - - expect(notification).toBeNull(); - }); - - it("resolves", async () => { - const actual = await actualPromise; - - expect(actual).toBe(true); - }); - }); - - describe('when user answers "no"', () => { - beforeEach(() => { - const button = rendered.getByTestId("ask-boolean-some-random-id-1-button-no"); - - fireEvent.click(button); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("does not show notification anymore", () => { - const notification = rendered.queryByTestId("ask-boolean-some-random-id-1"); - - expect(notification).toBeNull(); - }); - - it("resolves", async () => { - const actual = await actualPromise; - - expect(actual).toBe(false); - }); - }); - - describe("when user closes notification without answering the question", () => { - beforeEach(() => { - const button = rendered.getByTestId("close-notification-for-ask-boolean-for-some-random-id-1"); - - fireEvent.click(button); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("does not show notification anymore", () => { - const notification = rendered.queryByTestId("ask-boolean-some-random-id-1"); - - expect(notification).toBeNull(); - }); - - it("resolves", async () => { - const actual = await actualPromise; - - expect(actual).toBe(false); - }); - }); - }); - - describe("when asking multiple questions", () => { - let firstQuestionPromise: Promise; - let secondQuestionPromise: Promise; - - beforeEach(() => { - firstQuestionPromise = askBoolean({ - title: "some-title", - question: "Some question", - }); - - secondQuestionPromise = askBoolean({ - title: "some-other-title", - question: "Some other question", - }); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("shows notification for first question", () => { - const notification = rendered.getByTestId("ask-boolean-some-random-id-1"); - - expect(notification).not.toBeUndefined(); - }); - - it("shows notification for second question", () => { - const notification = rendered.getByTestId("ask-boolean-some-random-id-2"); - - expect(notification).not.toBeUndefined(); - }); - - describe("when answering to first question", () => { - beforeEach(() => { - const button = rendered.getByTestId("ask-boolean-some-random-id-1-button-no"); - - fireEvent.click(button); - }); - - it("renders", () => { - expect(rendered.baseElement).toMatchSnapshot(); - }); - - it("does not show notification for first question anymore", () => { - const notification = rendered.queryByTestId("ask-boolean-some-random-id-1"); - - expect(notification).toBeNull(); - }); - - it("still shows notification for second question", () => { - const notification = rendered.getByTestId("ask-boolean-some-random-id-2"); - - expect(notification).not.toBeUndefined(); - }); - - it("resolves first question", async () => { - const actual = await firstQuestionPromise; - - expect(actual).toBe(false); - }); - - it("does not resolve second question yet", async () => { - const promiseStatus = await getPromiseStatus(secondQuestionPromise); - - expect(promiseStatus.fulfilled).toBe(false); - }); - }); - }); - }); -});