mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Bundle dependencies of a component to a composing object
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi> Signed-off-by: Mikko Aspiala <mikko.aspiala@houston-inc.com>
This commit is contained in:
parent
9eda5e9d26
commit
cfaf5f9402
@ -36,12 +36,18 @@ export const InjectNaive = ({ Component, ...props }: Props) => {
|
|||||||
const kubeObjectMenuRegistry = KubeObjectMenuRegistry.getInstance();
|
const kubeObjectMenuRegistry = KubeObjectMenuRegistry.getInstance();
|
||||||
const cluster = getActiveClusterEntity();
|
const cluster = getActiveClusterEntity();
|
||||||
|
|
||||||
|
const dependencies = {
|
||||||
|
editResourceTab,
|
||||||
|
hideDetails,
|
||||||
|
apiManager,
|
||||||
|
kubeObjectMenuRegistry,
|
||||||
|
cluster,
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Component
|
<Component
|
||||||
editResourceTab={editResourceTab}
|
dependencies={dependencies}
|
||||||
hideDetails={hideDetails}
|
{...props}
|
||||||
apiManager={apiManager}
|
/>
|
||||||
kubeObjectMenuRegistry={kubeObjectMenuRegistry}
|
);
|
||||||
cluster={cluster}
|
|
||||||
{...props} />);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { render } from "@testing-library/react";
|
import { render } from "@testing-library/react";
|
||||||
import "@testing-library/jest-dom/extend-expect";
|
import "@testing-library/jest-dom/extend-expect";
|
||||||
import { KubeObjectMenu } from "./kube-object-menu";
|
import { KubeObjectMenu, KubeObjectMenuDependencies } from "./kube-object-menu";
|
||||||
import { KubeObject } from "../../../common/k8s-api/kube-object";
|
import { KubeObject } from "../../../common/k8s-api/kube-object";
|
||||||
import userEvent from "@testing-library/user-event";
|
import userEvent from "@testing-library/user-event";
|
||||||
import type { KubeApi } from "../../../common/k8s-api/kube-api";
|
import type { KubeApi } from "../../../common/k8s-api/kube-api";
|
||||||
@ -43,6 +43,7 @@ describe("kube-object-menu", () => {
|
|||||||
let clusterStub: IHasName;
|
let clusterStub: IHasName;
|
||||||
let kubeObjectMenuRegistryStub: IHasGettableItemsForKind;
|
let kubeObjectMenuRegistryStub: IHasGettableItemsForKind;
|
||||||
let objectStub: KubeObject | null;
|
let objectStub: KubeObject | null;
|
||||||
|
let dependencies: KubeObjectMenuDependencies<KubeObject>;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
// TODO: Remove illegal global overwrites for what should be a dependency somewhere.
|
// TODO: Remove illegal global overwrites for what should be a dependency somewhere.
|
||||||
@ -56,9 +57,8 @@ describe("kube-object-menu", () => {
|
|||||||
window.cancelIdleCallback = () => {};
|
window.cancelIdleCallback = () => {};
|
||||||
|
|
||||||
apiManagerStub = {
|
apiManagerStub = {
|
||||||
// eslint-disable-next-line unused-imports/no-unused-vars-ts
|
|
||||||
|
|
||||||
getStore: <TKubeObjectStore extends KubeObjectStore<KubeObject>>(
|
getStore: <TKubeObjectStore extends KubeObjectStore<KubeObject>>(
|
||||||
|
// eslint-disable-next-line unused-imports/no-unused-vars-ts
|
||||||
api: string | KubeApi<KubeObject>,
|
api: string | KubeApi<KubeObject>,
|
||||||
): TKubeObjectStore | undefined => undefined,
|
): TKubeObjectStore | undefined => undefined,
|
||||||
};
|
};
|
||||||
@ -83,6 +83,14 @@ describe("kube-object-menu", () => {
|
|||||||
hideDetailsStub = () => {};
|
hideDetailsStub = () => {};
|
||||||
|
|
||||||
editResourceTabStub = () => {};
|
editResourceTabStub = () => {};
|
||||||
|
|
||||||
|
dependencies = {
|
||||||
|
apiManager: apiManagerStub,
|
||||||
|
cluster: clusterStub,
|
||||||
|
kubeObjectMenuRegistry: kubeObjectMenuRegistryStub,
|
||||||
|
hideDetails: hideDetailsStub,
|
||||||
|
editResourceTab: editResourceTabStub,
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
it("given no kube object, renders", () => {
|
it("given no kube object, renders", () => {
|
||||||
@ -91,12 +99,8 @@ describe("kube-object-menu", () => {
|
|||||||
const { baseElement } = render(
|
const { baseElement } = render(
|
||||||
<KubeObjectMenu
|
<KubeObjectMenu
|
||||||
object={objectStub}
|
object={objectStub}
|
||||||
apiManager={apiManagerStub}
|
|
||||||
cluster={clusterStub}
|
|
||||||
kubeObjectMenuRegistry={kubeObjectMenuRegistryStub}
|
|
||||||
hideDetails={hideDetailsStub}
|
|
||||||
editResourceTab={editResourceTabStub}
|
|
||||||
toolbar={true}
|
toolbar={true}
|
||||||
|
dependencies={ dependencies }
|
||||||
/>,
|
/>,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -128,11 +132,7 @@ describe("kube-object-menu", () => {
|
|||||||
|
|
||||||
<KubeObjectMenu
|
<KubeObjectMenu
|
||||||
object={objectStub}
|
object={objectStub}
|
||||||
apiManager={apiManagerStub}
|
dependencies={dependencies}
|
||||||
cluster={clusterStub}
|
|
||||||
kubeObjectMenuRegistry={kubeObjectMenuRegistryStub}
|
|
||||||
hideDetails={hideDetailsStub}
|
|
||||||
editResourceTab={editResourceTabStub}
|
|
||||||
toolbar={true}
|
toolbar={true}
|
||||||
removeAction={removeActionMock}
|
removeAction={removeActionMock}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -29,15 +29,7 @@ import type { IHasGettableItemsForKind } from "../../../extensions/registries";
|
|||||||
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
import type { IGettableStore } from "../../../common/k8s-api/api-manager";
|
||||||
import type { IHasName } from "../../../main/cluster";
|
import type { IHasName } from "../../../main/cluster";
|
||||||
|
|
||||||
export interface KubeObjectMenuProps<TKubeObject> extends MenuActionsProps {
|
export interface KubeObjectMenuDependencies<TKubeObject>{
|
||||||
object: TKubeObject | null | undefined;
|
|
||||||
editable?: boolean;
|
|
||||||
removable?: boolean;
|
|
||||||
toolbar?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface KubeObjectMenuDependencies<TKubeObject>
|
|
||||||
extends KubeObjectMenuProps<TKubeObject> {
|
|
||||||
apiManager: IGettableStore;
|
apiManager: IGettableStore;
|
||||||
kubeObjectMenuRegistry: IHasGettableItemsForKind;
|
kubeObjectMenuRegistry: IHasGettableItemsForKind;
|
||||||
cluster: IHasName;
|
cluster: IHasName;
|
||||||
@ -45,25 +37,19 @@ interface KubeObjectMenuDependencies<TKubeObject>
|
|||||||
editResourceTab: (kubeObject: TKubeObject) => void;
|
editResourceTab: (kubeObject: TKubeObject) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface KubeObjectMenuProps<TKubeObject> extends MenuActionsProps {
|
||||||
|
object: TKubeObject | null | undefined;
|
||||||
|
editable?: boolean;
|
||||||
|
removable?: boolean;
|
||||||
|
toolbar?: boolean;
|
||||||
|
dependencies?: KubeObjectMenuDependencies<TKubeObject>
|
||||||
|
}
|
||||||
|
|
||||||
export class KubeObjectMenu<
|
export class KubeObjectMenu<
|
||||||
TKubeObject extends KubeObject,
|
TKubeObject extends KubeObject,
|
||||||
> extends React.Component<KubeObjectMenuDependencies<TKubeObject>> {
|
> extends React.Component<KubeObjectMenuProps<TKubeObject>> {
|
||||||
get dependencies() {
|
get dependencies() {
|
||||||
const {
|
return this.props.dependencies;
|
||||||
apiManager,
|
|
||||||
hideDetails,
|
|
||||||
editResourceTab,
|
|
||||||
cluster,
|
|
||||||
kubeObjectMenuRegistry,
|
|
||||||
} = this.props;
|
|
||||||
|
|
||||||
return {
|
|
||||||
apiManager,
|
|
||||||
editResourceTab,
|
|
||||||
hideDetails,
|
|
||||||
kubeObjectMenuRegistry,
|
|
||||||
cluster,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get store() {
|
get store() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user