Full dependency inversion of <Dock> and all current tab kinds (#4757)

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Co-authored-by: Sebastian Malton <sebastian@malton.name>
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
authored and GitHub committed 2022-01-31 09:49:36 -05:00
1 parent 65669f6a64
commit 0ce4e3d793
152 files changed
+3423 -2617

No files matched your search

@@ -17,8 +17,7 @@ import { getDiForUnitTesting } from "../../getDiForUnitTesting";
import clusterInjectable from "./dependencies/cluster.injectable";
import hideDetailsInjectable from "./dependencies/hide-details.injectable";
import editResourceTabInjectable from "../dock/edit-resource-tab/edit-resource-tab.injectable";
import { TabKind } from "../dock/dock-store/dock.store";
import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource-tab.injectable";
import kubeObjectMenuRegistryInjectable from "./dependencies/kube-object-menu-items/kube-object-menu-registry.injectable";
import { DiRender, renderFor } from "../test-utils/renderFor";
import type { Cluster } from "../../../common/cluster/cluster";
@@ -54,12 +53,7 @@ describe("kube-object-menu", () => {
di.override(hideDetailsInjectable, () => () => {});
di.override(editResourceTabInjectable, () => () => ({
id: "irrelevant",
kind: TabKind.TERMINAL,
pinned: false,
title: "irrelevant",
}));
di.override(createEditResourceTabInjectable, () => () => "irrelevant");
addDynamicMenuItem({
di,
@@ -11,7 +11,7 @@ import identity from "lodash/identity";
import type { ApiManager } from "../../../common/k8s-api/api-manager";
import { withInjectables } from "@ogre-tools/injectable-react";
import clusterNameInjectable from "./dependencies/cluster-name.injectable";
import editResourceTabInjectable from "../dock/edit-resource-tab/edit-resource-tab.injectable";
import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource-tab.injectable";
import hideDetailsInjectable from "./dependencies/hide-details.injectable";
import kubeObjectMenuItemsInjectable from "./dependencies/kube-object-menu-items/kube-object-menu-items.injectable";
import apiManagerInjectable from "./dependencies/api-manager.injectable";
@@ -27,7 +27,7 @@ interface Dependencies {
kubeObjectMenuItems: React.ElementType[];
clusterName: string;
hideDetails: () => void;
editResourceTab: (kubeObject: KubeObject) => void;
createEditResourceTab: (kubeObject: KubeObject) => void;
}
class NonInjectedKubeObjectMenu<TKubeObject extends KubeObject> extends React.Component<KubeObjectMenuProps<TKubeObject> & Dependencies> {
@@ -51,7 +51,7 @@ class NonInjectedKubeObjectMenu<TKubeObject extends KubeObject> extends React.Co
@boundMethod
async update() {
this.props.hideDetails();
this.props.editResourceTab(this.props.object);
this.props.createEditResourceTab(this.props.object);
}
@boundMethod
@@ -117,7 +117,7 @@ export function KubeObjectMenu<T extends KubeObject>(
getProps: (di, props) => ({
clusterName: di.inject(clusterNameInjectable),
apiManager: di.inject(apiManagerInjectable),
editResourceTab: di.inject(editResourceTabInjectable),
createEditResourceTab: di.inject(createEditResourceTabInjectable),
hideDetails: di.inject(hideDetailsInjectable),
kubeObjectMenuItems: di.inject(kubeObjectMenuItemsInjectable, {