1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/packages/core/src/features/quitting-and-restarting-the-app/quitting-the-app-using-application-menu.test.ts
Sebastian Malton 52d75b16e0 chore: Rename exitApp to forceAppExit
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-04-05 14:44:47 -04:00

77 lines
2.6 KiB
TypeScript

/**
* 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 { ClusterManager } from "../../main/cluster/manager";
import forceAppExitInjectable from "../../main/electron-app/features/force-app-exit.injectable";
import clusterManagerInjectable from "../../main/cluster/manager.injectable";
import stopServicesAndExitAppInjectable from "../../main/stop-services-and-exit-app.injectable";
import { testUsingFakeTime, advanceFakeTime } from "../../test-utils/use-fake-time";
describe("quitting the app using application menu", () => {
describe("given application has started", () => {
let builder: ApplicationBuilder;
let clusterManagerStub: ClusterManager;
let forceAppExitMock: jest.Mock;
beforeEach(async () => {
testUsingFakeTime("2015-10-21T07:28:00Z");
builder = getApplicationBuilder();
builder.beforeApplicationStart(({ mainDi }) => {
mainDi.unoverride(stopServicesAndExitAppInjectable);
clusterManagerStub = { stop: jest.fn() } as unknown as ClusterManager;
mainDi.override(clusterManagerInjectable, () => clusterManagerStub);
forceAppExitMock = jest.fn();
mainDi.override(forceAppExitInjectable, () => forceAppExitMock);
});
await builder.render();
});
it("first application window is open", () => {
const windows = builder.applicationWindow.getAll();
expect(windows.map((window) => window.id)).toEqual(["first-application-window"]);
});
describe("when application is quit", () => {
beforeEach(() => {
builder.applicationMenu.click("root", "mac", "quit");
});
it("closes all windows", () => {
const windows = builder.applicationWindow.getAll();
expect(windows).toEqual([]);
});
it("disconnects all clusters", () => {
expect(clusterManagerStub.stop).toHaveBeenCalled();
});
it("after insufficient time passes, does not terminate application yet", () => {
advanceFakeTime(999);
expect(forceAppExitMock).not.toHaveBeenCalled();
});
describe("after sufficient time passes", () => {
beforeEach(() => {
advanceFakeTime(1000);
});
it("terminates application", () => {
expect(forceAppExitMock).toHaveBeenCalled();
});
});
});
});
});