1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/src/renderer/components/dock/__test__/dock-store.test.ts
Sebastian Malton 895d0192b6 Convert DirectoryForUserData to LazyInitializableState
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2022-10-31 14:42:03 -04:00

81 lines
2.7 KiB
TypeScript

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import directoryForUserDataInjectable from "../../../../common/app-paths/directory-for-user-data.injectable";
import hostedClusterIdInjectable from "../../../cluster-frame-context/hosted-cluster-id.injectable";
import { getDiForUnitTesting } from "../../../getDiForUnitTesting";
import type { DockStore, DockTab } from "../dock/store";
import { TabKind } from "../dock/store";
import dockStoreInjectable from "../dock/store.injectable";
const initialTabs: DockTab[] = [
{ id: "terminal", kind: TabKind.TERMINAL, title: "Terminal", pinned: false },
{ id: "create", kind: TabKind.CREATE_RESOURCE, title: "Create resource", pinned: false },
{ id: "edit", kind: TabKind.EDIT_RESOURCE, title: "Edit resource", pinned: false },
{ id: "install", kind: TabKind.INSTALL_CHART, title: "Install chart", pinned: false },
{ id: "logs", kind: TabKind.POD_LOGS, title: "Logs", pinned: false },
];
describe("DockStore", () => {
let dockStore: DockStore;
beforeEach(() => {
const di = getDiForUnitTesting({ doGeneralOverrides: true });
di.override(hostedClusterIdInjectable, () => "some-cluster-id");
di.override(directoryForUserDataInjectable, () => ({
get: () => "some-directory-for-user-data",
}));
dockStore = di.inject(dockStoreInjectable);
});
it("closes tab and selects one from right", () => {
dockStore.tabs = initialTabs;
dockStore.closeTab(dockStore.tabs[0].id);
expect(dockStore.selectedTabId).toBe("create");
dockStore.selectTab("edit");
dockStore.closeTab("edit");
expect(dockStore.selectedTabId).toBe("install");
});
it("closes last tab and selects one from right", () => {
dockStore.tabs = initialTabs;
dockStore.selectTab("logs");
dockStore.closeTab("logs");
expect(dockStore.selectedTabId).toBe("install");
});
it("closes tab and selects the last one", () => {
dockStore.tabs = [
{ id: "terminal", kind: TabKind.TERMINAL, title: "Terminal", pinned: false },
{ id: "create", kind: TabKind.CREATE_RESOURCE, title: "Create resource", pinned: false },
];
dockStore.closeTab("terminal");
expect(dockStore.selectedTabId).toBe("create");
});
it("closes last tab and selects none", () => {
dockStore.tabs = [
{ id: "create", kind: TabKind.CREATE_RESOURCE, title: "Create resource", pinned: false },
];
dockStore.closeTab("create");
expect(dockStore.selectedTabId).toBeUndefined();
});
it("doesn't change selected tab if other tab closed", () => {
dockStore.tabs = initialTabs;
dockStore.closeTab("install");
expect(dockStore.selectedTabId).toBe("terminal");
});
});